summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormdway <romangraef@gmail.com>2017-09-18 15:45:36 +0200
committermdway <romangraef@gmail.com>2017-09-18 15:45:36 +0200
commitd3f212f5f5d6377c3defa0864a9237075052e079 (patch)
treeaf8e4870be8d2da28ca562ee950c14cd06d9e764 /src
parent2db44377a72fee1aaf05ecee05a67ff576f6fee3 (diff)
downloadSelfbot-d3f212f5f5d6377c3defa0864a9237075052e079.tar.gz
Selfbot-d3f212f5f5d6377c3defa0864a9237075052e079.tar.bz2
Selfbot-d3f212f5f5d6377c3defa0864a9237075052e079.zip
Intitial stuff
Diffstat (limited to 'src')
-rw-r--r--src/main/java/de/romjaki/selfbot/Main.java18
-rw-r--r--src/main/java/de/romjaki/selfbot/MessageListener.java62
-rw-r--r--src/main/java/de/romjaki/selfbot/Util.java5
3 files changed, 62 insertions, 23 deletions
diff --git a/src/main/java/de/romjaki/selfbot/Main.java b/src/main/java/de/romjaki/selfbot/Main.java
index 5225df4..093f0b3 100644
--- a/src/main/java/de/romjaki/selfbot/Main.java
+++ b/src/main/java/de/romjaki/selfbot/Main.java
@@ -1,10 +1,7 @@
package de.romjaki.selfbot;
import jdk.nashorn.api.scripting.NashornScriptEngineFactory;
-import net.dv8tion.jda.client.JDAClientBuilder;
-import net.dv8tion.jda.core.AccountType;
-import net.dv8tion.jda.core.JDA;
-import net.dv8tion.jda.core.JDABuilder;
+import net.dv8tion.jda.core.*;
import net.dv8tion.jda.core.exceptions.RateLimitedException;
import net.dv8tion.jda.core.utils.SimpleLog;
@@ -26,21 +23,18 @@ public class Main {
}
public static void main(String[] args) {
- Config c = Config.getConfig(String.join(" ", args));
+ System.out.println(JDAInfo.VERSION);
+ System.out.println(System.getProperty("config.file"));
+ Config c = Config.getConfig(System.getProperty("config.file"));
System.out.println(c.TOKEN);
jda = null;
try {
if (c.AUTH_METHOD.equalsIgnoreCase("TOKEN")) {
jda = new JDABuilder(AccountType.CLIENT)
.setToken(c.TOKEN)
+ .setStatus(OnlineStatus.INVISIBLE)
.addEventListener(new MessageListener(c))
.buildBlocking();
- } else {
- jda = new JDAClientBuilder()
- .setEmail(c.MAIL)
- .setPassword(c.PASSWORD)
- .addListener(new MessageListener(c))
- .buildBlocking().getJDA();
}
} catch (LoginException | RateLimitedException | InterruptedException e) {
SimpleLog.getLog("startup").fatal(String.format("Failed to connect: %s", e));
@@ -71,7 +65,7 @@ public class Main {
se.eval("var imports = new JavaImporter(" +
"java.nio.file," +
"java.lang," +
- "java.util.stream,"+
+ "java.util.stream," +
"java.lang.management," +
"java.text," +
"java.sql," +
diff --git a/src/main/java/de/romjaki/selfbot/MessageListener.java b/src/main/java/de/romjaki/selfbot/MessageListener.java
index 94465ae..2631f07 100644
--- a/src/main/java/de/romjaki/selfbot/MessageListener.java
+++ b/src/main/java/de/romjaki/selfbot/MessageListener.java
@@ -1,10 +1,7 @@
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.MessageEmbed;
-import net.dv8tion.jda.core.entities.MessageHistory;
+import net.dv8tion.jda.core.entities.*;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import net.dv8tion.jda.core.events.message.guild.react.GenericGuildMessageReactionEvent;
import net.dv8tion.jda.core.hooks.ListenerAdapter;
@@ -19,7 +16,6 @@ import java.text.SimpleDateFormat;
import java.util.*;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
-import java.util.regex.Pattern;
import static de.romjaki.selfbot.Main.jda;
import static java.util.concurrent.TimeUnit.SECONDS;
@@ -29,8 +25,9 @@ import static java.util.concurrent.TimeUnit.SECONDS;
*/
public class MessageListener extends ListenerAdapter {
private static final Rot rotter = new Rot();
+ private static final String AFK_IMAGE = "http://unisci24.com/data_images/wlls/2/174841-afk.jpg";
+ static boolean AFK = false;
static AtomicInteger name = new AtomicInteger(0);
- static Pattern regionalPattern = Pattern.compile("regional_indicator_(?<char>[a-z])", Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
private static String SANDUHRDINGS = " -`\n" +
" .o+`\n" +
" `ooo/\n" +
@@ -123,8 +120,27 @@ public class MessageListener extends ListenerAdapter {
@Override
public void onMessageReceived(MessageReceivedEvent event) {
if (!event.getAuthor().equals(event.getJDA().getSelfUser())) {
+ if (AFK && event.getMessage().getMentionedUsers().contains(jda.getSelfUser())) {
+ event.getChannel().sendMessage(new EmbedBuilder()
+ .setColor(Color.green)
+ .setImage(AFK_IMAGE)
+ .setTitle("AFK")
+ .setDescription(jda.getSelfUser().getAsMention() + " is AFK.")
+ .setFooter("This afk-disclaimer was triggered because you mentioned " + jda.getSelfUser().getAsMention(), jda.getSelfUser().getEffectiveAvatarUrl())
+ .build()).queue(message -> message.delete().queueAfter(20, SECONDS));
+ }
return;
}
+ List<MessageEmbed> embeds = event.getMessage().getEmbeds();
+ boolean containsAfk = false;
+ for (MessageEmbed embed : embeds) {
+ if (embed.getTitle().toLowerCase().contains("afk")) {
+ containsAfk = true;
+ }
+ }
+ if (!containsAfk && AFK) {
+ AFK = false;
+ }
Message message = event.getMessage();
String raw = message.getRawContent();
Message mes = null;
@@ -174,6 +190,14 @@ public class MessageListener extends ListenerAdapter {
t.start();
mes = null;
}
+ if (raw.matches("(?is)^::moveto\\s.*")) {
+ mes = moveTo(event);
+ }
+ if (raw.matches("(?is)^::afk.*")) {
+ AFK = true;
+ event.getMessage().delete().queue();
+ mes = null;
+ }
if (raw.matches("(?is)^::hangman\\s.*")) {
mes = hangman(event);
}
@@ -183,6 +207,32 @@ public class MessageListener extends ListenerAdapter {
}
+ private Message moveTo(MessageReceivedEvent event) {
+ Message m = event.getMessage();
+ String[] parts = m.getRawContent().split("\\s+", 3);
+ if (parts.length < 2) {
+ m.editMessage(new EmbedBuilder()
+ .setTitle("MOVE FAILED")
+ .setDescription("Missing category")
+ .build()).queue();
+ return m;
+ }
+ String cat = parts[1].replaceAll("#|>|<", "");
+ String reason = "Moved.";
+ if (parts.length == 3) {
+ reason = parts[2];
+ }
+ TextChannel toMove = event.getTextChannel();
+ Category moveTo = event.getGuild().getCategoryById(cat);
+ toMove.getManager().setParent(moveTo).reason(reason).queue();
+ m.editMessage(new EmbedBuilder()
+ .setTitle("MOVE SUCCEEDED")
+ .setDescription("Moved " + toMove.getAsMention() + " to <#" + moveTo.getId() + ">")
+ .setColor(Color.green)
+ .build()).queue();
+ return m;
+ }
+
private Message hangman(MessageReceivedEvent event) {
SimpleLog.getLog("info").info("in hangman");
String word = event.getMessage().getContent().replaceAll("(?is)^[>:]:hangman\\s+", "");
diff --git a/src/main/java/de/romjaki/selfbot/Util.java b/src/main/java/de/romjaki/selfbot/Util.java
index 892ca15..a41c5cd 100644
--- a/src/main/java/de/romjaki/selfbot/Util.java
+++ b/src/main/java/de/romjaki/selfbot/Util.java
@@ -1,29 +1,24 @@
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");
}