Added new commands, event listeners.

This commit is contained in:
Malcom Green 2017-05-24 09:16:39 -04:00
parent 59057e16ef
commit 3e41476f37
20 changed files with 1046 additions and 93 deletions

View File

@ -3,13 +3,6 @@
<component name="EntryPointsManager">
<entry_points version="2.0" />
</component>
<component name="MavenImportPreferences">
<option name="generalSettings">
<MavenGeneralSettings>
<option name="mavenHome" value="Bundled (Maven 3)" />
</MavenGeneralSettings>
</option>
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
<OptionsSetting value="true" id="Add" />
<OptionsSetting value="true" id="Remove" />

6
.idea/vcs.xml Normal file
View 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>

View File

@ -1,7 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="d884bc5a-63a1-4e03-b68b-617ebe9b8e2a" name="Default" comment="" />
<list default="true" id="d884bc5a-63a1-4e03-b68b-617ebe9b8e2a" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/misc.xml" afterPath="$PROJECT_DIR$/.idea/misc.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/build/resources/main/plugin.yml" afterPath="$PROJECT_DIR$/build/resources/main/plugin.yml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/java/me/savvy/rixa/Rixa.java" afterPath="$PROJECT_DIR$/src/main/java/me/savvy/rixa/Rixa.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/HelpCommand.java" afterPath="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/HelpCommand.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/InfoCommand.java" afterPath="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/InfoCommand.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/java/me/savvy/rixa/events/MessageEvent.java" afterPath="$PROJECT_DIR$/src/main/java/me/savvy/rixa/events/MessageEvent.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/reactions/react/HelpReaction.java" afterPath="$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/reactions/react/HelpReaction.java" />
</list>
<ignored path="Rixa.iws" />
<ignored path=".idea/workspace.xml" />
<ignored path="$PROJECT_DIR$/out/" />
@ -28,7 +37,42 @@
<favorites_list name="Rixa" />
</component>
<component name="FileEditorManager">
<leaf />
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="Rixa.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/Rixa.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="412">
<caret line="60" column="20" selection-start-line="60" selection-start-column="20" selection-end-line="60" selection-end-column="20" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="MessageEvent.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/events/MessageEvent.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="326">
<caret line="35" column="25" selection-start-line="35" selection-start-column="25" selection-end-line="35" selection-end-column="25" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="BatchMoveCommand.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/BatchMoveCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="224">
<caret line="35" column="9" selection-start-line="35" selection-start-column="9" selection-end-line="35" selection-end-column="9" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
@ -38,6 +82,9 @@
</list>
</option>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="GradleLocalSettings">
<option name="myGradleHomes">
<map>
@ -458,9 +505,30 @@
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/handlers/CommandType.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/handlers/Command.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/RixaModule.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/Rixa.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/music/MusicModule.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/levels/LevelsModule.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/InfoCommand.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/guild/management/GuildSettings.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/guild/RixaManager.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/reactions/react/HelpReaction.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/extras/polls/polls.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/extras/polls/Polls.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/extras/polls/Poll.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/events/BotEvent.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/utils/MessageBuilder.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/PingCommand.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/HelpCommand.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/handlers/CommandExec.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/handlers/RixaPermission.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/guild/RixaGuild.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/DeleteMessagesCommand.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/utils/Utils.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/mod/DeleteMessagesCommand.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/mod/PurgeCommand.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/BatchMove.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/Rixa.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/BatchMoveCommand.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/events/MessageEvent.java" />
</list>
</option>
</component>
@ -470,9 +538,20 @@
<detection-done>true</detection-done>
<sorting>DEFINITION_ORDER</sorting>
</component>
<component name="MavenImportPreferences">
<option name="generalSettings">
<MavenGeneralSettings>
<option name="mavenHome" value="Bundled (Maven 3)" />
</MavenGeneralSettings>
</option>
</component>
<component name="MavenProjectNavigator">
<treeState />
</component>
<component name="ProjectFrameBounds">
<option name="x" value="-8" />
<option name="width" value="1932" />
<option name="y" value="-8" />
<option name="width" value="1936" />
<option name="height" value="1056" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
@ -482,7 +561,7 @@
<OptionsSetting value="true" id="Update" />
<OptionsSetting value="true" id="Status" />
<OptionsSetting value="true" id="Edit" />
<ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="1" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
<component name="ProjectView">
@ -500,10 +579,10 @@
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scope" />
<pane id="PackagesPane">
<subPane />
</pane>
<pane id="Scope" />
<pane id="Scratches" />
<pane id="ProjectPane">
<subPane>
@ -540,6 +619,10 @@
<option name="myItemId" value="main" />
<option name="myItemType" value="org.jetbrains.plugins.gradle.projectView.GradleTreeStructureProvider$GradleSourceSetDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="resources" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@ -567,6 +650,100 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Rixa" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Rixa" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="main" />
<option name="myItemType" value="org.jetbrains.plugins.gradle.projectView.GradleTreeStructureProvider$GradleSourceSetDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="rixa" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="guild" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Rixa" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Rixa" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="main" />
<option name="myItemType" value="org.jetbrains.plugins.gradle.projectView.GradleTreeStructureProvider$GradleSourceSetDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="rixa" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="events" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Rixa" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Rixa" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="main" />
<option name="myItemType" value="org.jetbrains.plugins.gradle.projectView.GradleTreeStructureProvider$GradleSourceSetDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="rixa" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="commands" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="mod" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Rixa" />
@ -627,7 +804,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="general" />
<option name="myItemId" value="admin" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
@ -648,11 +825,35 @@
<property name="ChangesBrowser.SHOW_FLATTEN" value="false" />
</component>
<component name="RecentsManager">
<key name="CreateClassDialog.RecentsKey">
<recent name="me.savvy.rixa.utils" />
<recent name="me.savvy.rixa.commands.handlers" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="C:\Users\Timber\Documents\intellij-workspace\Rixa" />
</key>
</component>
<component name="RunManager">
<component name="RunManager" selected="Application.Rixa">
<configuration default="false" name="Rixa" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="me.savvy.rixa.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="MAIN_CLASS_NAME" value="me.savvy.rixa.Rixa" />
<option name="VM_PARAMETERS" />
<option name="PROGRAM_PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="Rixa_main" />
<envs />
<method />
</configuration>
<configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
<module name="" />
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
@ -1067,6 +1268,14 @@
<configuration default="true" type="osgi.bnd.run" factoryName="Test Launcher (JUnit)">
<method />
</configuration>
<list size="1">
<item index="0" class="java.lang.String" itemvalue="Application.Rixa" />
</list>
<recent_temporary>
<list size="1">
<item index="0" class="java.lang.String" itemvalue="Application.Rixa" />
</list>
</recent_temporary>
</component>
<component name="ShelveChangesManager" show_recycled="false">
<option name="remove_strategy" value="false" />
@ -1079,42 +1288,53 @@
<option name="presentableId" value="Default" />
<updated>1495479808992</updated>
<workItem from="1495479813130" duration="2555000" />
<workItem from="1495558670998" duration="1216000" />
<workItem from="1495558670998" duration="3125000" />
<workItem from="1495575943185" duration="10843000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="3771000" />
<option name="totallyTimeSpent" value="16523000" />
</component>
<component name="TodoView">
<todo-panel id="selected-file">
<is-autoscroll-to-source value="true" />
</todo-panel>
<todo-panel id="all">
<are-packages-shown value="true" />
<is-autoscroll-to-source value="true" />
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="-8" y="0" width="1932" height="1056" extended-state="0" />
<editor active="false" />
<frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
<editor active="true" />
<layout>
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32932165" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32932165" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32941177" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32719395" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32932165" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.20469083" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Gradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
</layout>
</component>
<component name="Vcs.Log.UiProperties">
@ -1132,7 +1352,19 @@
<breakpoint-manager />
<watches-manager />
</component>
<component name="antWorkspaceConfiguration">
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/Rixa.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/build.gradle">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="168">
@ -1142,18 +1374,11 @@
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/RixaMC.java" />
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/handlers/CommandHandler.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="421">
<caret line="18" column="56" selection-start-line="18" selection-start-column="56" selection-end-line="18" selection-end-column="56" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/handlers/CommandRegistrar.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="196">
<caret line="7" column="13" selection-start-line="7" selection-start-column="13" selection-end-line="7" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
@ -1162,18 +1387,11 @@
<state relative-caret-position="28">
<caret line="1" column="0" selection-start-line="1" selection-start-column="0" selection-end-line="1" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/handlers/CommandExec.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="196">
<caret line="7" column="17" selection-start-line="7" selection-start-column="17" selection-end-line="7" selection-end-column="17" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/handlers/CommandType.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="168">
@ -1181,27 +1399,10 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/HelpCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="197">
<caret line="19" column="14" selection-start-line="19" selection-start-column="14" selection-end-line="19" selection-end-column="14" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/RixaModule.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="9" column="28" selection-start-line="9" selection-start-column="28" selection-end-line="9" selection-end-column="28" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/Rixa.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="868">
<caret line="49" column="44" selection-start-line="49" selection-start-column="44" selection-end-line="49" selection-end-column="44" />
<folding />
</state>
</provider>
</entry>
@ -1217,12 +1418,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="504">
<caret line="18" column="0" selection-start-line="7" selection-start-column="24" selection-end-line="18" selection-end-column="0" />
<folding>
<element signature="e#214#215#0" expanded="true" />
<element signature="e#244#245#0" expanded="true" />
<element signature="e#296#297#0" expanded="true" />
<element signature="e#321#322#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -1230,15 +1425,211 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="280">
<caret line="10" column="22" selection-start-line="10" selection-start-column="22" selection-end-line="10" selection-end-column="22" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/handlers/CommandHandler.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-176">
<caret line="18" column="56" selection-start-line="18" selection-start-column="56" selection-end-line="18" selection-end-column="56" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/guild/management/GuildSettings.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-141">
<caret line="8" column="13" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
<folding>
<element signature="e#216#217#0" expanded="true" />
<element signature="e#247#248#0" expanded="true" />
<element signature="e#299#300#0" expanded="true" />
<element signature="e#324#325#0" expanded="true" />
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.neovisionaries/nv-websocket-client/2.0/9d84093a02dc8e782417935dc12bb3bd85fa2fb3/nv-websocket-client-2.0-sources.jar!/com/neovisionaries/ws/client/ReadingThread.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="195">
<caret line="107" column="0" selection-start-line="107" selection-start-column="0" selection-end-line="107" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.neovisionaries/nv-websocket-client/2.0/9d84093a02dc8e782417935dc12bb3bd85fa2fb3/nv-websocket-client-2.0-sources.jar!/com/neovisionaries/ws/client/WebSocketThread.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="195">
<caret line="44" column="0" selection-start-line="44" selection-start-column="0" selection-end-line="44" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/guild/RixaManager.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="102">
<caret line="24" column="0" selection-start-line="24" selection-start-column="0" selection-end-line="24" selection-end-column="0" />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#888#889#0" expanded="false" />
<element signature="e#944#945#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/reactions/react/HelpReaction.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="326">
<caret line="28" column="27" selection-start-line="28" selection-start-column="27" selection-end-line="28" selection-end-column="27" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/extras/polls/Poll.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="140">
<caret line="5" column="8" selection-start-line="5" selection-start-column="8" selection-end-line="5" selection-end-column="8" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/events/BotEvent.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="335">
<caret line="26" column="19" selection-start-line="26" selection-start-column="19" selection-end-line="26" selection-end-column="19" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#800#801#0" expanded="true" />
<element signature="e#879#880#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/utils/MessageBuilder.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="503">
<caret line="42" column="55" selection-start-line="42" selection-start-column="55" selection-end-line="42" selection-end-column="55" />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#348#349#0" expanded="false" />
<element signature="e#425#426#0" expanded="false" />
<element signature="e#828#829#0" expanded="false" />
<element signature="e#858#859#0" expanded="false" />
<element signature="e#904#905#0" expanded="false" />
<element signature="e#964#965#0" expanded="false" />
<element signature="e#1013#1014#0" expanded="false" />
<element signature="e#1076#1077#0" expanded="false" />
<element signature="e#1111#1112#0" expanded="false" />
<element signature="e#1149#1150#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/handlers/CommandExec.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="224">
<caret line="8" column="4" selection-start-line="8" selection-start-column="4" selection-end-line="8" selection-end-column="4" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/HelpCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="221">
<caret line="17" column="13" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="29" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/handlers/RixaPermission.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="224">
<caret line="8" column="4" selection-start-line="8" selection-start-column="4" selection-end-line="8" selection-end-column="4" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/utils/Utils.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="196">
<caret line="7" column="26" selection-start-line="7" selection-start-column="26" selection-end-line="7" selection-end-column="26" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/mod/DeleteMessagesCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="279">
<caret line="33" column="12" selection-start-line="33" selection-start-column="12" selection-end-line="33" selection-end-column="181" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/guild/RixaGuild.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="419">
<caret line="46" column="79" selection-start-line="46" selection-start-column="79" selection-end-line="46" selection-end-column="79" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/PingCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="111">
<caret line="11" column="24" selection-start-line="11" selection-start-column="24" selection-end-line="20" selection-end-column="1" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/InfoCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="364">
<caret line="26" column="55" selection-start-line="26" selection-start-column="55" selection-end-line="26" selection-end-column="55" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/mod/PurgeCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="222">
<caret line="34" column="7" selection-start-line="34" selection-start-column="7" selection-end-line="38" selection-end-column="9" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/BatchMoveCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="224">
<caret line="35" column="9" selection-start-line="35" selection-start-column="9" selection-end-line="35" selection-end-column="9" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/Rixa.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="412">
<caret line="60" column="20" selection-start-line="60" selection-start-column="20" selection-end-line="60" selection-end-column="20" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/events/MessageEvent.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="326">
<caret line="35" column="25" selection-start-line="35" selection-start-column="25" selection-end-line="35" selection-end-column="25" />
<folding />
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>

