diff options
30 files changed, 861 insertions, 0 deletions
diff --git a/.idea/artifacts/Selfbot_jar.xml b/.idea/artifacts/Selfbot_jar.xml new file mode 100644 index 0000000..9a321aa --- /dev/null +++ b/.idea/artifacts/Selfbot_jar.xml @@ -0,0 +1,10 @@ +<component name="ArtifactManager"> + <artifact type="jar" name="Selfbot:jar"> + <output-path>$PROJECT_DIR$/out/artifacts/Selfbot_jar</output-path> + <root id="archive" name="Selfbot.jar"> + <element id="module-output" name="Selfbot" /> + <element id="extracted-dir" path="$APPLICATION_HOME_DIR$/redist/annotations-java8.jar" path-in-jar="/" /> + <element id="extracted-dir" path="$PROJECT_DIR$/../discordjda/JDA-3.0.0_157-withDependencies.jar" path-in-jar="/" /> + </root> + </artifact> +</component>
\ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..8e66cc3 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="CompilerConfiguration"> + <annotationProcessing> + <profile name="Maven default annotation processors profile" enabled="true"> + <sourceOutputDir name="target/generated-sources/annotations" /> + <sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> + <outputRelativeToContentRoot value="true" /> + <module name="Selfbot" /> + </profile> + </annotationProcessing> + <bytecodeTargetLevel> + <module name="Selfbot" target="1.8" /> + </bytecodeTargetLevel> + </component> +</project>
\ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml new file mode 100644 index 0000000..1c24f9a --- /dev/null +++ b/.idea/kotlinc.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="KotlinCommonCompilerArguments"> + <option name="languageVersion" value="1.1" /> + <option name="apiVersion" value="1.1" /> + </component> +</project>
\ No newline at end of file diff --git a/.idea/libraries/JDA_3_1_0_204_javadoc.xml b/.idea/libraries/JDA_3_1_0_204_javadoc.xml new file mode 100644 index 0000000..2b515a5 --- /dev/null +++ b/.idea/libraries/JDA_3_1_0_204_javadoc.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="JDA-3.1.0_204-javadoc"> + <CLASSES> + <root url="jar://$PROJECT_DIR$/../JDA-3.1.0_204-withDependencies.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$PROJECT_DIR$/../JDA-3.1.0_204-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$PROJECT_DIR$/../JDA-3.1.0_204-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__com_mashape_unirest_unirest_java_1_4_9.xml b/.idea/libraries/Maven__com_mashape_unirest_unirest_java_1_4_9.xml new file mode 100644 index 0000000..d7792cc --- /dev/null +++ b/.idea/libraries/Maven__com_mashape_unirest_unirest_java_1_4_9.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: com.mashape.unirest:unirest-java:1.4.9"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/com/mashape/unirest/unirest-java/1.4.9/unirest-java-1.4.9.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/com/mashape/unirest/unirest-java/1.4.9/unirest-java-1.4.9-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/com/mashape/unirest/unirest-java/1.4.9/unirest-java-1.4.9-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__com_neovisionaries_nv_websocket_client_2_0.xml b/.idea/libraries/Maven__com_neovisionaries_nv_websocket_client_2_0.xml new file mode 100644 index 0000000..40e5e15 --- /dev/null +++ b/.idea/libraries/Maven__com_neovisionaries_nv_websocket_client_2_0.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: com.neovisionaries:nv-websocket-client:2.0"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/com/neovisionaries/nv-websocket-client/2.0/nv-websocket-client-2.0.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/com/neovisionaries/nv-websocket-client/2.0/nv-websocket-client-2.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/com/neovisionaries/nv-websocket-client/2.0/nv-websocket-client-2.0-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__commons_codec_commons_codec_1_9.xml b/.idea/libraries/Maven__commons_codec_commons_codec_1_9.xml new file mode 100644 index 0000000..a66d039 --- /dev/null +++ b/.idea/libraries/Maven__commons_codec_commons_codec_1_9.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: commons-codec:commons-codec:1.9"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.9/commons-codec-1.9.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.9/commons-codec-1.9-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.9/commons-codec-1.9-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__commons_logging_commons_logging_1_2.xml b/.idea/libraries/Maven__commons_logging_commons_logging_1_2.xml new file mode 100644 index 0000000..eab40b3 --- /dev/null +++ b/.idea/libraries/Maven__commons_logging_commons_logging_1_2.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: commons-logging:commons-logging:1.2"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.2/commons-logging-1.2.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.2/commons-logging-1.2-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.2/commons-logging-1.2-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__net_dv8tion_JDA_3_1_1_212.xml b/.idea/libraries/Maven__net_dv8tion_JDA_3_1_1_212.xml new file mode 100644 index 0000000..c33b566 --- /dev/null +++ b/.idea/libraries/Maven__net_dv8tion_JDA_3_1_1_212.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: net.dv8tion:JDA:3.1.1_212"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/net/dv8tion/JDA/3.1.1_212/JDA-3.1.1_212.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/net/dv8tion/JDA/3.1.1_212/JDA-3.1.1_212-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/net/dv8tion/JDA/3.1.1_212/JDA-3.1.1_212-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__net_java_dev_jna_jna_4_4_0.xml b/.idea/libraries/Maven__net_java_dev_jna_jna_4_4_0.xml new file mode 100644 index 0000000..497fb5f --- /dev/null +++ b/.idea/libraries/Maven__net_java_dev_jna_jna_4_4_0.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: net.java.dev.jna:jna:4.4.0"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/net/java/dev/jna/jna/4.4.0/jna-4.4.0.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/net/java/dev/jna/jna/4.4.0/jna-4.4.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/net/java/dev/jna/jna/4.4.0/jna-4.4.0-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__net_sf_trove4j_trove4j_3_0_3.xml b/.idea/libraries/Maven__net_sf_trove4j_trove4j_3_0_3.xml new file mode 100644 index 0000000..72d4d7e --- /dev/null +++ b/.idea/libraries/Maven__net_sf_trove4j_trove4j_3_0_3.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: net.sf.trove4j:trove4j:3.0.3"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_collections4_4_1.xml b/.idea/libraries/Maven__org_apache_commons_commons_collections4_4_1.xml new file mode 100644 index 0000000..1e0b53d --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_collections4_4_1.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: org.apache.commons:commons-collections4:4.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-collections4/4.1/commons-collections4-4.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-collections4/4.1/commons-collections4-4.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-collections4/4.1/commons-collections4-4.1-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_5.xml b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_5.xml new file mode 100644 index 0000000..666266c --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_5.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: org.apache.commons:commons-lang3:3.5"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_httpcomponents_httpasyncclient_4_1_1.xml b/.idea/libraries/Maven__org_apache_httpcomponents_httpasyncclient_4_1_1.xml new file mode 100644 index 0000000..8484ecb --- /dev/null +++ b/.idea/libraries/Maven__org_apache_httpcomponents_httpasyncclient_4_1_1.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: org.apache.httpcomponents:httpasyncclient:4.1.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpasyncclient/4.1.1/httpasyncclient-4.1.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpasyncclient/4.1.1/httpasyncclient-4.1.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpasyncclient/4.1.1/httpasyncclient-4.1.1-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_2.xml b/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_2.xml new file mode 100644 index 0000000..fdb7ead --- /dev/null +++ b/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_2.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: org.apache.httpcomponents:httpclient:4.5.2"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_4.xml b/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_4.xml new file mode 100644 index 0000000..3a5aa19 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_4.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: org.apache.httpcomponents:httpcore:4.4.4"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.4/httpcore-4.4.4.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.4/httpcore-4.4.4-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.4/httpcore-4.4.4-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_nio_4_4_4.xml b/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_nio_4_4_4.xml new file mode 100644 index 0000000..1dab39e --- /dev/null +++ b/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_nio_4_4_4.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: org.apache.httpcomponents:httpcore-nio:4.4.4"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore-nio/4.4.4/httpcore-nio-4.4.4.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore-nio/4.4.4/httpcore-nio-4.4.4-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore-nio/4.4.4/httpcore-nio-4.4.4-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_2.xml b/.idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_2.xml new file mode 100644 index 0000000..4b2025a --- /dev/null +++ b/.idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_2.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: org.apache.httpcomponents:httpmime:4.5.2"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpmime/4.5.2/httpmime-4.5.2.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpmime/4.5.2/httpmime-4.5.2-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpmime/4.5.2/httpmime-4.5.2-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/libraries/Maven__org_json_json_20160810.xml b/.idea/libraries/Maven__org_json_json_20160810.xml new file mode 100644 index 0000000..774f062 --- /dev/null +++ b/.idea/libraries/Maven__org_json_json_20160810.xml @@ -0,0 +1,13 @@ +<component name="libraryTable"> + <library name="Maven: org.json:json:20160810"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/json/json/20160810/json-20160810.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/json/json/20160810/json-20160810-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/json/json/20160810/json-20160810-sources.jar!/" /> + </SOURCES> + </library> +</component>
\ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..5755a99 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="MavenProjectsManager"> + <option name="originalFiles"> + <list> + <option value="$PROJECT_DIR$/pom.xml" /> + </list> + </option> + </component> + <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK"> + <output url="file://$PROJECT_DIR$/out" /> + </component> +</project>
\ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..3decb3b --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/Selfbot.iml" filepath="$PROJECT_DIR$/Selfbot.iml" /> + </modules> + </component> +</project>
\ No newline at end of file diff --git a/Selfbot.iml b/Selfbot.iml new file mode 100644 index 0000000..34029bd --- /dev/null +++ b/Selfbot.iml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="false"> + <output url="file://$MODULE_DIR$/target/classes" /> + <output-test url="file://$MODULE_DIR$/target/test-classes" /> + <content url="file://$MODULE_DIR$"> + <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> + <excludeFolder url="file://$MODULE_DIR$/target" /> + </content> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="module-library"> + <library> + <CLASSES> + <root url="jar://$APPLICATION_HOME_DIR$/redist/annotations-java8.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> + </orderEntry> + <orderEntry type="library" name="JDA-3.1.0_204-javadoc" level="project" /> + <orderEntry type="library" name="Maven: net.dv8tion:JDA:3.1.1_212" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.commons:commons-lang3:3.5" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.commons:commons-collections4:4.1" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: org.json:json:20160810" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: net.sf.trove4j:trove4j:3.0.3" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: net.java.dev.jna:jna:4.4.0" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: com.neovisionaries:nv-websocket-client:2.0" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: com.mashape.unirest:unirest-java:1.4.9" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpclient:4.5.2" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpcore:4.4.4" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: commons-logging:commons-logging:1.2" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: commons-codec:commons-codec:1.9" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpasyncclient:4.1.1" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpcore-nio:4.4.4" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpmime:4.5.2" level="project" /> + </component> +</module>
\ No newline at end of file @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>discordjda</groupId> + <artifactId>Selfbot</artifactId> + <version>1.0-SNAPSHOT</version> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.8</source> + <target>1.8</target> + </configuration> + </plugin> + </plugins> + </build> + <dependencies> + <dependency> + <groupId>net.dv8tion</groupId> + <artifactId>JDA</artifactId> + <version>${jda.version}</version> + </dependency> + </dependencies> + + <repositories> + <repository> + <id>jcenter</id> + <name>jcenter-bintray</name> + <url>http://jcenter.bintray.com</url> + </repository> + </repositories> + + <properties> + <jda.version>3.1.1_212</jda.version> + </properties> + +</project>
\ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000..7d5fa1c --- /dev/null +++ b/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: de.romjaki.selfbot.Main + diff --git a/src/main/java/de/romjaki/selfbot/Config.java b/src/main/java/de/romjaki/selfbot/Config.java new file mode 100644 index 0000000..26bbd38 --- /dev/null +++ b/src/main/java/de/romjaki/selfbot/Config.java @@ -0,0 +1,85 @@ +package de.romjaki.selfbot; + +import net.dv8tion.jda.core.utils.SimpleLog; + +import java.io.*; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.Scanner; +import java.util.stream.Stream; + +/** + * Created by RGR on 21.05.2017. + */ +public class Config { + @Configurable + public String TOKEN; + @Configurable + public String NAME; + @Configurable + public String WEBLINK; + + + private Config() { + } + + public static Config getConfig(String file) { + return getConfig(new File(file)); + } + + public static Config getConfig(File file) { + if (file.isDirectory()) { + SimpleLog.getLog("startup").fatal("Config file is a directory"); + System.exit(1); + } + try (Scanner s = new Scanner(file)) { + Config c = new Config(); + Class<? extends Config> clazz = c.getClass(); + while (s.hasNextLine()) { + String line = s.nextLine(); + String[] tmp = line.split(":", 2); + String key = tmp[0].trim(); + String val = tmp[1].trim(); + if (val.isEmpty()) continue; + try { + Field f = clazz.getField(key.toUpperCase()); + if (f == null || !f.isAnnotationPresent(Configurable.class) || Modifier.isStatic(f.getModifiers())) + continue; + f.set(c, val); + } catch (Exception e) { + continue; + } + } + return c; + } catch (FileNotFoundException e) { + SimpleLog.getLog("startup").fatal("Config not found. Trying to generate file. Fill in the information and restart."); + if (!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); + if (!file.getParentFile().exists()) { + SimpleLog.getLog("startup").fatal(String.format("Failed to create config directory. %s", e)); + System.exit(1); + } + } + if (!file.exists()) { + Config.writeTemplateToFile(file); + } + System.exit(1); + } + return null; + } + + private static void writeTemplateToFile(File file) { + try (PrintStream ps = new PrintStream(new BufferedOutputStream(new FileOutputStream(file)))) { + ps.print(buildTemplate()); + } catch (IOException e) { + SimpleLog.getLog("startup").fatal(String.format("Failed to write template to file. %s", e)); + System.exit(1); + } + } + + private static String buildTemplate() { + StringBuilder sb = new StringBuilder(); + Stream.of(Config.class.getFields()).forEach(s -> sb.append(s.getName().toUpperCase()).append(':').append(System.lineSeparator())); + return sb.toString(); + } +} diff --git a/src/main/java/de/romjaki/selfbot/Configurable.java b/src/main/java/de/romjaki/selfbot/Configurable.java new file mode 100644 index 0000000..f690a4a --- /dev/null +++ b/src/main/java/de/romjaki/selfbot/Configurable.java @@ -0,0 +1,14 @@ +package de.romjaki.selfbot; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Created by RGR on 21.05.2017. + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +public @interface Configurable { +} diff --git a/src/main/java/de/romjaki/selfbot/Main.java b/src/main/java/de/romjaki/selfbot/Main.java new file mode 100644 index 0000000..69ccdbc --- /dev/null +++ b/src/main/java/de/romjaki/selfbot/Main.java @@ -0,0 +1,34 @@ +package de.romjaki.selfbot; + +import net.dv8tion.jda.core.AccountType; +import net.dv8tion.jda.core.JDA; +import net.dv8tion.jda.core.JDABuilder; +import net.dv8tion.jda.core.exceptions.RateLimitedException; +import net.dv8tion.jda.core.utils.SimpleLog; + +import javax.security.auth.login.LoginException; + +/** + * Created by RGR on 21.05.2017. + */ +public class Main { + private Main() { + Util.singleton(Main.class); + } + + public static void main(String[] args) { + Config c = Config.getConfig(String.join(" ", args)); + JDA jda = null; + try { + jda = new JDABuilder(AccountType.CLIENT) + .setToken(c.TOKEN) + .addEventListener(new MessageListener(c)) + .buildAsync(); + } catch (LoginException | RateLimitedException e) { + SimpleLog.getLog("startup").fatal(String.format("Failed to connect: %s", e)); + System.exit(1); + } + + } + +} diff --git a/src/main/java/de/romjaki/selfbot/MessageListener.java b/src/main/java/de/romjaki/selfbot/MessageListener.java new file mode 100644 index 0000000..ac166e1 --- /dev/null +++ b/src/main/java/de/romjaki/selfbot/MessageListener.java @@ -0,0 +1,206 @@ +package de.romjaki.selfbot; + +import net.dv8tion.jda.core.EmbedBuilder; +import net.dv8tion.jda.core.entities.Game; +import net.dv8tion.jda.core.entities.Message; +import net.dv8tion.jda.core.entities.MessageHistory; +import net.dv8tion.jda.core.events.message.MessageReceivedEvent; +import net.dv8tion.jda.core.hooks.ListenerAdapter; +import net.dv8tion.jda.core.utils.SimpleLog; + +import java.awt.*; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Field; +import java.text.SimpleDateFormat; +import java.util.Date; + +import static java.util.concurrent.TimeUnit.SECONDS; + +/** + * Created by RGR on 21.05.2017. + */ +public class MessageListener extends ListenerAdapter { + private static final Rot rotter = new Rot(); + private Config config; + + public MessageListener(Config c) { + this.config = c; + } + + @Override + public void onMessageReceived(MessageReceivedEvent event) { + if (!event.getAuthor().equals(event.getJDA().getSelfUser())) { + return; + } + Message message = event.getMessage(); + String raw = message.getRawContent(); + Message mes = null; + boolean deleteAfter = false; + if (raw.startsWith(":>")) { + raw = raw.replaceFirst(":>", "::"); + deleteAfter = true; + } + if (raw.matches("(?si)^::embed\\s.*")) { + mes = embed(event); + } + if (raw.matches("(?is)^::cite\\s.*")) { + mes = cite(event); + } + if (raw.matches("(?si)^::game\\s.*")) { + mes = game(event); + } + if (raw.matches("(?is)^::time.*")) { + mes = time(event); + } + if (raw.matches("(?is)^::google\\s.*")) { + try { + mes = google(event); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } + if (raw.matches("(?is)^::spam\\s.*")) { + mes = spam(event); + } + if (raw.matches("(?is)^::rot\\s.+")) { + mes = rot(event); + } + if (deleteAfter && mes != null) { + mes.delete().queueAfter(5, SECONDS); + } + } + + private Message rot(MessageReceivedEvent event) { + String[] parts = event.getMessage().getRawContent().replaceFirst("(?i)^:[:>]rot\\s+", "").split("\\s+", 2); + event.getMessage().delete().queue(); + if (parts.length < 2) { + return event.getChannel().sendMessage(new EmbedBuilder() + .setTitle("Error") + .setColor(Color.red) + .setDescription("Too few arguments: `::rot <rotN> <text>`") + .build()).complete(); + } + int rot = Integer.parseInt(parts[0]) % 26; + String message = parts[1]; + + return event.getChannel().sendMessage(rotter.encrypt(message, rot * 2, false)).complete(); + } + + private Message spam(MessageReceivedEvent event) { + String[] tmp = event.getMessage().getRawContent().replaceFirst("(?i)^:[:>]spam\\s+", "").split("\\s+", 2); + if (tmp.length == 0) { + return null; + } + String rep = ""; + int repc = 16; + if (tmp.length == 1) { + rep = tmp[0]; + } + if (tmp.length == 2) { + rep = tmp[1]; + repc = Integer.parseInt(tmp[0]); + } + if (repc > 0) { + StringBuilder txt = new StringBuilder(repc * rep.length()); + for (int i = 0; i < repc; i++) { + txt.append(rep + "\n"); + } + event.getMessage().delete().queue(); + SimpleLog.getLog("command").info(String.format("Command spam executed: {\"text\":\"%s\",count=%d}", rep, repc)); + return event.getChannel().sendMessage(txt.toString()).complete(); + } + if (repc < 0) { + SimpleLog.getLog("command").info(String.format("Command spam executed with separated messages: {\"text\":\"%s\",count=%d}", rep, -repc)); + event.getMessage().delete().queue(); + for (int i = 0; i < -repc; i++) { + event.getChannel().sendMessage(rep).queue(); + } + } + return null; + } + + private Message google(MessageReceivedEvent event) throws UnsupportedEncodingException { + String text = event.getMessage().getRawContent().replaceFirst("(?i)^:[:>]google\\s+", ""); + String raw = text.replace(' ', '+'); + EmbedBuilder embed = new EmbedBuilder(); + embed.setColor(Color.red); + embed.setTitle(text, "https://google.com/search?q=" + raw); + embed.setImage("https://lh4.googleusercontent.com/-v0soe-ievYE/AAAAAAAAAAI/AAAAAAADwG4/8CFr3X3I_Fs/s0-c-k-no-ns/photo.jpg"); + event.getMessage().delete().queue(); + SimpleLog.getLog("command").info(String.format("Executed command google: {text:\"%s\"", text)); + return event.getChannel().sendMessage(embed.build()).complete(); + } + + private Message time(MessageReceivedEvent event) { + EmbedBuilder embed = new EmbedBuilder(); + embed.setColor(Color.cyan); + embed.setTitle("Uhrzeit", "https://www.google.de/search?q=uhrzeit"); + embed.addField(":timer:", new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()), true); + event.getMessage().delete().queue(); + SimpleLog.getLog("command").info("Executed command time."); + Message ret = event.getChannel().sendMessage(embed.build()).complete(); + return ret; + } + + private Message game(MessageReceivedEvent event) { + String line = event.getMessage().getRawContent(); + String args = line.replaceFirst("(?i)^:[>:]game\\s+", ""); + Game g = Game.of(args); + event.getJDA().getPresence().setGame(g); + SimpleLog.getLog("command").info(String.format("Executed command game: {name: \"%s\"}", args)); + event.getMessage().delete().queue(); + return null; + } + + + private Message cite(MessageReceivedEvent event) { + String line = event.getMessage().getRawContent(); + String[] args = line.replaceFirst("^(?i):[:>]cite\\s+", "").split("\\s+", 2); + EmbedBuilder embed = new EmbedBuilder(); + MessageHistory h = event.getChannel().getHistoryAround(args[0], 2).complete(); + Message cited = h.getMessageById(args[0]); + embed.setAuthor(cited.getAuthor().getName(), "https://discordapp.com", cited.getAuthor().getAvatarUrl()); + embed.setColor(Color.CYAN); + embed.setDescription(cited.getContent()); + embed.addField("**" + event.getJDA().getSelfUser().getName() + "** kommentiert:", args[1], true); + event.getMessage().delete().queue(); + SimpleLog.getLog("command").info(String.format("Executed command cite: {messageId: %s, description:\"%s\"}", cited.getId(), args[1])); + return event.getChannel().sendMessage(embed.build()).complete(); + } + + private Message embed(MessageReceivedEvent event) { + + String line = event.getMessage().getRawContent(); + String[] args = line.replaceFirst("^(?i):[>:]embed\\s+", "").split("\\s+", 2); + EmbedBuilder embed = new EmbedBuilder(); + String text = args[1]; + String color = args[0]; + Color col = Color.green; + if (color.startsWith("#")) { + col = new Color(Integer.parseInt(color.replaceFirst("#", ""), 16)); + } else if (color.matches("^(?i)[a-z]+$")) { + Class<Color> clazz = Color.class; + try { + Field f = clazz.getField(color.toLowerCase()); + col = (Color) f.get(null); + } catch (Exception e) { + SimpleLog.getLog("command").info(String.format("Color %s not found.", color)); + } + } else if (color.matches("^[0-9]+$")) { + col = new Color(Integer.valueOf(color)); + } else { + SimpleLog.getLog("command").info(String.format("No match found: %s", color)); + } + embed.setColor(col); + if (text.contains("\n")) { + String[] tmp = text.split("\n", 2); + embed.setTitle(tmp[0], config.WEBLINK); + embed.setDescription(tmp[1]); + } else { + embed.setDescription(text); + } + event.getMessage().delete().queue(); + SimpleLog.getLog("command").info(String.format("Executed \"embed\" command: {color:\"%s\",text:\"%s\"}", col, text)); + return event.getChannel().sendMessage(embed.build()).complete(); + } +} diff --git a/src/main/java/de/romjaki/selfbot/Rot.java b/src/main/java/de/romjaki/selfbot/Rot.java new file mode 100644 index 0000000..5dfb44f --- /dev/null +++ b/src/main/java/de/romjaki/selfbot/Rot.java @@ -0,0 +1,140 @@ +package de.romjaki.selfbot; + +import java.util.ArrayList; + +/** + * COMP 249 - Assignment 4 Q1 + * Due Friday, April 11, 2014 + * + * Rot-N algorithm, Encryption / Decryption + * @version 1.0 + * */ +public class Rot { + private ArrayList<String> letters; + private ArrayList<String> encryptedLetters; + + public Rot(){ + letters = new ArrayList<String>(); + encryptedLetters = new ArrayList<String>(); + } + + /** + * Encrypt text + * @param message Message to encrypt + * @param rotN Rot number + * @param encryptDigit True or False + * @return encrypted message + * */ + public String encrypt(String message, int rotN, boolean encryptDigit){ + String out = ""; + char encryptedCurrent; + char current; + int typeAlpha; + + //clear arrays + letters.clear(); + encryptedLetters.clear(); + + for(int i=0; i<message.length();i++){ + current = message.charAt(i); + if((typeAlpha = typeAlpha(current)) != 0){ + encryptedCurrent = (char) (current + rotN); + if(typeAlpha == 1 && encryptedCurrent > 'z' || typeAlpha == 2 && encryptedCurrent > 'Z') + encryptedCurrent -= 'z' - 'a' + 1; + }else if(encryptDigit && isNumeric(current)){ + encryptedCurrent = (char) (current + rotN%10); + if(encryptedCurrent > '9') + encryptedCurrent -= '9' - '0' + 1; + } else { + encryptedCurrent = current; + } + + if((typeAlpha != 0 || (isNumeric(current) && encryptDigit)) && letters.indexOf(current+"") == -1){ + letters.add(current+""); + encryptedLetters.add(encryptedCurrent+""); + } + + out += encryptedCurrent; + } + return out; + } + + /** + * Decrypt text + * @param message Message to decrypt + * @param rotN Rot number + * @param decryptDigit True or False + * @return decrypted message + * */ + public String decrypt(String message, int rotN, boolean decryptDigit){ + String out = ""; + char encryptedCurrent; + char current; + int typeAlpha; + + //clear arrays + letters.clear(); + encryptedLetters.clear(); + + for(int i=0; i<message.length();i++){ + current = message.charAt(i); + if((typeAlpha = typeAlpha(current)) != 0){ + encryptedCurrent = (char) (current - rotN); + if(typeAlpha == 1 && encryptedCurrent < 'a' || typeAlpha == 2 && encryptedCurrent < 'A') + encryptedCurrent += 'z' - 'a' + 1; + }else if(decryptDigit && isNumeric(current)){ + encryptedCurrent = (char) (current - rotN%10); + if(encryptedCurrent < '0') + encryptedCurrent += '9' - '0' + 1; + } else { + encryptedCurrent = current; + } + + if((typeAlpha != 0 || (isNumeric(current) && decryptDigit)) && letters.indexOf(current+"") == -1){ + letters.add(current+""); + encryptedLetters.add(encryptedCurrent+""); + } + + out += encryptedCurrent; + } + return out; + } + + /** + * Check if the character is alphabetic + * @param c Character + * @return 1 => Lowercase, 2 => Uppercase, 3 => Not alpha + * */ + public int typeAlpha(char c) { + if(c >= 'a' && c <= 'z') + return 1; + if(c >= 'A' && c <= 'Z') + return 2; + return 0; + } + + /** + * Check if character is a number + * @param c Character + * @return true or false + * */ + public boolean isNumeric(char c) { + return c >= '0' && c <= '9'; + } + + /** + * Get original letters + * @return original letters + * */ + public ArrayList<String> getLetters(){ + return letters; + } + + /** + * Get encrypted letters + * @return encrypted/decrypted letters + * */ + public ArrayList<String> getEncryptedLetters(){ + return encryptedLetters; + } +}
\ No newline at end of file diff --git a/src/main/java/de/romjaki/selfbot/Util.java b/src/main/java/de/romjaki/selfbot/Util.java new file mode 100644 index 0000000..892ca15 --- /dev/null +++ b/src/main/java/de/romjaki/selfbot/Util.java @@ -0,0 +1,34 @@ +package de.romjaki.selfbot; + +import net.dv8tion.jda.core.entities.TextChannel; +import org.jetbrains.annotations.Contract; + +/** + * Created by RGR on 19.05.2017. + */ +public class Util { + @Contract(value = " -> fail", pure = true) + private Util() { + Util.singleton(Util.class); + } + + @Contract(pure = true, value = "_ -> fail") + public static void singleton(Class<?> clazz) { + throw new Error("No " + clazz.toGenericString() + " instances for you!"); + } + + @Contract(pure = true, value = "null -> fail") + public static boolean isBotChannel(TextChannel channel) { + return channel.getName().toLowerCase().contains("bot"); + } + + + @Contract(pure = true, value = "null -> fail ; !null -> !null") + public static String escape(String join) { + return join.replace("\\", "\\\\").replace("\"", "\\\"").replace("\n", "\\n").replace("\t", "\\t"); + } + + public static int clamp(int min, int max, int val) { + return val < min ? min : (val > max ? max : val); + } +} |