Levels, Added External Invite Link Blocking

This commit is contained in:
Savvy 2017-07-23 21:34:57 -04:00
parent d3f37ae2ac
commit a0b448627a
17 changed files with 569 additions and 390 deletions

View File

@ -2,8 +2,8 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="d884bc5a-63a1-4e03-b68b-617ebe9b8e2a" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/twitter/TwitterModule.java" afterPath="$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/twitter/TwitterModule.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
</list>
<ignored path="Rixa.iws" />
<ignored path=".idea/workspace.xml" />
@ -41,7 +41,7 @@
<favorites_list name="Rixa" />
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="375" />
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300" />
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
@ -57,7 +57,6 @@
<find>joinpm</find>
<find>music</find>
<find>greetings</find>
<find>addPerm</find>
<find>setTitle</find>
<find>&quot;http://rixa.io&quot;</find>
<find>pplay</find>
@ -71,6 +70,7 @@
<find>testin</find>
<find>testing</find>
<find>RixaManager</find>
<find>addPerm</find>
</findStrings>
<replaceStrings>
<replace>setTitle(String.format(&quot;Help: %s&quot;, title))</replace>
@ -508,23 +508,15 @@
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/data/permissions/Permission.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/modules/audio/AudioReceiveHandleer.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/audio/AudioReceiveHandler.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/audio/RixaAudioReceiveHandler.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/music/youtube/YoutubeSearch.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/data/database/Data.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/handlers/Command.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/music/TrackScheduler.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/data/database/sql/DatabaseManager.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/commands/general/HelpCommand.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/action/ActionManager.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/action/Action.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/action/actions/MessageResponse.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/utils/MessageBuilder.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/utils/UrbanDictionary.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/commands/admin/InviteCommand.java" />
@ -534,11 +526,9 @@
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/utils/WebUtil.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/UrbanDictionaryCommand.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/YoutubeCommand.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/twitter/TwitterModule.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/guild/RixaManager.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/MusicCommand.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/events/VoiceChannel.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/events/MessageEvent.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/commands/admin/ConfigCommand.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/ServerInfoCommand.java" />
@ -550,15 +540,25 @@
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/events/BotEvent.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/mod/PurgeMessagesCommand.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/mod/MuteCommand.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/guild/RixaGuild.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/data/filemanager/ConfigManager.java" />
<option value="$PROJECT_DIR$/build.gradle" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/data/filemanager/LanguageManager.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/data/locale/Language.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/AddRoleCommand.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/RemoveRoleCommand.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/TwitterCommand.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/twitter/TwitterModule.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/guild/RixaGuild.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/LevelsCommand.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/guild/user/UserData.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/Rixa.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/events/MessageEvent.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/data/database/sql/mysql/mysql/MySQL.java" />
<option value="$PROJECT_DIR$/src/main/java/me/savvy/rixa/data/database/sql/DatabaseManager.java" />
</list>
</option>
</component>
@ -595,7 +595,9 @@
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scratches" />
<pane id="Scope" />
<pane id="PackagesPane" />
<pane id="ProjectPane">
<subPane>
<PATH>
@ -608,114 +610,8 @@
<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>
<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>
<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="utils" />
<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>
</subPane>
</pane>
<pane id="Scratches" />
<pane id="PackagesPane" />
</panes>
</component>
<component name="PropertiesComponent">
@ -730,10 +626,10 @@
<property name="ChangesBrowser.SHOW_FLATTEN" value="false" />
</component>
<component name="RecentsManager">
<key name="CreateClassDialog.RecentsKey">
<recent name="me.savvy.rixa.data.database" />
<recent name="me.savvy.rixa.utils" />
<recent name="me.savvy.rixa.commands.handlers" />
<key name="MoveFile.RECENT_KEYS">
<recent name="C:\Users\Timber\Documents\intellij-workspace\Rixa\src\main\java\me\savvy\rixa\modules\music" />
<recent name="C:\Users\Timber\Documents\intellij-workspace\Rixa\src\main\java\me\savvy\rixa\locale\manager" />
<recent name="C:\Users\Timber\Documents\intellij-workspace\Rixa" />
</key>
<key name="CopyFile.RECENT_KEYS">
<recent name="C:\Users\Timber\Documents\intellij-workspace\Rixa\src\main\java\me\savvy\rixa\modules\music" />
@ -742,12 +638,13 @@
<recent name="C:\Users\Timber\Documents\intellij-workspace\Rixa\src\main\java\me\savvy\rixa\database" />
</key>
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="me.savvy.rixa.commands.general" />
<recent name="me.savvy.rixa.commands.admin" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="C:\Users\Timber\Documents\intellij-workspace\Rixa\src\main\java\me\savvy\rixa\modules\music" />
<recent name="C:\Users\Timber\Documents\intellij-workspace\Rixa\src\main\java\me\savvy\rixa\locale\manager" />
<recent name="C:\Users\Timber\Documents\intellij-workspace\Rixa" />
<key name="CreateClassDialog.RecentsKey">
<recent name="me.savvy.rixa.data.database" />
<recent name="me.savvy.rixa.utils" />
<recent name="me.savvy.rixa.commands.handlers" />
</key>
</component>
<component name="RunDashboard">
@ -1099,7 +996,7 @@
<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="4" 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.63424945" sideWeight="0.49573562" 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="10" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.33403805" sideWeight="0.48125" order="9" 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.33403805" sideWeight="0.48125" order="9" 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="5" 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.23958333" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<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="7" side_tool="false" content_ui="tabs" />
@ -1127,30 +1024,35 @@
<layout-to-restore>
<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="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="Nl-Palette" 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="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="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32769555" sideWeight="0.5127932" order="7" side_tool="true" 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.33403805" sideWeight="0.51875" 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.32941177" sideWeight="0.5" order="4" 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="5" side_tool="false" content_ui="tabs" />
<window_info id="Properties" 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="5" 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="3" 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="7" 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="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="6" side_tool="false" content_ui="tabs" />
<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="8" 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="3" 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="5" side_tool="false" 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="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.32769555" sideWeight="0.4978678" order="8" 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="5" 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="8" 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.32769555" sideWeight="0.4978678" order="9" 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="7" side_tool="false" content_ui="tabs" />
<window_info id="Image Layers" 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="4" 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="10" side_tool="false" content_ui="tabs" />
<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="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.63424945" sideWeight="0.49573562" 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="10" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.33403805" sideWeight="0.48720682" order="9" 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="11" side_tool="false" content_ui="tabs" />
<window_info id="Floobits" 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="8" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.33403805" sideWeight="0.48125" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.23958333" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<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="7" 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="4" side_tool="true" 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.32980973" 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="9" 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="6" side_tool="true" content_ui="tabs" />
<window_info id="Theme Preview" 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="6" side_tool="false" content_ui="tabs" />
</layout-to-restore>
</component>
<component name="Vcs.Log.UiProperties">
@ -1175,148 +1077,6 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/action/Action.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="119">
<caret line="7" column="17" lean-forward="false" 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/general/PingCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="153">
<caret line="13" column="4" lean-forward="false" selection-start-line="13" selection-start-column="4" selection-end-line="15" selection-end-column="43" />
</state>
</provider>
</entry>
<entry file="jar://C:/Program Files/Java/jdk1.8.0_131/jre/lib/ext/nashorn.jar!/jdk/nashorn/internal/parser/JSONParser.class" />
<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="317">
<caret line="39" column="49" lean-forward="false" selection-start-line="39" selection-start-column="49" selection-end-line="39" selection-end-column="49" />
</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="85">
<caret line="5" column="13" lean-forward="false" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.dv8tion/JDA/3.1.1_215/71bc8974bda66301a498c14b5693b007a60bc0c4/JDA-3.1.1_215-sources.jar!/net/dv8tion/jda/core/entities/Invite.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="307">
<caret line="52" column="30" lean-forward="false" selection-start-line="52" selection-start-column="30" selection-end-line="52" selection-end-column="30" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/data/database/sql/DatabaseManager.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="17">
<caret line="51" column="18" lean-forward="false" selection-start-line="51" selection-start-column="18" selection-end-line="51" selection-end-column="18" />
</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="183">
<caret line="33" column="82" lean-forward="false" selection-start-line="33" selection-start-column="82" selection-end-line="33" selection-end-column="82" />
</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="119">
<caret line="19" column="24" lean-forward="true" selection-start-line="19" selection-start-column="24" selection-end-line="59" selection-end-column="0" />
</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="27" column="22" lean-forward="true" selection-start-line="27" selection-start-column="22" selection-end-line="27" selection-end-column="22" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/music/MusicModule.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="194">
<caret line="29" column="24" lean-forward="false" selection-start-line="29" selection-start-column="24" selection-end-line="29" selection-end-column="24" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/InviteCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="119">
<caret line="14" column="13" lean-forward="false" selection-start-line="14" selection-start-column="13" selection-end-line="14" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/twitter/listeners/TwitterListeners.java" />
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/utils/WebUtil.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="680">
<caret line="40" column="5" lean-forward="false" selection-start-line="40" selection-start-column="5" selection-end-line="40" selection-end-column="5" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/utils/UrbanDictionary.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="201">
<caret line="19" column="11" lean-forward="false" selection-start-line="19" selection-start-column="11" selection-end-line="19" selection-end-column="11" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/UrbanDictionaryCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="17">
<caret line="16" column="35" lean-forward="true" selection-start-line="16" selection-start-column="35" selection-end-line="16" selection-end-column="58" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/enums/Result.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="85">
<caret line="5" column="12" lean-forward="false" selection-start-line="5" selection-start-column="12" selection-end-line="5" selection-end-column="12" />
</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="85">
<caret line="5" column="12" lean-forward="false" selection-start-line="5" selection-start-column="12" selection-end-line="5" selection-end-column="12" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/twitter/TwitterModule.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="375">
<caret line="28" column="25" lean-forward="false" selection-start-line="28" selection-start-column="25" selection-end-line="28" selection-end-column="25" />
</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="85">
<caret line="5" column="12" lean-forward="false" selection-start-line="5" selection-start-column="12" selection-end-line="5" selection-end-column="12" />
</state>
</provider>
</entry>
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.dv8tion/JDA/3.1.1_215/71bc8974bda66301a498c14b5693b007a60bc0c4/JDA-3.1.1_215-sources.jar!/net/dv8tion/jda/core/events/guild/voice/GuildVoiceLeaveEvent.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="102">
<caret line="22" column="13" lean-forward="false" selection-start-line="22" selection-start-column="13" selection-end-line="22" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/events/VoiceChannel.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="391">
<caret line="23" column="0" lean-forward="false" selection-start-line="23" selection-start-column="0" selection-end-line="23" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/MusicCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="473">
@ -1324,20 +1084,6 @@
</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="374">
<caret line="56" column="33" lean-forward="false" selection-start-line="56" selection-start-column="33" selection-end-line="56" selection-end-column="33" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/ConfigCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="635">
<caret line="191" column="27" lean-forward="false" selection-start-line="191" selection-start-column="27" selection-end-line="191" selection-end-column="27" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/ServerInfoCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="203">
@ -1366,21 +1112,10 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/events/MemberEvent.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="203">
<caret line="24" column="39" lean-forward="false" selection-start-line="24" selection-start-column="39" selection-end-line="24" selection-end-column="39" />
</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="408">
<caret line="32" column="39" lean-forward="false" selection-start-line="32" selection-start-column="39" selection-end-line="32" selection-end-column="39" />
<folding>
<element signature="e#857#858#0" expanded="false" />
<element signature="e#932#933#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -1424,15 +1159,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="201">
<caret line="55" column="11" lean-forward="false" selection-start-line="55" selection-start-column="11" selection-end-line="55" selection-end-column="11" />
<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="-833">
<caret line="47" column="9" lean-forward="true" selection-start-line="47" selection-start-column="9" selection-end-line="47" selection-end-column="9" />
<folding />
</state>
</provider>
</entry>
@ -1440,7 +1166,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="460">
<caret line="33" column="0" lean-forward="false" selection-start-line="33" selection-start-column="0" selection-end-line="33" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
@ -1448,15 +1173,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" 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$/src/main/java/me/savvy/rixa/data/filemanager/LanguageManager.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="663">
<caret line="54" column="3" lean-forward="false" selection-start-line="54" selection-start-column="3" selection-end-line="54" selection-end-column="3" />
<folding />
</state>
</provider>
</entry>
@ -1464,9 +1180,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="86">
<caret line="15" column="13" lean-forward="false" selection-start-line="16" selection-start-column="0" selection-end-line="71" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -1474,7 +1187,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="85">
<caret line="5" column="13" lean-forward="false" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
@ -1482,7 +1194,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="408">
<caret line="31" column="5" lean-forward="true" selection-start-line="31" selection-start-column="5" selection-end-line="31" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
@ -1490,15 +1201,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="220">
<caret line="29" column="7" lean-forward="false" selection-start-line="29" selection-start-column="7" selection-end-line="29" selection-end-column="181" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/AddRoleCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="52">
<caret line="26" column="36" lean-forward="false" selection-start-line="26" selection-start-column="36" selection-end-line="26" selection-end-column="36" />
<folding />
</state>
</provider>
</entry>
@ -1506,15 +1208,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="306">
<caret line="39" column="17" lean-forward="true" selection-start-line="39" selection-start-column="17" selection-end-line="39" selection-end-column="17" />
<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="171">
<caret line="104" column="61" lean-forward="false" selection-start-line="104" selection-start-column="61" selection-end-line="104" selection-end-column="61" />
<folding />
</state>
</provider>
</entry>
@ -1522,19 +1215,219 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="204">
<caret line="12" column="11" lean-forward="false" selection-start-line="12" selection-start-column="11" selection-end-line="12" selection-end-column="11" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/data/filemanager/LanguageManager.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-475">
<caret line="4" column="36" lean-forward="false" selection-start-line="4" selection-start-column="36" selection-end-line="4" selection-end-column="36" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/AddRoleCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="119">
<caret line="22" column="13" lean-forward="false" selection-start-line="22" selection-start-column="13" selection-end-line="22" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/InviteCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="119">
<caret line="14" column="26" lean-forward="true" selection-start-line="14" selection-start-column="26" selection-end-line="30" selection-end-column="5" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/TwitterCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="374">
<caret line="22" column="8" lean-forward="false" selection-start-line="22" selection-start-column="8" selection-end-line="22" selection-end-column="8" />
</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="153">
<caret line="9" column="25" lean-forward="false" selection-start-line="9" selection-start-column="11" selection-end-line="9" selection-end-column="25" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/twitter/TwitterModule.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-271">
<caret line="14" column="3" lean-forward="false" selection-start-line="14" selection-start-column="3" selection-end-line="14" selection-end-column="36" />
</state>
</provider>
</entry>
<entry file="jar://C:/Program Files/Java/jdk1.8.0_131/src.zip!/java/util/Date.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="218">
<caret line="164" column="12" lean-forward="false" selection-start-line="164" selection-start-column="8" selection-end-line="164" selection-end-column="12" />
</state>
</provider>
</entry>
<entry file="jar://C:/Program Files/Java/jdk1.8.0_131/src.zip!/java/sql/ResultSet.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="201">
<caret line="587" column="8" lean-forward="false" selection-start-line="587" selection-start-column="8" selection-end-line="587" selection-end-column="8" />
</state>
</provider>
</entry>
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.16.18/d65e72edec3424e45335602fc1a4ff6e614f4553/lombok-1.16.18-sources.jar!/lombok/Setter.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="201">
<caret line="54" column="18" lean-forward="false" selection-start-line="54" selection-start-column="18" selection-end-line="54" selection-end-column="18" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/events/MemberEvent.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="237">
<caret line="26" column="71" lean-forward="false" selection-start-line="26" selection-start-column="71" selection-end-line="26" selection-end-column="71" />
</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="103">
<caret line="72" column="0" lean-forward="true" selection-start-line="72" selection-start-column="0" selection-end-line="72" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="jar://C:/Program Files/Java/jdk1.8.0_131/src.zip!/java/util/Random.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2037">
<caret line="424" column="5" lean-forward="true" selection-start-line="424" selection-start-column="5" selection-end-line="424" selection-end-column="5" />
</state>
</provider>
</entry>
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.16.18/d65e72edec3424e45335602fc1a4ff6e614f4553/lombok-1.16.18-sources.jar!/lombok/Getter.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="218">
<caret line="54" column="7" lean-forward="false" selection-start-line="54" selection-start-column="4" selection-end-line="54" selection-end-column="7" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/admin/ConfigCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-340">
<caret line="59" column="31" lean-forward="false" selection-start-line="59" selection-start-column="31" selection-end-line="59" selection-end-column="31" />
</state>
</provider>
</entry>
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.dv8tion/JDA/3.1.1_215/71bc8974bda66301a498c14b5693b007a60bc0c4/JDA-3.1.1_215-sources.jar!/net/dv8tion/jda/core/entities/User.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="108" column="11" lean-forward="false" selection-start-line="108" selection-start-column="11" selection-end-line="108" selection-end-column="11" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/commands/general/LevelsCommand.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="409">
<caret line="38" column="82" lean-forward="false" selection-start-line="38" selection-start-column="82" selection-end-line="38" selection-end-column="82" />
</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="255">
<caret line="36" column="41" lean-forward="false" selection-start-line="36" selection-start-column="41" selection-end-line="36" selection-end-column="41" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/modules/levels/LevelsModule.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="375">
<caret line="34" column="35" lean-forward="false" selection-start-line="34" selection-start-column="35" selection-end-line="34" selection-end-column="35" />
</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="102">
<caret line="19" column="12" lean-forward="false" selection-start-line="19" selection-start-column="12" selection-end-line="19" selection-end-column="12" />
</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="409">
<caret line="95" column="13" lean-forward="false" selection-start-line="95" selection-start-column="13" selection-end-line="95" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar://C:/Program Files/Java/jdk1.8.0_131/src.zip!/java/util/regex/Pattern.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1533">
<caret line="1026" column="26" lean-forward="false" selection-start-line="1026" selection-start-column="26" selection-end-line="1026" selection-end-column="26" />
</state>
</provider>
</entry>
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.dv8tion/JDA/3.1.1_215/71bc8974bda66301a498c14b5693b007a60bc0c4/JDA-3.1.1_215-sources.jar!/net/dv8tion/jda/core/entities/Invite.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="425">
<caret line="44" column="18" lean-forward="true" selection-start-line="44" selection-start-column="18" selection-end-line="44" selection-end-column="18" />
</state>
</provider>
</entry>
<entry file="jar://C:/Program Files/Java/jdk1.8.0_131/src.zip!/java/util/regex/Matcher.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-105">
<caret line="494" column="18" lean-forward="false" selection-start-line="494" selection-start-column="18" selection-end-line="494" selection-end-column="18" />
</state>
</provider>
</entry>
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.dv8tion/JDA/3.1.1_215/71bc8974bda66301a498c14b5693b007a60bc0c4/JDA-3.1.1_215-sources.jar!/net/dv8tion/jda/core/requests/RestAction.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="201">
<caret line="217" column="16" lean-forward="false" selection-start-line="217" selection-start-column="16" selection-end-line="217" selection-end-column="16" />
</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="252">
<caret line="57" column="5" lean-forward="false" selection-start-line="57" selection-start-column="5" selection-end-line="57" selection-end-column="5" />
</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="408">
<caret line="30" column="0" lean-forward="true" selection-start-line="30" selection-start-column="0" selection-end-line="30" selection-end-column="0" />
</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="-34">
<caret line="87" column="24" lean-forward="false" selection-start-line="87" selection-start-column="24" selection-end-line="87" selection-end-column="24" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/data/database/sql/mysql/mysql/MySQL.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="782">
<caret line="77" column="41" lean-forward="false" selection-start-line="77" selection-start-column="41" selection-end-line="77" selection-end-column="41" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/data/database/sql/DatabaseManager.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="17">
<caret line="54" column="31" lean-forward="true" selection-start-line="54" selection-start-column="31" selection-end-line="54" selection-end-column="31" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/savvy/rixa/guild/user/UserData.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="272">
<caret line="16" column="19" lean-forward="false" selection-start-line="16" selection-start-column="19" selection-end-line="16" selection-end-column="19" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#506#507#0" expanded="true" />
<element signature="e#538#539#0" expanded="true" />
</folding>
<state relative-caret-position="119">
<caret line="18" column="13" lean-forward="false" selection-start-line="18" selection-start-column="13" selection-end-line="18" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>