View File

@ -1,9 +1,15 @@
package me.savvy.rixa;
import me.savvy.rixa.commands.admin.BatchMoveCommand;
import me.savvy.rixa.commands.general.HelpCommand;
import me.savvy.rixa.commands.general.InfoCommand;
import me.savvy.rixa.commands.general.PingCommand;
import me.savvy.rixa.commands.general.ServerInfoCommand;
import me.savvy.rixa.commands.handlers.CommandExec;
import me.savvy.rixa.commands.handlers.CommandHandler;
import me.savvy.rixa.commands.mod.DeleteMessagesCommand;
import me.savvy.rixa.commands.mod.PurgeCommand;
import me.savvy.rixa.events.BotEvent;
import me.savvy.rixa.events.MessageEvent;
import me.savvy.rixa.modules.reactions.handlers.ReactionManager;
import me.savvy.rixa.modules.reactions.react.HelpReaction;
@ -32,28 +38,36 @@ public class Rixa {
public static void main(String[] args) throws LoginException, InterruptedException, RateLimitedException {
instance = new Rixa();
shardsList = new LinkedList<>();
int shards = 4;
for(int i = 1; i < shards; i++){
int shards = 3;
for(int i = 0; i < shards; i++) {
Logger.getLogger("Rixa").info("Loading shard #" + i);
JDABuilder jda = new JDABuilder(AccountType.BOT)
.setToken("MjkxNTM5Njg2NTEyNTI1MzMy.C6r1OA.-hRemXk-b3nP5GvT9kjh2V7RXDo")
.setToken("MjkxNTM5Njg2NTEyNTI1MzMy.DAZKfQ.kIHSmuCJHhklyC3gBAi0c_VKp-w")
.setEventManager(new AnnotatedEventManager())
.addEventListener(new MessageEvent())
.addEventListener(new BotEvent())
.setGame(Game.of("Rixa 1.0 | In Dev", "http://rixa.io"))
.setAutoReconnect(true)
.setStatus(OnlineStatus.ONLINE)
.setAudioEnabled(true)
.useSharding(i, shards);
shardsList.add(jda.buildBlocking());
Logger.getLogger("Rixa").info("Shard #" + i + " has been loaded");
getInstance().getLogger().info("Shard #" + i + " has been loaded");
}
timeUp = System.currentTimeMillis();
CommandHandler.registerCommand(new InfoCommand());
CommandHandler.registerCommand(new ServerInfoCommand());
CommandHandler.registerCommand(new HelpCommand());
register(new CommandExec[] {
new InfoCommand(), new ServerInfoCommand(), new HelpCommand(),
new DeleteMessagesCommand(), new PingCommand(), new PurgeCommand(),
new BatchMoveCommand() });
ReactionManager.registerReaction(new HelpReaction());
}
private static void register(CommandExec commandExecs[]) {
for (CommandExec command: commandExecs) {
CommandHandler.registerCommand(command);
}
}
public static Rixa getInstance() {
return instance;
}
@ -61,4 +75,8 @@ public class Rixa {
public long getTimeUp() {
return timeUp;
}
public Logger getLogger() {
return Logger.getLogger("Rixa");
}
}

View File

@ -0,0 +1,57 @@
package me.savvy.rixa.commands.admin;
import me.savvy.rixa.commands.handlers.Command;
import me.savvy.rixa.commands.handlers.CommandExec;
import me.savvy.rixa.commands.handlers.RixaPermission;
import me.savvy.rixa.guild.RixaGuild;
import me.savvy.rixa.guild.RixaManager;
import me.savvy.rixa.utils.MessageBuilder;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.entities.Member;
import net.dv8tion.jda.core.entities.Role;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.core.exceptions.PermissionException;
import java.awt.*;
import java.util.List;
/**
* Created by Timber on 5/23/2017.
*/
public class BatchMoveCommand implements CommandExec {
@Override
@Command(mainCommand = "batchmove",
aliases = "bmove",
description = "Move users within one role to another!",
channelType = ChannelType.TEXT)
public void execute(GuildMessageReceivedEvent event) {
RixaGuild rixaGuild = RixaManager.getGuild(event.getGuild());
if(!rixaGuild.hasPermission(event.getMember(), RixaPermission.CLEAR_CHAT)) {
new MessageBuilder(event.getMember().getAsMention() + ", you do not have permission for this command.").setColor(event.getMember().getColor()).queue(event.getChannel());
return;
}
if(event.getMessage().getMentionedRoles().size() < 2) {
new MessageBuilder("You need to include two roles!").setColor(event.getMember().getColor()).queue(event.getChannel());
return;
}
Role old_role = event.getMessage().getMentionedRoles().get(0);
Role new_role = event.getMessage().getMentionedRoles().get(1);
List<Member> userWithRole = event.getGuild().getMembersWithRoles(old_role);
new MessageBuilder("Moving **" + userWithRole.size() + "** users with role: " + old_role.getAsMention()
+ " to " + new_role.getAsMention()).setColor(old_role.getColor()).queue(event.getChannel());
int success = 0;
for(Member member: userWithRole) {
try {
event.getGuild().getController().removeRolesFromMember(member, old_role).queue();
event.getGuild().getController().addRolesToMember(member, new_role).queue();
success++;
} catch(PermissionException ex) {
new MessageBuilder("I do not have permission to modify " + member.getAsMention() + "'s role").setColor(Color.RED).queue(event.getChannel());
}
}
if(success > 0) {
new MessageBuilder("Successfully moved **" + success + "** users to role " +
new_role.getAsMention()).setColor(new_role.getColor()).queue(event.getChannel());
}
}
}

View File

@ -2,6 +2,7 @@ package me.savvy.rixa.commands.general;
import me.savvy.rixa.commands.handlers.Command;
import me.savvy.rixa.commands.handlers.CommandExec;
import me.savvy.rixa.utils.MessageBuilder;
import net.dv8tion.jda.core.EmbedBuilder;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.entities.Message;
@ -34,8 +35,8 @@ public class HelpCommand implements CommandExec {
.addField("3 - Music Commands", "Reveals usable commands to configure Rixa for your discord!", false)
.setColor(event.getMember().getColor());
Message message = event.getAuthor().openPrivateChannel().complete().sendMessage(embedBuilder.build()).complete();
event.getChannel().sendMessage(event.getMember().getAsMention()
+ ", the help menu has been private messaged to you!").queue();
new MessageBuilder(event.getMember().getAsMention()
+ ", the help menu has been private messaged to you!").setColor(event.getMember().getColor()).queue(event.getChannel());
try {
message.addReaction("\u0031\u20E3").queue();
message.addReaction("\u0032\u20E3").queue();

View File

@ -1,9 +1,9 @@
package me.savvy.rixa.commands.general;
import me.savvy.rixa.Rixa;
import com.lunaticdev.rixa.commands.handler.CommandType;
import me.savvy.rixa.commands.handlers.Command;
import me.savvy.rixa.commands.handlers.CommandExec;
import me.savvy.rixa.commands.handlers.CommandType;
import net.dv8tion.jda.core.EmbedBuilder;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.entities.User;

View File

@ -0,0 +1,21 @@
package me.savvy.rixa.commands.general;
import me.savvy.rixa.commands.handlers.Command;
import me.savvy.rixa.commands.handlers.CommandExec;
import me.savvy.rixa.utils.MessageBuilder;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
/**
* Created by Timber on 5/23/2017.
*/
public class PingCommand implements CommandExec {
@Override
@Command(mainCommand = "ping",
aliases = "",
description = "Check your ping!",
channelType = ChannelType.TEXT)
public void execute(GuildMessageReceivedEvent event) {
new MessageBuilder("Pong!").setColor(event.getMember().getColor()).queue(event.getChannel());
}
}

View File

@ -0,0 +1,10 @@
package me.savvy.rixa.commands.handlers;
/**
* Created by Timber on 5/23/2017.
*/
public enum RixaPermission {
MUTE, ADD_ROLE, REMOVE_ROLE, CLEAR_CHAT, ACCESS_CONFIG, PM_MESSAGE, KICK_MEMBER, BAN_MEMBER
}

View File

@ -0,0 +1,76 @@
package me.savvy.rixa.commands.mod;
import me.savvy.rixa.commands.handlers.Command;
import me.savvy.rixa.commands.handlers.CommandExec;
import me.savvy.rixa.commands.handlers.CommandType;
import me.savvy.rixa.commands.handlers.RixaPermission;
import me.savvy.rixa.guild.RixaGuild;
import me.savvy.rixa.guild.RixaManager;
import me.savvy.rixa.utils.MessageBuilder;
import me.savvy.rixa.utils.Utils;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.entities.Message;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.core.exceptions.PermissionException;
import net.dv8tion.jda.core.requests.RestAction;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Timber on 5/23/2017.
*/
public class DeleteMessagesCommand implements CommandExec {
@Override
@Command(mainCommand = "clear",
aliases = { "delmessages", "dmessages", "delmsg", "deletemessages" },
description = "Clear messages from chat!",
channelType = ChannelType.TEXT,
type = CommandType.MOD,
usage = "%pclear")
public void execute(GuildMessageReceivedEvent event) {
RixaGuild rixaGuild = RixaManager.getGuild(event.getGuild());
if(!rixaGuild.hasPermission(event.getMember(), RixaPermission.CLEAR_CHAT)) {
new MessageBuilder(event.getMember().getAsMention() + ", you do not have permission for this command.").setColor(event.getMember().getColor()).queue(event.getChannel());
return;
}
String[] messages = event.getMessage().getContent().split(" ");
if(messages.length < 2) {
new MessageBuilder(event.getMember().getAsMention() + ", please enter an amount. Example /delmessages 5").setColor(event.getMember().getColor()).queue(event.getChannel());
messages = null;
return;
}
if(!Utils.isInt(messages[1])) {
new MessageBuilder(event.getMember().getAsMention() + ", Amount must be a number. Example /delmessages 3").setColor(event.getMember().getColor()).queue(event.getChannel());
messages = null;
return;
}
int amount = Integer.parseInt(messages[1]);
if (amount < 2 || amount > 100) {
new MessageBuilder(event.getMember().getAsMention() + ", please provide at least 2 or at most 100 messages to be deleted").setColor(event.getMember().getColor()).queue(event.getChannel());
messages = null;
return;
}
try {
RestAction<List<Message>> messageList = event.getChannel().getHistory().retrievePast(amount);
List<Message> messages1 = new ArrayList<Message>();
messageList.complete().forEach(message -> {
if(!event.getChannel().getPinnedMessages().complete().contains(message)) {
messages1.add(message);
}
});
event.getChannel().deleteMessages(messages1).complete();
new MessageBuilder(event.getMember().getAsMention() + " has cleared **" + amount + "** messages from the chat history.").setColor(event.getMember().getColor()).queue(event.getChannel());
} catch (PermissionException ex) {
try {
new MessageBuilder(event.getMember().getAsMention() + ", sorry I do not have permission for this!").setColor(event.getMember().getColor()).queue(event.getChannel());
} catch (PermissionException e) {
event.getAuthor()
.openPrivateChannel().complete()
.sendMessage(event.getMember().getAsMention() + ", sorry I do not have permission for this!").queue();
}
} catch(IllegalArgumentException ex) {
new MessageBuilder(event.getMember().getAsMention() + ", sorry I do not have permission for this!").setColor(event.getMember().getColor()).queue(event.getChannel());
}
}
}

View File

@ -0,0 +1,90 @@
package me.savvy.rixa.commands.mod;
import me.savvy.rixa.commands.handlers.Command;
import me.savvy.rixa.commands.handlers.CommandExec;
import me.savvy.rixa.commands.handlers.CommandType;
import me.savvy.rixa.commands.handlers.RixaPermission;
import me.savvy.rixa.guild.RixaGuild;
import me.savvy.rixa.guild.RixaManager;
import me.savvy.rixa.utils.MessageBuilder;
import me.savvy.rixa.utils.Utils;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.entities.Member;
import net.dv8tion.jda.core.entities.Message;
import net.dv8tion.jda.core.entities.TextChannel;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.core.exceptions.PermissionException;
import net.dv8tion.jda.core.requests.RestAction;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Timber on 5/23/2017.
*/
public class PurgeCommand implements CommandExec {
@Override
@Command(mainCommand = "purge",
aliases = { "pmessages", "purgemessages", "purgeuser" },
description = "Remove a users messages!",
channelType = ChannelType.TEXT,
type = CommandType.MOD,
usage = "%ppurge")
public void execute(GuildMessageReceivedEvent event) {
RixaGuild rixaGuild = RixaManager.getGuild(event.getGuild());
if(!rixaGuild.hasPermission(event.getMember(), RixaPermission.CLEAR_CHAT)) {
new MessageBuilder(event.getMember().getAsMention() + ", you do not have permission for this command.").setColor(event.getMember().getColor()).queue(event.getChannel());
return;
}
if(event.getMessage().getMentionedUsers().size() < 1) {
new MessageBuilder(event.getMember().getAsMention() + ", could not find user. Try /purge <user>").setColor(event.getMember().getColor()).queue(event.getChannel());
return;
}
String[] message = event.getMessage().getContent().split(" ");
if(message.length < 2) {
new MessageBuilder(event.getMember().getAsMention() + ", incorrect usage. Example /purge <user> [amount]").setColor(event.getMember().getColor()).queue(event.getChannel());
return;
}
int amount = 100;
for(String s: message) {
if(Utils.isInt(s)) {
amount = Integer.parseInt(s);
break;
}
}
Member memberToDel = event.getGuild().getMember(event.getMessage().getMentionedUsers().get(0));
deleteMessage(event.getChannel(), event.getMember(), memberToDel, amount);
}
private void deleteMessage(TextChannel channel, Member user, Member userToDel, int amount) {
try {
RestAction<List<Message>> messageList = channel.getHistory().retrievePast(amount);
List<Message> messages = messageList.complete();
int newAmount = messages.size();
if(userToDel != null) {
List<Message> newMsgs = new ArrayList<>();
for(Message message: messages) {
if(message.getAuthor().getId().equals(userToDel.getUser().getId())) {
newMsgs.add(message);
}
}
newAmount = newMsgs.size();
channel.deleteMessages(newMsgs).complete();
} else {
channel.deleteMessages(messages).complete();
}
new MessageBuilder(user.getAsMention() + " has cleared **" + newAmount + "** messages from the chat history.").setColor(user.getColor()).queue(channel);
} catch (PermissionException ex) {
try {
new MessageBuilder(user.getAsMention() + ", sorry I do not have permission for this!").setColor(user.getColor()).queue(channel);
} catch (PermissionException e) {
user.getUser()
.openPrivateChannel().complete()
.sendMessage(user.getAsMention() + ", sorry I do not have permission for this!").queue();
}
} catch (IllegalArgumentException ex) {
new MessageBuilder(user.getAsMention() + ", sorry I cannot delete messages older than 2 weeks!").setColor(user.getColor()).queue(channel);
}
}
}

View File

@ -0,0 +1,31 @@
package me.savvy.rixa.events;
import me.savvy.rixa.Rixa;
import me.savvy.rixa.guild.RixaGuild;
import me.savvy.rixa.guild.RixaManager;
import net.dv8tion.jda.core.events.ReadyEvent;
import net.dv8tion.jda.core.events.guild.GuildJoinEvent;
import net.dv8tion.jda.core.events.guild.GuildLeaveEvent;
import net.dv8tion.jda.core.hooks.SubscribeEvent;
/**
* Created by Timber on 5/23/2017.
*/
public class BotEvent {
@SubscribeEvent
public void onJoin(GuildJoinEvent event) {
new RixaGuild(event.getGuild());
}
@SubscribeEvent
public void onReady(ReadyEvent event) {
Rixa.getInstance().getLogger().info("Successfully loaded...");
event.getJDA().getGuilds().forEach(RixaGuild::new);
}
@SubscribeEvent
public void onQuit(GuildLeaveEvent event) {
RixaManager.removeGuild(RixaManager.getGuild(event.getGuild()));
}
}

View File

@ -3,6 +3,8 @@ package me.savvy.rixa.events;
import com.mysql.jdbc.StringUtils;
import me.savvy.rixa.commands.handlers.CommandHandler;
import me.savvy.rixa.commands.handlers.CommandRegistrar;
import me.savvy.rixa.guild.RixaGuild;
import me.savvy.rixa.guild.RixaManager;
import me.savvy.rixa.modules.reactions.handlers.ReactRegistrar;
import me.savvy.rixa.modules.reactions.handlers.ReactionManager;
import net.dv8tion.jda.core.entities.Message;
@ -21,14 +23,16 @@ public class MessageEvent {
@SubscribeEvent
public void handle(GuildMessageReceivedEvent event) {
if (event.getGuild() == null) return;
String prefix = "/";
if (!event.getMessage().getContent().startsWith(prefix)) return;
// Map<String, CommandRegistrar> commands = CommandHandler.getCommands();
RixaGuild rixaGuild = RixaManager.getGuild(event.getGuild());
String prefix = rixaGuild
.getGuildSettings()
.getPrefix();
if (!event.getMessage().getContent().startsWith(prefix)) {return; }
String[] splitContent = event.getMessage().getContent().replace(prefix, "").split(" ");
if(!CommandHandler.hasCommand(splitContent[0])) { return; }
//if (!commands.containsKey(splitContent[0])) return;
if(!CommandHandler.hasCommand(splitContent[0])) {
return; }
CommandRegistrar cmd = CommandHandler.get(splitContent[0]);
//CommandRegistrar cmd = commands.get(splitContent[0]);
Method m = cmd.getMethod();
try {
m.invoke(cmd.getExecutor(), event);

View File

@ -0,0 +1,11 @@
package me.savvy.rixa.extras.polls;
/**
* Created by Timber on 5/23/2017.
*/
public class Poll {
public Poll() {
}
}

View File

@ -0,0 +1,49 @@
package me.savvy.rixa.guild;
import me.savvy.rixa.commands.handlers.RixaPermission;
import me.savvy.rixa.guild.management.GuildSettings;
import net.dv8tion.jda.core.entities.Guild;
import net.dv8tion.jda.core.entities.Member;
/**
* Created by Timber on 5/23/2017.
*/
public class RixaGuild {
private Guild guild;
private GuildSettings guildSettings;
public RixaGuild(Guild guild) {
this.guild = guild;
load();
}
private void load() {
if(check()) return;
setGuildSettings(new GuildSettings(this.guild));
RixaManager.addGuild(this);
}
public GuildSettings getGuildSettings() {
return (guildSettings == null) ? this.guildSettings = new GuildSettings(getGuild()) : guildSettings;
}
public void setGuildSettings(GuildSettings guildSettings) {
this.guildSettings = guildSettings;
}
/**
* TODO: Check if Guild exists in database if not create new instance;
*/
public boolean check() {
return guildSettings == null;
}
public Guild getGuild() {
return guild;
}
public boolean hasPermission(Member member, RixaPermission clearChat) {
return member.getUser().getId().equalsIgnoreCase("202944101333729280");
}
}

View File

@ -0,0 +1,39 @@
package me.savvy.rixa.guild;
import net.dv8tion.jda.core.entities.Guild;
import java.util.HashMap;
import java.util.Map;
/**
* Created by Timber on 5/23/2017.
*/
public class RixaManager {
private static Map<String, RixaGuild> guilds = new HashMap<>();
public static Map<String, RixaGuild> getGuilds() {
return guilds;
}
public static void addGuild(RixaGuild guild) {
if(check(guild.getGuild())) return;
guilds.put(guild.getGuild().getId(), guild);
}
public static RixaGuild getGuild(Guild guild) {
if(!check(guild)) {
addGuild(new RixaGuild(guild));
}
return guilds.get(guild.getId());
}
public static void removeGuild(RixaGuild guild) {
if(!check(guild.getGuild())) return;
guilds.remove(guild.getGuild().getId());
}
private static boolean check(Guild guild) {
return guilds.containsKey(guild.getId());
}
}

View File

@ -0,0 +1,87 @@
package me.savvy.rixa.guild.management;
import net.dv8tion.jda.core.entities.Guild;
import net.dv8tion.jda.core.entities.TextChannel;
/**
* Created by Timber on 5/23/2017.
*/
public class GuildSettings {
private Guild guild;
private String prefix = ".", defaultRole, joinMessage, quitMessage, joinPrivateMessage;
private TextChannel joinMessageChannel, quitMessageChannel;
public GuildSettings(Guild guild) {
this.guild = guild;
load();
}
private void load() {
}
public void unload() {
}
public Guild getGuild() {
return guild;
}
public String getJoinMessage() {
return joinMessage;
}
public void setJoinMessage(String joinMessage) {
this.joinMessage = joinMessage;
}
public String getQuitMessage() {
return quitMessage;
}
public void setQuitMessage(String quitMessage) {
this.quitMessage = quitMessage;
}
public String getJoinPrivateMessage() {
return joinPrivateMessage;
}
public void setJoinPrivateMessage(String joinPrivateMessage) {
this.joinPrivateMessage = joinPrivateMessage;
}
public TextChannel getJoinMessageChannel() {
return joinMessageChannel;
}
public void setJoinMessageChannel(TextChannel joinMessageChannel) {
this.joinMessageChannel = joinMessageChannel;
}
public TextChannel getQuitMessageChannel() {
return quitMessageChannel;
}
public void setQuitMessageChannel(TextChannel quitMessageChannel) {
this.quitMessageChannel = quitMessageChannel;
}
public String getDefaultRole() {
return defaultRole;
}
public void setDefaultRole(String defaultRole) {
this.defaultRole = defaultRole;
}
public String getPrefix() {
return prefix;
}
public void setPrefix(String prefix) {
this.prefix = prefix;
}
}

View File

@ -1,7 +1,8 @@
package me.savvy.rixa.modules.reactions.react;
import com.lunaticdev.rixa.commands.handler.CommandHandler;
import com.lunaticdev.rixa.commands.handler.CommandType;
import me.savvy.rixa.commands.handlers.CommandHandler;
import me.savvy.rixa.commands.handlers.CommandType;
import me.savvy.rixa.guild.RixaManager;
import me.savvy.rixa.modules.reactions.handlers.React;
import me.savvy.rixa.modules.reactions.handlers.ReactHandle;
import net.dv8tion.jda.core.EmbedBuilder;
@ -23,6 +24,8 @@ public class HelpReaction implements React {
return;
}
Message message = event.getChannel().getMessageById(event.getMessageId()).complete();
String prefix = (event.getChannel().getType() != ChannelType.PRIVATE) ?
RixaManager.getGuild(event.getGuild()).getGuildSettings().getPrefix() : "/";
EmbedBuilder embedBuilder;
try {
switch(event.getReaction().getEmote().getName()) {
@ -39,9 +42,10 @@ public class HelpReaction implements React {
"Click a number below for information about other commands.";
embedBuilder.setTitle("Help", "http://rixa.io");
embedBuilder.setDescription(stringBuilder);
CommandHandler.getCommands().values().stream().filter(cmd -> cmd.getType() == CommandType.USER)
.forEach(cmd -> embedBuilder.addField("/"/*prefix*/ + cmd.getPrefix(), cmd.getDescription(), false));
message.editMessage(embedBuilder.build()).queue();// = event.getChannel().sendMessage(embedBuilder.build()).complete();
CommandHandler.getCommands().values().stream().filter(cmd -> cmd.getCommandAnnotation().type() == CommandType.USER)
.forEach(cmd -> embedBuilder.addField(prefix + cmd.getCommandAnnotation().mainCommand(),
cmd.getCommandAnnotation().description(), false));
message.editMessage(embedBuilder.build()).queue();
break;
case "\u0032\u20E3": // two emoji
embedBuilder = new EmbedBuilder();
@ -51,8 +55,9 @@ public class HelpReaction implements React {
"Click a number below for information about other commands.";
embedBuilder.setTitle("Help", "http://rixa.io");
embedBuilder.setDescription(stringBuilder);
CommandHandler.getCommands().values().stream().filter(cmd -> cmd.getType() == CommandType.ADMIN || cmd.getType() == CommandType.MOD)
.forEach(cmd -> embedBuilder.addField("/"/*prefix*/ + cmd.getPrefix(), cmd.getDescription(), false));
CommandHandler.getCommands().values().stream().filter(cmd -> cmd.getCommandAnnotation().type() == CommandType.ADMIN
|| cmd.getCommandAnnotation().type() == CommandType.MOD)
.forEach(cmd -> embedBuilder.addField(prefix, cmd.getCommandAnnotation().description(), false));
message.editMessage(embedBuilder.build()).queue();
break;
case "\u0033\u20E3": // three emoji
@ -63,7 +68,6 @@ public class HelpReaction implements React {
"Click a number below for information about other commands.";
embedBuilder.setTitle("Help", "http://rixa.io");
embedBuilder.setDescription(stringBuilder);
String prefix = "/";
embedBuilder.addField(prefix + "music join [name]", "Joins a voice channel that has the provided name", false)
.addField(prefix + "music join [id]", "Joins a voice channel based on the provided id.", false)
.addField(prefix + "music leave", "Leaves the voice channel that the bot is currently in.", false)

View File

@ -0,0 +1,49 @@
package me.savvy.rixa.utils;
import net.dv8tion.jda.core.EmbedBuilder;
import net.dv8tion.jda.core.entities.MessageEmbed;
import net.dv8tion.jda.core.entities.TextChannel;
import java.awt.*;
/**
* Created by Timber on 5/23/2017.
*/
public class MessageBuilder {
private EmbedBuilder builder;
public MessageBuilder(String description) {
this.builder = new EmbedBuilder().setDescription(description);
}
public MessageBuilder setTitle(String title, String url) {
builder.setTitle(title, url);
return this;
}
public MessageBuilder setTitle(String title) {
setTitle(title, "http://rixa.io/");
return this;
}
public MessageBuilder setColor(Color color) {
builder.setColor(color);
return this;
}
public EmbedBuilder getBuilder() {
return builder;
}
public void queue(TextChannel channel) {
channel.sendMessage(builder.build()).queue();
}
public void complete(TextChannel channel) {
channel.sendMessage(builder.build()).complete();
}
public MessageEmbed build() {
return builder.build();
}
}

View File

@ -0,0 +1,16 @@
package me.savvy.rixa.utils;
/**
* Created by Timber on 5/23/2017.
*/
public class Utils {
public static boolean isInt(String s) {
try {
Integer.parseInt(s);
return true;
} catch (NumberFormatException ex) {
return false;
}
}
}