Added basic bot functionality
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -8,4 +8,6 @@ gradle-app.setting
|
||||
!gradle-wrapper.jar
|
||||
|
||||
# Cache of project
|
||||
.gradletasknamecache
|
||||
.gradletasknamecache
|
||||
|
||||
start.sh
|
||||
124
.idea/uiDesigner.xml
generated
Normal file
124
.idea/uiDesigner.xml
generated
Normal file
@@ -0,0 +1,124 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Palette2">
|
||||
<group name="Swing">
|
||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
||||
</item>
|
||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
|
||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
||||
<initial-values>
|
||||
<property name="text" value="Button" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="RadioButton" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="CheckBox" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="Label" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
||||
<preferred-size width="-1" height="20" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
||||
</item>
|
||||
</group>
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
351
.idea/workspace.xml
generated
351
.idea/workspace.xml
generated
@@ -1,7 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="a0677039-1784-42cf-9be3-936ffafcdb69" name="Default Changelist" comment="" />
|
||||
<list default="true" id="a0677039-1784-42cf-9be3-936ffafcdb69" name="Default Changelist" comment="">
|
||||
<change afterPath="$PROJECT_DIR$/.idea/uiDesigner.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/Env.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/Manager.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/commands/Command.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/commands/InfoCommand.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/commands/StopCommand.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/listeners/MessageReceived.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/managers/CommandManager.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/managers/DataManager.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/managers/DiscordManager.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/build.gradle" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/Main.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/Main.java" afterDir="false" />
|
||||
</list>
|
||||
<ignored path="$PROJECT_DIR$/out/" />
|
||||
<ignored path="$PROJECT_DIR$/.gradle/" />
|
||||
<ignored path="$PROJECT_DIR$/build/" />
|
||||
@@ -22,25 +38,85 @@
|
||||
</projectState>
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/build.gradle">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/Main.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="345">
|
||||
<caret line="23" column="65" selection-start-line="23" selection-start-column="65" selection-end-line="23" selection-end-column="65" />
|
||||
<state relative-caret-position="76">
|
||||
<caret line="16" column="24" selection-start-line="16" selection-start-column="24" selection-end-line="16" selection-end-column="24" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/managers/CommandManager.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="346">
|
||||
<caret line="37" column="44" selection-start-line="37" selection-start-column="44" selection-end-line="37" selection-end-column="44" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/commands/InfoCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="285">
|
||||
<caret line="19" column="8" selection-start-line="19" selection-start-column="8" selection-end-line="19" selection-end-column="93" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/commands/StopCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="330">
|
||||
<caret line="22" column="20" lean-forward="true" selection-start-line="22" selection-start-column="20" selection-end-line="22" selection-end-column="20" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/commands/Command.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="75">
|
||||
<caret line="5" column="128" selection-start-line="5" selection-start-column="128" selection-end-line="5" selection-end-column="128" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/listeners/MessageReceived.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="135">
|
||||
<caret line="19" column="39" selection-start-line="19" selection-start-column="39" selection-end-line="19" selection-end-column="39" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/Main.java">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/managers/DiscordManager.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="135">
|
||||
<caret line="9" column="48" selection-start-line="9" selection-start-column="48" selection-end-line="9" selection-end-column="48" />
|
||||
<state relative-caret-position="525">
|
||||
<caret line="53" column="20" selection-start-line="53" selection-start-column="20" selection-end-line="53" selection-end-column="20" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#237#238#0" expanded="true" />
|
||||
<element signature="e#283#284#0" expanded="true" />
|
||||
<element signature="e#1948#1949#0" expanded="true" />
|
||||
<element signature="e#2038#2039#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
@@ -51,16 +127,34 @@
|
||||
<component name="FileTemplateManagerImpl">
|
||||
<option name="RECENT_TEMPLATES">
|
||||
<list>
|
||||
<option value="Interface" />
|
||||
<option value="Class" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/.gitignore" />
|
||||
<option value="$PROJECT_DIR$/build.gradle" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/Env.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/DataManager.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/managers/Manager.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/Manager.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/command/Executor.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/commands/Executor.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/commands/InfoCommandExecutor.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/commands/Command.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/listeners/MessageReceived.java" />
|
||||
<option value="$PROJECT_DIR$/.gitignore" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/managers/CommandManager.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/commands/InfoCommand.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/commands/StopCommand.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/managers/DataManager.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/Main.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/managers/DiscordManager.java" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
@@ -69,13 +163,14 @@
|
||||
<option name="width" value="1260" />
|
||||
<option name="height" value="787" />
|
||||
</component>
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true">
|
||||
<ConfirmationsSetting value="1" id="Add" />
|
||||
</component>
|
||||
<component name="ProjectView">
|
||||
<navigator proportions="" version="1">
|
||||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="PackagesPane" />
|
||||
<pane id="Scope" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<expand>
|
||||
@@ -109,13 +204,43 @@
|
||||
<item name="java" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="redstonerBot" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="redstonerBot" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="redstonerBot" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="java" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="redstonerBot" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="commands" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="redstonerBot" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="redstonerBot" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="java" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="redstonerBot" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="listeners" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="redstonerBot" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="redstonerBot" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
|
||||
<item name="java" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="redstonerBot" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="managers" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
</expand>
|
||||
<select />
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="PackagesPane" />
|
||||
<pane id="Scope" />
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
|
||||
<property name="last_opened_file_path" value="$USER_HOME$/spam" />
|
||||
<property name="settings.editor.selected.configurable" value="copyright.profiles" />
|
||||
</component>
|
||||
@@ -148,17 +273,13 @@
|
||||
<frame x="1280" y="27" width="1920" height="1053" extended-state="6" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Image Layers" />
|
||||
<window_info id="Designer" />
|
||||
<window_info id="UI Designer" />
|
||||
<window_info id="Capture Tool" />
|
||||
<window_info id="Favorites" side_tool="true" />
|
||||
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.24973261" />
|
||||
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.2529412" />
|
||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Version Control" />
|
||||
<window_info active="true" anchor="bottom" id="Terminal" visible="true" weight="0.19146608" />
|
||||
<window_info anchor="bottom" id="Event Log" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Build" weight="0.32932165" />
|
||||
<window_info id="Image Layers" order="2" />
|
||||
<window_info id="Designer" order="3" />
|
||||
<window_info id="Capture Tool" order="4" />
|
||||
<window_info id="UI Designer" order="5" />
|
||||
<window_info id="Favorites" order="6" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
<window_info anchor="bottom" id="Find" order="1" />
|
||||
<window_info anchor="bottom" id="Run" order="2" />
|
||||
@@ -166,43 +287,197 @@
|
||||
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||
<window_info anchor="bottom" id="TODO" order="6" />
|
||||
<window_info anchor="right" id="Palette" />
|
||||
<window_info anchor="right" id="Gradle" />
|
||||
<window_info anchor="right" id="Theme Preview" />
|
||||
<window_info anchor="right" id="Maven" />
|
||||
<window_info anchor="right" id="Capture Analysis" />
|
||||
<window_info anchor="right" id="Palette	" />
|
||||
<window_info active="true" anchor="bottom" id="Terminal" order="7" visible="true" weight="0.19251925" />
|
||||
<window_info anchor="bottom" id="Event Log" order="8" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Version Control" order="9" />
|
||||
<window_info anchor="bottom" id="Build" order="10" weight="0.32893288" />
|
||||
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
|
||||
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
|
||||
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
|
||||
<window_info anchor="right" id="Palette" order="3" />
|
||||
<window_info anchor="right" id="Maven" order="4" />
|
||||
<window_info anchor="right" id="Gradle" order="5" />
|
||||
<window_info anchor="right" id="Theme Preview" order="6" />
|
||||
<window_info anchor="right" id="Capture Analysis" order="7" />
|
||||
<window_info anchor="right" id="Palette	" order="8" />
|
||||
</layout>
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/settings.gradle">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/.gitignore">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/Manager.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="150">
|
||||
<caret line="10" column="20" lean-forward="true" selection-start-line="10" selection-start-column="20" selection-end-line="10" selection-end-column="20" />
|
||||
<state relative-caret-position="60">
|
||||
<caret line="4" column="11" selection-start-line="4" selection-start-column="11" selection-end-line="4" selection-end-column="11" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.dv8tion/JDA/3.8.3_464/176505182d1f7f57084a44e75c12caa08a19eaec/JDA-3.8.3_464-sources.jar!/net/dv8tion/jda/core/JDA.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="234">
|
||||
<caret line="1100" column="9" selection-start-line="1100" selection-start-column="9" selection-end-line="1100" selection-end-column="9" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.dv8tion/JDA/3.8.3_464/176505182d1f7f57084a44e75c12caa08a19eaec/JDA-3.8.3_464-sources.jar!/net/dv8tion/jda/core/entities/Message.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="324">
|
||||
<caret line="345" column="11" selection-start-line="345" selection-start-column="11" selection-end-line="345" selection-end-column="11" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/managers/ConfigManager.java" />
|
||||
<entry file="jar:///usr/lib/jvm/java-8-openjdk/src.zip!/java/sql/Connection.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="504">
|
||||
<caret line="137" column="22" selection-start-line="137" selection-start-column="22" selection-end-line="137" selection-end-column="22" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar:///usr/lib/jvm/java-8-openjdk/src.zip!/java/sql/PreparedStatement.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="234">
|
||||
<caret line="235" column="9" selection-start-line="235" selection-start-column="9" selection-end-line="235" selection-end-column="9" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar:///usr/lib/jvm/java-8-openjdk/src.zip!/java/util/Map.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="279">
|
||||
<caret line="211" column="6" selection-start-line="211" selection-start-column="6" selection-end-line="211" selection-end-column="6" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar:///usr/lib/jvm/java-8-openjdk/src.zip!/java/lang/String.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="324">
|
||||
<caret line="1924" column="18" selection-start-line="1924" selection-start-column="18" selection-end-line="1924" selection-end-column="18" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/.gitignore">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="180">
|
||||
<caret line="12" column="8" selection-start-line="12" selection-start-column="8" selection-end-line="12" selection-end-column="8" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.dv8tion/JDA/3.8.3_464/176505182d1f7f57084a44e75c12caa08a19eaec/JDA-3.8.3_464-sources.jar!/net/dv8tion/jda/core/EmbedBuilder.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="234">
|
||||
<caret line="239" column="35" lean-forward="true" selection-start-line="239" selection-start-column="35" selection-end-line="239" selection-end-column="35" />
|
||||
<folding>
|
||||
<element signature="e#8331#8332#0" expanded="true" />
|
||||
<element signature="e#8375#8376#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/start.sh">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/build.gradle">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="345">
|
||||
<caret line="23" column="65" selection-start-line="23" selection-start-column="65" selection-end-line="23" selection-end-column="65" />
|
||||
<state relative-caret-position="315">
|
||||
<caret line="21" column="74" selection-start-line="21" selection-start-column="74" selection-end-line="21" selection-end-column="74" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/commands/Command.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="75">
|
||||
<caret line="5" column="128" selection-start-line="5" selection-start-column="128" selection-end-line="5" selection-end-column="128" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/listeners/MessageReceived.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="135">
|
||||
<caret line="19" column="39" selection-start-line="19" selection-start-column="39" selection-end-line="19" selection-end-column="39" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/Env.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="75">
|
||||
<caret line="5" column="69" selection-start-line="5" selection-start-column="59" selection-end-line="5" selection-end-column="69" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.dv8tion/JDA/3.8.3_464/176505182d1f7f57084a44e75c12caa08a19eaec/JDA-3.8.3_464-sources.jar!/net/dv8tion/jda/core/requests/RestAction.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="144">
|
||||
<caret line="299" column="16" selection-start-line="299" selection-start-column="16" selection-end-line="299" selection-end-column="16" />
|
||||
<folding>
|
||||
<element signature="e#13310#13311#0" expanded="true" />
|
||||
<element signature="e#13343#13344#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/managers/CommandManager.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="346">
|
||||
<caret line="37" column="44" selection-start-line="37" selection-start-column="44" selection-end-line="37" selection-end-column="44" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/commands/InfoCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="285">
|
||||
<caret line="19" column="8" selection-start-line="19" selection-start-column="8" selection-end-line="19" selection-end-column="93" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/commands/StopCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="330">
|
||||
<caret line="22" column="20" lean-forward="true" selection-start-line="22" selection-start-column="20" selection-end-line="22" selection-end-column="20" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/managers/DataManager.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="315">
|
||||
<caret line="21" column="64" selection-start-line="21" selection-start-column="64" selection-end-line="21" selection-end-column="64" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#2361#2362#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/Main.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="135">
|
||||
<caret line="9" column="48" selection-start-line="9" selection-start-column="48" selection-end-line="9" selection-end-column="48" />
|
||||
<state relative-caret-position="76">
|
||||
<caret line="16" column="24" selection-start-line="16" selection-start-column="24" selection-end-line="16" selection-end-column="24" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#237#238#0" expanded="true" />
|
||||
<element signature="e#283#284#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/redstoner/redstonerBot/managers/DiscordManager.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="525">
|
||||
<caret line="53" column="20" selection-start-line="53" selection-start-column="20" selection-end-line="53" selection-end-column="20" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#1948#1949#0" expanded="true" />
|
||||
<element signature="e#2038#2039#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
|
||||
@@ -16,7 +16,10 @@ repositories {
|
||||
dependencies {
|
||||
compile 'net.dv8tion:JDA:3.8.3_464'
|
||||
compile 'com.sedmelluq:lavaplayer:1.3.17'
|
||||
|
||||
compile group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.26'
|
||||
|
||||
compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.16'
|
||||
}
|
||||
|
||||
jar {
|
||||
|
||||
13
src/main/java/com/redstoner/redstonerBot/Env.java
Normal file
13
src/main/java/com/redstoner/redstonerBot/Env.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package com.redstoner.redstonerBot;
|
||||
|
||||
public class Env {
|
||||
public static final String TOKEN = System.getenv("TOKEN");
|
||||
|
||||
public static final String MYSQL_HOST = System.getenv("MYSQL_HOST");
|
||||
public static final String MYSQL_PORT = System.getenv("MYSQL_PORT");
|
||||
|
||||
public static final String MYSQL_USER = System.getenv("MYSQL_USER");
|
||||
public static final String MYSQL_PASS = System.getenv("MYSQL_PASS");
|
||||
|
||||
public static final String MYSQL_DB = System.getenv("MYSQL_DB");
|
||||
}
|
||||
@@ -1,12 +1,62 @@
|
||||
package com.redstoner.redstonerBot;
|
||||
|
||||
import com.redstoner.redstonerBot.managers.CommandManager;
|
||||
import com.redstoner.redstonerBot.managers.DataManager;
|
||||
import com.redstoner.redstonerBot.managers.DiscordManager;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class Main {
|
||||
public static final Logger logger = LoggerFactory.getLogger(Main.class);
|
||||
private static final Logger logger = LoggerFactory.getLogger(Main.class);
|
||||
|
||||
private static final List<Manager> managers = new ArrayList<>();
|
||||
private static final List<Manager> loadedManagers = new ArrayList<>();
|
||||
|
||||
static {
|
||||
managers.add(new DataManager());
|
||||
managers.add(new DiscordManager());
|
||||
managers.add(new CommandManager());
|
||||
}
|
||||
|
||||
public static void main(final String... args) {
|
||||
logger.info("Starting RedstonerBot...");
|
||||
|
||||
if (!start()) {
|
||||
stop();
|
||||
System.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean start() {
|
||||
loadedManagers.clear();
|
||||
|
||||
for (Manager m : managers) {
|
||||
if (m.start()) {
|
||||
loadedManagers.add(m);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean stop() {
|
||||
for (Manager m : getReversedManagers()) {
|
||||
if (!m.stop()) return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private static List<Manager> getReversedManagers() {
|
||||
List<Manager> reversedManagers = new ArrayList<>(loadedManagers);
|
||||
Collections.reverse(reversedManagers);
|
||||
|
||||
return reversedManagers;
|
||||
}
|
||||
}
|
||||
|
||||
6
src/main/java/com/redstoner/redstonerBot/Manager.java
Normal file
6
src/main/java/com/redstoner/redstonerBot/Manager.java
Normal file
@@ -0,0 +1,6 @@
|
||||
package com.redstoner.redstonerBot;
|
||||
|
||||
public interface Manager {
|
||||
boolean start();
|
||||
boolean stop();
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.redstoner.redstonerBot.commands;
|
||||
|
||||
import net.dv8tion.jda.core.entities.*;
|
||||
|
||||
public interface Command {
|
||||
boolean execute(Guild guild, TextChannel channel, Message message, User author, Member self, String command, String[] params);
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.redstoner.redstonerBot.commands;
|
||||
|
||||
import com.redstoner.redstonerBot.managers.DiscordManager;
|
||||
import net.dv8tion.jda.core.EmbedBuilder;
|
||||
import net.dv8tion.jda.core.entities.*;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public class InfoCommand implements Command {
|
||||
@Override
|
||||
public boolean execute(Guild guild, TextChannel channel, Message message, User author, Member self, String command, String[] params) {
|
||||
EmbedBuilder embed = new EmbedBuilder();
|
||||
|
||||
embed.setTitle("Information");
|
||||
embed.setDescription("This is a Discord bot built by psrcek for the Redstoner Guild.");
|
||||
|
||||
embed.setColor(Color.ORANGE);
|
||||
embed.setFooter("Redstoner bot", "https://cdn.discordapp.com/avatars/576432236702859284/b08d4dc368b2e041ebb3fc208a2e8230.png");
|
||||
|
||||
message.getChannel().sendMessage(embed.build()).queue(DiscordManager::expireMessage);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.redstoner.redstonerBot.commands;
|
||||
|
||||
import com.redstoner.redstonerBot.Main;
|
||||
import com.redstoner.redstonerBot.managers.DiscordManager;
|
||||
import net.dv8tion.jda.core.entities.*;
|
||||
|
||||
public class StopCommand implements Command {
|
||||
@Override
|
||||
public boolean execute(Guild guild, TextChannel channel, Message message, User author, Member self, String command, String[] params) {
|
||||
if (!guild.getOwnerId().equals(author.getId())) return false;
|
||||
|
||||
message.getChannel().sendMessage("This bot will stop in 5 seconds, as requested by " + author.getAsTag()).queue(DiscordManager::expireMessage);
|
||||
|
||||
new Thread(() -> {
|
||||
try {
|
||||
Thread.sleep(6000);
|
||||
} catch (InterruptedException ignored) {
|
||||
}
|
||||
|
||||
Main.stop();
|
||||
}).start();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.redstoner.redstonerBot.listeners;
|
||||
|
||||
import com.redstoner.redstonerBot.managers.CommandManager;
|
||||
import com.redstoner.redstonerBot.managers.DataManager;
|
||||
import net.dv8tion.jda.core.Permission;
|
||||
import net.dv8tion.jda.core.entities.*;
|
||||
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
|
||||
import net.dv8tion.jda.core.hooks.ListenerAdapter;
|
||||
import net.dv8tion.jda.core.utils.Checks;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class MessageReceived extends ListenerAdapter {
|
||||
private static final Logger logger = LoggerFactory.getLogger(MessageReceived.class);
|
||||
|
||||
@Override
|
||||
public final void onGuildMessageReceived(GuildMessageReceivedEvent event) {
|
||||
Checks.notNull(event, "Event");
|
||||
|
||||
final Guild guild = event.getGuild();
|
||||
final TextChannel channel = event.getChannel();
|
||||
final Message message = event.getMessage();
|
||||
final User author = event.getAuthor();
|
||||
|
||||
final Member self = guild.getSelfMember();
|
||||
|
||||
if (!Objects.equals(guild.getId(), DataManager.getConfigValue("guild_id"))) return;
|
||||
if (author.isBot()) return;
|
||||
if (message.isTTS()) return;
|
||||
if (!self.hasPermission(channel, Permission.MESSAGE_WRITE)) return;
|
||||
if (!self.hasPermission(channel, Permission.MESSAGE_EMBED_LINKS)) return;
|
||||
|
||||
String rawMessage = message.getContentRaw();
|
||||
|
||||
logger.info(author.getAsTag() + " -> " + rawMessage);
|
||||
|
||||
if (rawMessage.startsWith(DataManager.getConfigValue("prefix_char"))) {
|
||||
CommandManager.execute(guild, channel, message, author, self);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.redstoner.redstonerBot.managers;
|
||||
|
||||
import com.redstoner.redstonerBot.Manager;
|
||||
import com.redstoner.redstonerBot.commands.Command;
|
||||
import com.redstoner.redstonerBot.commands.InfoCommand;
|
||||
import com.redstoner.redstonerBot.commands.StopCommand;
|
||||
import net.dv8tion.jda.core.entities.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class CommandManager implements Manager {
|
||||
private static final Logger logger = LoggerFactory.getLogger(CommandManager.class);
|
||||
|
||||
private static Map<String, Command> commands = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public boolean start() {
|
||||
logger.info("Command Manager starting...");
|
||||
|
||||
commands.put("info", new InfoCommand());
|
||||
commands.put("stop", new StopCommand());
|
||||
|
||||
|
||||
logger.info("Command Manager started!");
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean stop() {
|
||||
logger.info("Command Manager stopping...");
|
||||
|
||||
commands.clear();
|
||||
|
||||
logger.info("Command Manager stopped!");
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void execute(Guild guild, TextChannel channel, Message message, User author, Member self) {
|
||||
String rawMsg = message.getContentRaw();
|
||||
String[] rawCmd = rawMsg.split(" ");
|
||||
String cmd = rawCmd[0].substring(1);
|
||||
String[] params = Arrays.copyOfRange(rawCmd, 1, rawCmd.length);
|
||||
|
||||
Command command = commands.get(cmd);
|
||||
|
||||
if (command == null) return;
|
||||
logger.info("[" + message.getId() + "] User '" + author.getAsTag() + "' executed command " + cmd + " with parameters " + Arrays.toString(params));
|
||||
|
||||
if (command.execute(guild, channel, message, author, self, cmd, params)) {
|
||||
logger.info("[" + message.getId() + "] Command executed successfully!");
|
||||
} else {
|
||||
logger.error("[" + message.getId() + "] Error while executing command!");
|
||||
}
|
||||
|
||||
message.delete().reason("Redstoner Bot command execution").queue();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
package com.redstoner.redstonerBot.managers;
|
||||
|
||||
import com.redstoner.redstonerBot.Env;
|
||||
import com.redstoner.redstonerBot.Manager;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class DataManager implements Manager {
|
||||
private static final Logger logger = LoggerFactory.getLogger(DataManager.class);
|
||||
|
||||
private static final String[] requiredTables = { "config", "opt_in", "rules", "rule_agree_reactions" };
|
||||
|
||||
private static Map<String, String> config = new HashMap<>();
|
||||
|
||||
public boolean start() {
|
||||
logger.info("Data Manager starting...");
|
||||
|
||||
if (checkConnection()) {
|
||||
logger.info("Loading config...");
|
||||
|
||||
if (!loadConfig()) {
|
||||
logger.error("Data Manager failed to load config!");
|
||||
return false;
|
||||
}
|
||||
|
||||
logger.info("Data Manager started!");
|
||||
return true;
|
||||
} else {
|
||||
logger.error("Data Manager failed to start!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean stop() {
|
||||
logger.info("Data Manager stopping...");
|
||||
|
||||
config.clear();
|
||||
|
||||
logger.info("Data Manager stopped!");
|
||||
return true;
|
||||
}
|
||||
|
||||
private static String getConnectionString() {
|
||||
return "jdbc:mysql://"
|
||||
+ Env.MYSQL_HOST + ":" + Env.MYSQL_PORT
|
||||
+ "/" + Env.MYSQL_DB
|
||||
+ "?useUnicode=true&characterEncoding=UTF-8"
|
||||
+ "&user=" + Env.MYSQL_USER
|
||||
+ "&password=" + Env.MYSQL_PASS;
|
||||
}
|
||||
|
||||
private static Connection getConnection() throws SQLException {
|
||||
return DriverManager.getConnection(getConnectionString());
|
||||
}
|
||||
|
||||
private boolean checkConnection() {
|
||||
try {
|
||||
Class.forName("com.mysql.cj.jdbc.Driver");
|
||||
|
||||
Connection conn = getConnection();
|
||||
ResultSet rs = conn.prepareStatement("show tables").executeQuery();
|
||||
|
||||
List<String> tables = new ArrayList<>();
|
||||
|
||||
while (rs.next()) {
|
||||
tables.add(rs.getString(1));
|
||||
}
|
||||
|
||||
conn.close();
|
||||
|
||||
for (String rt : requiredTables) {
|
||||
if (!tables.contains(rt)) {
|
||||
logger.error("The " + rt + " table is missing from the database!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
} catch (ClassNotFoundException | SQLException e) {
|
||||
logger.error("SQL error:", e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static String getConfigValue(String name) {
|
||||
return config.get(name);
|
||||
}
|
||||
|
||||
public boolean loadConfig() {
|
||||
config.clear();
|
||||
|
||||
try {
|
||||
Connection conn = getConnection();
|
||||
ResultSet rs = conn.prepareStatement("SELECT * FROM config").executeQuery();
|
||||
|
||||
while (rs.next()) {
|
||||
String name = rs.getString(2);
|
||||
String value = rs.getString(3);
|
||||
|
||||
config.put(name, value);
|
||||
}
|
||||
|
||||
return true;
|
||||
} catch (SQLException e) {
|
||||
logger.error("SQL error:", e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package com.redstoner.redstonerBot.managers;
|
||||
|
||||
import com.redstoner.redstonerBot.Env;
|
||||
import com.redstoner.redstonerBot.Manager;
|
||||
import com.redstoner.redstonerBot.listeners.MessageReceived;
|
||||
import net.dv8tion.jda.core.AccountType;
|
||||
import net.dv8tion.jda.core.JDA;
|
||||
import net.dv8tion.jda.core.JDABuilder;
|
||||
import net.dv8tion.jda.core.entities.Guild;
|
||||
import net.dv8tion.jda.core.entities.Message;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.security.auth.login.LoginException;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class DiscordManager implements Manager {
|
||||
private static final Logger logger = LoggerFactory.getLogger(DiscordManager.class);
|
||||
|
||||
private JDA jda;
|
||||
|
||||
public boolean start() {
|
||||
logger.info("Discord Manager starting...");
|
||||
|
||||
try {
|
||||
final JDABuilder builder = new JDABuilder(AccountType.BOT);
|
||||
|
||||
builder.setAutoReconnect(true);
|
||||
builder.setAudioEnabled(true);
|
||||
|
||||
builder.setToken(Env.TOKEN);
|
||||
|
||||
builder.addEventListener(new MessageReceived());
|
||||
|
||||
jda = builder.build().awaitReady();
|
||||
} catch (LoginException e) {
|
||||
logger.error("The discord token is invalid!");
|
||||
return false;
|
||||
} catch (Throwable t) {
|
||||
logger.error("JDA setup error:", t);
|
||||
return false;
|
||||
}
|
||||
|
||||
Guild guild = jda.getGuildById(DataManager.getConfigValue("guild_id"));
|
||||
|
||||
String guildName = guild.getName();
|
||||
String infoChannelName = guild.getTextChannelById(DataManager.getConfigValue("info_channel_id")).getName();
|
||||
|
||||
logger.info("Discord Manager started and logged in as '" + jda.getSelfUser().getName() + "'");
|
||||
logger.info("Listening to guild '" + guildName + "'");
|
||||
logger.info("Using channel '" + infoChannelName + "' as the info channel");
|
||||
|
||||
logger.info("Discord Manager started!");
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean stop() {
|
||||
logger.info("Discord Manager stopping...");
|
||||
|
||||
jda.shutdown();
|
||||
|
||||
logger.info("Discord Manager stopped!");
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void expireMessage(Message message) {
|
||||
message.delete().reason("Redstoner Bot message expiry").queueAfter(5, TimeUnit.SECONDS);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user