View File

@ -27,6 +27,7 @@ import net.dv8tion.jda.core.JDA;
import net.dv8tion.jda.core.JDABuilder;
import net.dv8tion.jda.core.OnlineStatus;
import net.dv8tion.jda.core.entities.Game;
import net.dv8tion.jda.core.entities.Invite;
import net.dv8tion.jda.core.exceptions.RateLimitedException;
import net.dv8tion.jda.core.hooks.AnnotatedEventManager;
@ -102,7 +103,7 @@ public class Rixa {
new DeleteMessagesCommand(), new PingCommand(), new PurgeMessagesCommand(),
new BatchMoveCommand(), new MuteCommand(), new MusicCommand(),
new ConfigCommand(), new UrbanDictionaryCommand(), new YoutubeCommand(),
new AddRoleCommand(), new RemoveRoleCommand()});
new AddRoleCommand(), new RemoveRoleCommand(), new LevelsCommand()});
register(new React[] {new HelpReaction(), new ConfigReaction()});
data = new Data(DataType.SQL);
}

View File

@ -0,0 +1,25 @@
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.CommandType;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.entities.TextChannel;
import net.dv8tion.jda.core.entities.User;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.core.requests.restaction.InviteAction;
/**
* Created by savit on 7/14/2017.
*/
public class TwitterCommand implements CommandExec {
@Command(
description = "Configure twitter module.",
type = CommandType.ADMIN,
channelType = ChannelType.TEXT,
usage = "%ptwitter", mainCommand = "twitter")
public void execute(GuildMessageReceivedEvent event) {
}
}

View File

@ -0,0 +1,42 @@
package me.savvy.rixa.commands.general;
import me.savvy.rixa.commands.handlers.Command;
import me.savvy.rixa.commands.handlers.CommandExec;
import me.savvy.rixa.guild.RixaGuild;
import me.savvy.rixa.guild.user.UserData;
import me.savvy.rixa.utils.MessageBuilder;
import me.savvy.rixa.utils.YoutubeSearch;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
import java.io.IOException;
/**
* Created by savit on 7/11/2017.
*/
public class LevelsCommand implements CommandExec {
@Override
@Command(mainCommand = "rank",
description = "View your levels!",
channelType = ChannelType.TEXT)
public void execute(GuildMessageReceivedEvent event) {
RixaGuild rixaGuild = RixaGuild.getGuild(event.getGuild());
if(!rixaGuild.getLevelsModule().isEnabled()) {
new MessageBuilder("Levels are not enabled on this server!").setColor(event.getMember().getColor()).queue(event.getChannel());
return;
}
UserData data = rixaGuild.getLevelsModule().getUserData(event.getAuthor().getId());
new MessageBuilder()
.setAuthor(event.getAuthor().getName(), event.getAuthor().getEffectiveAvatarUrl(), event.getAuthor().getEffectiveAvatarUrl())
.setTitle(event.getAuthor().getName() + "'s level")
.setColor(event.getMember().getColor())
.addField("Rank", "0", true)
.addField("Level", String.valueOf(data.getLevel()), true)
.addField("Exp Needed",
data.getRemainingExperience() + "/" + data.getNeededXP
(data.getLevelFromExperience(data.getExperience())).intValue(), false)
.addField("Total Exp", String.valueOf(data.getExperience()), false)
.queue(event.getChannel());
}
}

View File

@ -6,6 +6,8 @@ import me.savvy.rixa.utils.MessageBuilder;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
import java.time.temporal.ChronoUnit;
/**
* Created by Timber on 5/23/2017.
*/
@ -16,6 +18,12 @@ public class PingCommand implements CommandExec {
channelType = ChannelType.TEXT)
public void execute(GuildMessageReceivedEvent event) {
new MessageBuilder("Pong!").setColor(event.getMember().getColor()).complete(event.getChannel());
/*event.getChannel().sendMessage("Pong").queue(m -> {
if(m!=null) {
m.editMessage("Pong: " + event.getMessage().getCreationTime().until(m.getEditedTime(), ChronoUnit.MILLIS) + "ms").complete();
}
});*/
/*RixaAudioReceiveHandler handle = new RixaAudioReceiveHandler();
handle.start(event.getGuild(), event.getMember().getVoiceState().getChannel());*/
}

View File

@ -2,11 +2,7 @@ package me.savvy.rixa.data.filemanager;
import lombok.Getter;
import me.savvy.rixa.data.locale.Language;
import me.savvy.rixa.data.thunderbolt.Thunderbolt;
import me.savvy.rixa.data.thunderbolt.exceptions.FileLoadException;
import me.savvy.rixa.data.thunderbolt.io.ThunderFile;
import org.apache.commons.io.IOUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.File;

View File

@ -8,6 +8,7 @@ import me.savvy.rixa.modules.reactions.handlers.ReactRegistrar;
import me.savvy.rixa.modules.reactions.handlers.ReactionManager;
import me.savvy.rixa.utils.MessageBuilder;
import net.dv8tion.jda.core.Permission;
import net.dv8tion.jda.core.entities.Invite;
import net.dv8tion.jda.core.entities.Message;
import net.dv8tion.jda.core.entities.MessageEmbed;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
@ -18,13 +19,20 @@ import net.dv8tion.jda.core.hooks.SubscribeEvent;
import java.awt.*;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created by Timber on 5/7/2017.
*/
public class MessageEvent {
private final Pattern INVITE = Pattern.compile("discord(?:\\.gg|app.com\\/invite)\\/([A-Z0-9-]{2,16})",Pattern.CASE_INSENSITIVE);
@SubscribeEvent
public void handle(GuildMessageReceivedEvent event) {
if (event.getGuild() == null) return;
@ -32,7 +40,22 @@ public class MessageEvent {
String prefix = rixaGuild
.getGuildSettings()
.getPrefix();
if (!event.getMessage().getContent().startsWith(prefix)) {return; }
checkMessage(event.getMessage());
if (!event.getMessage().getContent().startsWith(prefix)) {
if (!(rixaGuild.getLevelsModule().isEnabled())) {
return;
}
if(!event.getAuthor().getId().equalsIgnoreCase("202944101333729280") &&
!event.getAuthor().getId().equalsIgnoreCase("207322957075185665")) {
return;
}
if(rixaGuild.getLevelsModule().getUserData(event.getAuthor().getId()).awardIfCan()) {
new MessageBuilder(event.getAuthor().getAsMention() + " has leveled up to level " +
rixaGuild.getLevelsModule().getUserData(event.getAuthor().getId()).getLevel())
.setColor(event.getMember().getColor()).queue(event.getChannel());
}
return;
}
String[] splitContent = event.getMessage().getContent().replace(prefix, "").split(" ");
if(!CommandHandler.hasCommand(splitContent[0])) {
@ -46,6 +69,28 @@ public class MessageEvent {
}
}
private void checkMessage(Message message) {
List<String> invites = new ArrayList<>();
Matcher matcher = INVITE.matcher(message.getRawContent());
while(matcher.find()) {
invites.add(matcher.group(1));
}
if(invites.size() == 0) {
return;
}
for(String inviteCode : invites) {
Invite invite = null;
try {
invite = Invite.resolve(message.getJDA(), inviteCode).complete();
} catch(Exception e) {}
if(invite !=null && !invite.getGuild().getId().equals(message.getGuild().getId())) {
new MessageBuilder(String.format("Advertising is not allowed, %s!",
message.getAuthor().getAsMention())).setColor(message.getMember().getColor()).queue(message.getTextChannel());
message.delete().reason("Advertising is not allowed!").queue();
}
}
}
@SubscribeEvent
public void onMemberJoin(PrivateMessageReceivedEvent event) {
RixaGuild rixaGuild;
@ -107,4 +152,4 @@ public class MessageEvent {
}
}
}
}
}

View File

@ -7,6 +7,7 @@ import net.dv8tion.jda.core.EmbedBuilder;
import java.awt.*;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
/**
@ -14,14 +15,13 @@ import java.util.List;
*/
public class Poll {
@Getter @Setter
private String name, description;
@Getter
private List<String> options;
@Getter @Setter private String name, description;
@Getter private int id;
@Getter private List<String> options;
public Poll(String name) {
this.name = name;
options = new ArrayList<>();
options = new LinkedList<>();
}
public boolean addOption(String s) {
@ -36,7 +36,7 @@ public class Poll {
if(options.size() <= 10) {
return options.remove(i);
}
return "";
return "Option Not Found.";
}
public EmbedBuilder getBuilder(Color color) {

View File

@ -1,6 +1,5 @@
package me.savvy.rixa.guild;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import me.savvy.rixa.Rixa;
@ -8,9 +7,13 @@ import me.savvy.rixa.commands.handlers.RixaPermission;
import me.savvy.rixa.data.database.sql.DatabaseManager;
import me.savvy.rixa.enums.Result;
import me.savvy.rixa.guild.management.GuildSettings;
import me.savvy.rixa.modules.levels.LevelsModule;
import me.savvy.rixa.modules.music.MusicModule;
import me.savvy.rixa.modules.twitter.TwitterModule;
import net.dv8tion.jda.core.entities.*;
import net.dv8tion.jda.core.entities.Guild;
import net.dv8tion.jda.core.entities.Member;
import net.dv8tion.jda.core.entities.Role;
import net.dv8tion.jda.core.entities.User;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@ -31,11 +34,13 @@ public class RixaGuild {
@Getter @Setter private MusicModule musicModule;
@Getter @Setter private TwitterModule twitterModule;
@Getter private List<String> mutedMembers = new ArrayList<>();
@Getter @Setter private LevelsModule levelsModule;
public RixaGuild(Guild guild) {
this.guild = guild;
this.db = Rixa.getDbManager();
setMusicModule(new MusicModule(guild));
setLevelsModule(new LevelsModule(this));
load();
}

View File

@ -2,23 +2,135 @@ package me.savvy.rixa.guild.user;
import lombok.Getter;
import lombok.Setter;
import me.savvy.rixa.Rixa;
import me.savvy.rixa.enums.Result;
import me.savvy.rixa.guild.RixaGuild;
import net.dv8tion.jda.core.entities.Guild;
import net.dv8tion.jda.core.entities.User;
import java.util.HashMap;
import java.util.Map;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
/**
* Created by savit on 7/14/2017.
*/
public class UserData {
@Getter private static Map<String, UserData> userData = new HashMap<>();
@Getter private final Guild guild;
@Getter private User user;
@Getter @Setter private String status;
@Getter @Setter private int level;
@Getter @Setter private int experience;
@Getter private int experience;
private boolean awardedLast;
private Random random;
public UserData(User user) {
public UserData(User user, Guild guild) {
this.user = user;
this.guild = guild;
awardedLast = false;
random = new Random();
load();
register(this);
}
private void register(UserData userData) {
RixaGuild.getGuild(guild).getLevelsModule().registerUser(userData);
}
private void load() {
if(!checkExists()) {
insert();
setExperience(0);
return;
}
String query = "SELECT * FROM `%s` WHERE `%s` = '%s' AND `%s` = '%s';";
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = Rixa.getDbManager().getConnection().prepareStatement(String.format
(query, "levels", "guild_id",
guild.getId(), "user_id",
user.getId()));
rs = Rixa.getDbManager().getObject(ps);
setExperience(rs.getInt("experience"));
} catch (SQLException e) {
e.printStackTrace();
}
}
public int getLevel() {
return getLevelFromExperience(getExperience());
}
public boolean awardIfCan() {
if(awardedLast) {
return false;
}
int amountAdding = getRandom();
int currentLevel = getLevelFromExperience(getExperience());
setExperience(getExperience() + amountAdding);
awardedLast = true;
new Timer().schedule(new TimerTask() {
@Override
public void run() {
awardedLast = false;
}
}, 1000 * 60);
return currentLevel < getLevelFromExperience(getExperience());
}
public int getLevelFromExperience(int xp) {
int level = 0;
while (xp >= this.getNeededXP(level)) {
xp -= this.getNeededXP(level);
level++;
}
return level;
}
public Double getNeededXP(double n) {
if (n < 0) return 0.0;
return (6 * Math.pow(n, 3) + 119 * n + 100);
}
public int getRemainingExperience() {
int xp = this.getExperience();
int level = getLevelFromExperience(xp);
for (int i = 0; i < level; i++) {
xp -= this.getNeededXP(i);
}
return xp;
}
private boolean checkExists() {
String query = "SELECT `%s` FROM `%s` WHERE `%s` = '%s' AND `%s` = '%s';";
Result r = Rixa.getDbManager().checkExists(String.format
(query, "user_id", "levels", "guild_id", guild.getId(), "user_id", user.getId()));
return r == Result.TRUE;
}
private void insert() {
String query = "INSERT INTO `%s` (`%s`,`%s`,`%s`) VALUES ('%s', '%s', '%s');";
Rixa.getDbManager()
.insert(String.format(query, "levels", "guild_id", "user_id", "experience", guild.getId(), user.getId(), 0));
}
public void setExperience(int experience) {
this.experience = experience;
String query = "UPDATE `%s` SET `%s` = '%s' WHERE `%s` = '%s' AND `%s` = '%s';";
try {
PreparedStatement ps = Rixa.getDbManager().getConnection().prepareStatement(String.format
(query, "levels", "experience", experience, "guild_id",
guild.getId(), "user_id",
user.getId()));
Rixa.getDbManager().executeUpdate(ps);
} catch (SQLException e) {
e.printStackTrace();
}
}
public int getRandom() {
int i = random.nextInt(25);
return (i > 15 && i < 25 ? i : getRandom());
}
}

View File

@ -1,11 +1,27 @@
package me.savvy.rixa.modules.levels;
import lombok.Getter;
import me.savvy.rixa.guild.RixaGuild;
import me.savvy.rixa.guild.user.UserData;
import me.savvy.rixa.modules.RixaModule;
import java.util.HashMap;
import java.util.Map;
/**
* Created by Timber on 5/23/2017.
*/
public class LevelsModule implements RixaModule {
@Getter private final RixaGuild rixaGuild;
@Getter private Map<String, UserData> userData = new HashMap<>();
@Getter private boolean enabled;
public LevelsModule(RixaGuild rixaGuild) {
this.rixaGuild = rixaGuild;
enabled = true;
}
@Override
public String getName() {
return "Levels";
@ -13,11 +29,27 @@ public class LevelsModule implements RixaModule {
@Override
public String getDescription() {
return "";
return "Rixa levels module.";
}
@Override
public boolean isEnabled() {
return false;
public void registerUser(UserData userData) {
if (getUserData().containsKey(userData.getUser().getId())) {
return;
}
getUserData().put(userData.getUser().getId(), userData);
}
public UserData getUserData(String key) {
checkUser(key);
return getUserData().get(key);
}
private void checkUser(String key) {
if (getUserData().containsKey(key)) {
return;
}
new UserData
(getRixaGuild().getGuild().getJDA().getUserById(key),
getRixaGuild().getGuild());
}
}

View File

@ -3,14 +3,16 @@ package me.savvy.rixa.modules.twitter;
import lombok.Getter;
import lombok.Setter;
import me.savvy.rixa.guild.RixaGuild;
import me.savvy.rixa.modules.RixaModule;
import twitter4j.*;
import twitter4j.conf.ConfigurationBuilder;
/**
* Created by savit on 7/9/2017.
*/
public class TwitterModule {
public class TwitterModule implements RixaModule {
@Getter private boolean enabled;
@Getter
private final TwitterStream twitterStream;
@Getter
@ -45,5 +47,14 @@ public class TwitterModule {
twitterStream = new TwitterStreamFactory().getInstance();
twitter = twitterFactory.getInstance();
}
@Override
public String getName() {
return "Twitter";
}
@Override
public String getDescription() {
return "Twitter feed, tweet & more.";
}
}

View File

@ -19,6 +19,10 @@ public class MessageBuilder {
this.builder = new EmbedBuilder().setDescription(description);
}
public MessageBuilder() {
this.builder = new EmbedBuilder();
}
public MessageBuilder setTitle(String title, String url) {
builder.setTitle(title, url);
return this;
@ -43,7 +47,12 @@ public class MessageBuilder {
builder.setThumbnail(url);
return this;
}
public MessageBuilder setAuthor(String name, String url, String iconURL) {
builder.setAuthor(name, url, iconURL);
return this;
}
public void queue(TextChannel channel) {
channel.sendMessage(builder.build()).queue();
}