diff --git a/pom.xml b/pom.xml
index d7a21b9..fcd89b3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
net.dv8tion
JDA
- 4.0.0_61
+ 4.0.0_62
org.json
diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java
index dcb566e..eede5b6 100644
--- a/src/main/java/com/bbn/hadder/Hadder.java
+++ b/src/main/java/com/bbn/hadder/Hadder.java
@@ -38,10 +38,11 @@ public class Hadder {
builder.setActivity(Activity.streaming("on the BigBotNetwork", "https://twitch.tv/BigBotNetwork"));
builder.setToken(config.getBotToken());
+ HelpCommand helpCommand = new HelpCommand();
CommandHandler commandHandler = new CommandHandler(
List.of(
- new HelpCommand(),
+ helpCommand,
new TestCommand(),
new BanCommand(),
new PrefixCommand(),
@@ -69,15 +70,17 @@ public class Hadder {
new RoleCommand(),
new RulesCommand(),
new FeedbackCommand(),
- new LinkCommand()), config);
+ new LinkCommand()), config, helpCommand);
builder.addEventListeners(
new MentionListener(rethink),
new PrivateMessageListener(),
new CommandListener(rethink, commandHandler),
new GuildListener(rethink, config),
- new RulesListener(rethink),
- new ReadyListener(rethink, config));
+ new ReadyListener(rethink, config),
+ new LinkListener(rethink),
+ new RulesListener(rethink));
+
try {
shardManager = builder.build();
diff --git a/src/main/java/com/bbn/hadder/Rethink.java b/src/main/java/com/bbn/hadder/Rethink.java
index c2165b9..e6ce4d6 100644
--- a/src/main/java/com/bbn/hadder/Rethink.java
+++ b/src/main/java/com/bbn/hadder/Rethink.java
@@ -116,6 +116,10 @@ public class Rethink {
}
public String addLinkedGuild(String guildid, String linkid) {
+ JSONArray links = getLinks(guildid);
+ for (int i = 0; links.length()>i; i++) {
+ if (links.getString(i).equals(linkid)) return null;
+ }
return this.update("server", guildid, "links", this.getLinks(guildid).put(linkid).toString());
}
diff --git a/src/main/java/com/bbn/hadder/commands/CommandEvent.java b/src/main/java/com/bbn/hadder/commands/CommandEvent.java
index f45ca7e..577cda3 100644
--- a/src/main/java/com/bbn/hadder/commands/CommandEvent.java
+++ b/src/main/java/com/bbn/hadder/commands/CommandEvent.java
@@ -1,6 +1,7 @@
package com.bbn.hadder.commands;
import com.bbn.hadder.Rethink;
+import com.bbn.hadder.commands.general.HelpCommand;
import com.bbn.hadder.core.CommandHandler;
import com.bbn.hadder.core.Config;
import net.dv8tion.jda.api.JDA;
@@ -14,19 +15,22 @@ public class CommandEvent extends MessageReceivedEvent {
private Rethink rethink;
private Config config;
private CommandHandler commandHandler;
+ private HelpCommand helpCommand;
- public CommandEvent(@Nonnull JDA api, long responseNumber, @Nonnull Message message, Config config, Rethink rethink, CommandHandler commandHandler) {
+ public CommandEvent(@Nonnull JDA api, long responseNumber, @Nonnull Message message, Config config, Rethink rethink, CommandHandler commandHandler, HelpCommand helpCommand) {
super(api, responseNumber, message);
this.config = config;
this.rethink = rethink;
this.commandHandler = commandHandler;
+ this.helpCommand = helpCommand;
}
- public CommandEvent(@Nonnull MessageReceivedEvent event, Config config, Rethink rethink, CommandHandler commandHandler) {
+ public CommandEvent(@Nonnull MessageReceivedEvent event, Config config, Rethink rethink, CommandHandler commandHandler, HelpCommand helpCommand) {
super(event.getJDA(), event.getResponseNumber(), event.getMessage());
this.config = config;
this.rethink = rethink;
this.commandHandler = commandHandler;
+ this.helpCommand = helpCommand;
}
public Rethink getRethink() {
@@ -37,6 +41,10 @@ public class CommandEvent extends MessageReceivedEvent {
return config;
}
+ public HelpCommand getHelpCommand() {
+ return helpCommand;
+ }
+
public CommandHandler getCommandHandler() {
return commandHandler;
}
diff --git a/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java b/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java
index 3649a12..8e52917 100644
--- a/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java
@@ -42,8 +42,7 @@ public class GifCommand implements Command {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR, builder).setTitle("Error").setDescription("Please try again with another term.").build()).queue();
}
} else {
- EmbedBuilder builder = new EmbedBuilder();
- event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setDescription("You have to write at least one search term!").build()).queue();
+ event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel());
}
}
diff --git a/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java b/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java
index 6b1e4e6..45d3b0e 100644
--- a/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java
@@ -1,10 +1,13 @@
package com.bbn.hadder.commands.general;
+import com.bbn.hadder.Rethink;
import com.bbn.hadder.commands.Command;
import com.bbn.hadder.commands.CommandEvent;
import com.bbn.hadder.utils.MessageEditor;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.entities.TextChannel;
+import net.dv8tion.jda.api.entities.User;
import java.util.ArrayList;
import java.util.HashMap;
@@ -45,14 +48,7 @@ public class HelpCommand implements Command {
for (Command cmd : event.getCommandHandler().getCommandList()) {
for (String label : cmd.labels()) {
if (label.toLowerCase().equals(args[0])) {
- if (!cmd.getClass().getPackageName().endsWith("owner") || (cmd.getClass().getPackageName().endsWith("owner") && (event.getAuthor().getId().equals("477141528981012511") || event.getAuthor().getId().equals("261083609148948488")))) {
- EmbedBuilder eb = new EmbedBuilder();
- String name = cmd.labels()[0];
- eb.setDescription(cmd.description()).setTitle(name.replaceFirst(String.valueOf(name.charAt(0)), String.valueOf(name.charAt(0)).toUpperCase()));
- eb.addField("Usage", event.getRethink().getUserPrefix(event.getAuthor().getId()) + cmd.labels()[0] + " " + cmd.usage(), false);
- new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, eb);
- event.getChannel().sendMessage(eb.build()).queue();
- }
+ sendHelp(cmd, event.getRethink(), event.getAuthor(), event.getTextChannel());
}
}
}
@@ -62,6 +58,18 @@ public class HelpCommand implements Command {
}
}
+ public void sendHelp(Command cmd, Rethink rethink, User author, TextChannel channel) {
+ if (!cmd.getClass().getPackageName().endsWith("owner") || (cmd.getClass().getPackageName().endsWith("owner") &&
+ (author.getId().equals("477141528981012511") || author.getId().equals("261083609148948488")))) {
+ EmbedBuilder eb = new EmbedBuilder();
+ String name = cmd.labels()[0];
+ eb.setDescription(cmd.description()).setTitle(name.replaceFirst(String.valueOf(name.charAt(0)), String.valueOf(name.charAt(0)).toUpperCase()));
+ eb.addField("Usage", rethink.getUserPrefix(author.getId()) + cmd.labels()[0] + " " + cmd.usage(), false);
+ new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, eb);
+ channel.sendMessage(eb.build()).queue();
+ }
+ }
+
@Override
public String[] labels() {
return new String[]{"help"};
diff --git a/src/main/java/com/bbn/hadder/commands/misc/ScreenshareCommand.java b/src/main/java/com/bbn/hadder/commands/misc/ScreenshareCommand.java
index 64de8dd..c9adbe0 100644
--- a/src/main/java/com/bbn/hadder/commands/misc/ScreenshareCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/misc/ScreenshareCommand.java
@@ -26,6 +26,7 @@ public class ScreenshareCommand implements Command {
event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR, new EmbedBuilder()
.setTitle("Wait, that's illegal")
.setDescription("This ID is invalid. \nMaybe you entered a wrong ID? \n\nNote: Make sure the Voice Channel is on this Guild.")).build()).queue();
+ event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel());
return;
}
}
@@ -51,17 +52,20 @@ public class ScreenshareCommand implements Command {
event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR, new EmbedBuilder()
.setTitle("You specified a wrong number!")).build()).queue();
+ event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel());
}
} catch (NumberFormatException e) {
event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR, new EmbedBuilder()
.setTitle("Wait, that's illegal")
.setDescription("This isn't a Number.")).build()).queue();
+ event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel());
}
}, event.getJDA(), event.getAuthor());
} else if (vcs.size()==0) {
event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR, new EmbedBuilder()
.setTitle("Hol' up")
.setDescription("There is no Voice Channel named like this. \n\nNote: Make sure the Voice Channel is on this Guild.")).build()).queue();
+ event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel());
} else {
event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder()
.setTitle("Here's your Url to share your Screen")
diff --git a/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java
index d85b936..07405a4 100644
--- a/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java
@@ -39,6 +39,7 @@ public class BanCommand implements Command {
} else if (event.getMessage().getMentionedMembers().size() == 0) {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setDescription("You have to mention at least one user!").build()).queue();
+ event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel());
} else if (event.getMessage().getMentionedMembers().size() > 1) {
for (int i = 0; i < event.getMessage().getMentionedMembers().size(); i++) {
Member member = event.getMessage().getMentionedMembers().get(i);
diff --git a/src/main/java/com/bbn/hadder/commands/moderation/ClearCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/ClearCommand.java
index 968830d..884c7d8 100644
--- a/src/main/java/com/bbn/hadder/commands/moderation/ClearCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/moderation/ClearCommand.java
@@ -38,6 +38,7 @@ public class ClearCommand implements Command {
} catch (NumberFormatException e) {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setDescription("You have to specify a number!").build()).queue();
+ event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel());
}
} else {
EmbedBuilder builder = new EmbedBuilder();
@@ -50,6 +51,7 @@ public class ClearCommand implements Command {
} else {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setDescription("You have to specify a number!").build()).queue();
+ event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel());
}
}
diff --git a/src/main/java/com/bbn/hadder/commands/moderation/GuildPrefixCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/GuildPrefixCommand.java
index be03e01..8407394 100644
--- a/src/main/java/com/bbn/hadder/commands/moderation/GuildPrefixCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/moderation/GuildPrefixCommand.java
@@ -26,6 +26,7 @@ public class GuildPrefixCommand implements Command {
} else {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setDescription("You have to set a prefix.").build()).queue();
+ event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel());
}
} else {
EmbedBuilder builder = new EmbedBuilder();
diff --git a/src/main/java/com/bbn/hadder/commands/moderation/KickCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/KickCommand.java
index 0b7a67d..36a7650 100644
--- a/src/main/java/com/bbn/hadder/commands/moderation/KickCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/moderation/KickCommand.java
@@ -40,6 +40,7 @@ public class KickCommand implements Command {
} else if (event.getMessage().getMentionedMembers().size() == 0) {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setDescription("You have to mention at least one user!").build()).queue();
+ event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel());
} else if (event.getMessage().getMentionedMembers().size() > 1) {
for (int i = 0; i < event.getMessage().getMentionedMembers().size(); i++) {
Member member = event.getMessage().getMentionedMembers().get(i);
diff --git a/src/main/java/com/bbn/hadder/commands/moderation/LinkCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/LinkCommand.java
index 925cf46..d33dd60 100644
--- a/src/main/java/com/bbn/hadder/commands/moderation/LinkCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/moderation/LinkCommand.java
@@ -2,21 +2,14 @@ package com.bbn.hadder.commands.moderation;
import com.bbn.hadder.commands.Command;
import com.bbn.hadder.commands.CommandEvent;
-import com.bbn.hadder.core.LinkUtils;
import com.bbn.hadder.utils.MessageEditor;
import net.dv8tion.jda.api.EmbedBuilder;
-import net.dv8tion.jda.api.MessageBuilder;
import net.dv8tion.jda.api.entities.Guild;
-import net.dv8tion.jda.api.entities.MessageReaction;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
public class LinkCommand implements Command {
@Override
public void executed(String[] args, CommandEvent event) {
- if (args.length == 0) return;
+ if (args.length == 0) event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel());
switch (args[0]) {
case "add":
@@ -32,8 +25,13 @@ public class LinkCommand implements Command {
linkguild = g;
}
}
- // TODO
- if (!found) return;
+ if (!found) {
+ event.getChannel().sendMessage(
+ new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO,
+ new EmbedBuilder().setTitle("Success!").setDescription("If i'm on this guild i sent a message to accept the link.")
+ ).build()).queue();
+ return;
+ }
// Check if the guild is the same
if (event.getGuild().getId().equals(args[1])) {
@@ -44,36 +42,36 @@ public class LinkCommand implements Command {
}
// Send poll to all connected guilds
- if (event.getRethink().getLinks(event.getGuild().getId()).length() > 0) {
- List reactions = new ArrayList<>();
- reactions.addAll(Arrays.asList("✅", "❌"));
- new LinkUtils().sendAll(
- event.getRethink().getLinks(event.getGuild().getId()), event.getJDA(),
- new MessageBuilder()
- .setEmbed(
- new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO,
- new EmbedBuilder()
- .setTitle(event.getGuild().getName() + " (" + event.getGuild().getId() + ") wants to add " + linkguild.getName() + " (" + linkguild.getId() + ")")
- .setDescription("Please vote if the Guild should be added.")).build()).build(),
- event.getJDA().getSelfUser(), reactions);
- } else {
- Guild finalLinkguild = linkguild;
- new Thread(() -> {
- if (event.getRethink().getLinkChannel(linkid).isEmpty()) {
- event.getRethink().setLinkChannel(linkid, finalLinkguild.createTextChannel("linkchannel").complete().getId());
- }
- // Send Request to link Guild
- event.getJDA().getTextChannelById(event.getRethink().getLinkChannel(linkid)).sendMessage(
- new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO,
- new EmbedBuilder().setTitle(event.getGuild().getName() + " (" + event.getGuild().getId() + ") wants to link guilds!")
- .setDescription("React with the reactions to accept or decline it")).build()
- ).queue(
- msg -> {
- msg.addReaction("✅").queue();
- msg.addReaction("❌").queue();
- }
- );
- }).start();
+ Guild finalLinkguild = linkguild;
+ new Thread(() -> {
+ if (event.getRethink().getLinkChannel(linkid).isEmpty()) {
+ event.getRethink().setLinkChannel(linkid, finalLinkguild.createTextChannel("linkchannel").complete().getId());
+ }
+ // Send Request to link Guild
+ event.getJDA().getTextChannelById(event.getRethink().getLinkChannel(linkid)).sendMessage(
+ new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO,
+ new EmbedBuilder().setTitle(event.getGuild().getName() + " (" + event.getGuild().getId() + ") wants to link guilds!")
+ .setDescription("React with the reactions to accept or decline it")).build()
+ ).queue(
+ msg -> {
+ msg.addReaction("✅").queue();
+ msg.addReaction("❌").queue();
+ }
+ );
+ }).start();
+
+
+ event.getChannel().sendMessage(
+ new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO,
+ new EmbedBuilder().setTitle("Success!").setDescription("If i'm on this guild i sent a message to accept the link.")
+ ).build()).queue();
+
+ break;
+
+ case "channel":
+ if (args.length == 2) {
+ event.getRethink().setLinkChannel(event.getGuild().getId(), args[1]);
+ event.getChannel().sendMessage(new EmbedBuilder().setTitle("Success").setDescription("Set the thing boi").build()).queue();
}
break;
diff --git a/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java
index f1216ff..4ab91b9 100644
--- a/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java
@@ -33,6 +33,7 @@ public class NickCommand implements Command {
} else {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setTitle("Missing arguments").setDescription("You have to specify a new nickname for the user(s).").build()).queue();
+ event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel());
}
} else {
EmbedBuilder builder = new EmbedBuilder();
@@ -52,6 +53,7 @@ public class NickCommand implements Command {
} else if (event.getMessage().getMentionedMembers().size() == 0) {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setDescription("You have to mention at least one user!").build()).queue();
+ event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel());
} else {
for (int i = 0; i < event.getMessage().getMentionedMembers().size(); i++) {
Member member = event.getMessage().getMentionedMembers().get(i);
diff --git a/src/main/java/com/bbn/hadder/commands/settings/PrefixCommand.java b/src/main/java/com/bbn/hadder/commands/settings/PrefixCommand.java
index 98e896d..70ea455 100644
--- a/src/main/java/com/bbn/hadder/commands/settings/PrefixCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/settings/PrefixCommand.java
@@ -20,6 +20,7 @@ public class PrefixCommand implements Command {
} else {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder).setDescription("You have to set a prefix.").build()).queue();
+ event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel());
}
}
diff --git a/src/main/java/com/bbn/hadder/core/CommandHandler.java b/src/main/java/com/bbn/hadder/core/CommandHandler.java
index 71c3a49..0fc435e 100644
--- a/src/main/java/com/bbn/hadder/core/CommandHandler.java
+++ b/src/main/java/com/bbn/hadder/core/CommandHandler.java
@@ -3,6 +3,7 @@ package com.bbn.hadder.core;
import com.bbn.hadder.Rethink;
import com.bbn.hadder.commands.Command;
import com.bbn.hadder.commands.CommandEvent;
+import com.bbn.hadder.commands.general.HelpCommand;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import java.util.List;
@@ -11,10 +12,12 @@ public class CommandHandler {
private List commandList;
private Config config;
+ private HelpCommand helpCommand;
- public CommandHandler(List commandList, Config config) {
+ public CommandHandler(List commandList, Config config, HelpCommand helpCommand) {
this.commandList = commandList;
this.config = config;
+ this.helpCommand = helpCommand;
}
public void handle(MessageReceivedEvent event, Rethink rethink, String prefix) {
@@ -27,7 +30,7 @@ public class CommandHandler {
if (argString.startsWith(" ")) argString = argString.replaceFirst(" ", "");
String[] args = argString.split(" ");
if (args.length>0&&args[0].equals("")) args = new String[0];
- cmd.executed(args, new CommandEvent(event, config, rethink, this));
+ cmd.executed(args, new CommandEvent(event, config, rethink, this, helpCommand));
return;
}
}
diff --git a/src/main/java/com/bbn/hadder/core/LinkUtils.java b/src/main/java/com/bbn/hadder/core/LinkUtils.java
index 216c148..1d5315a 100644
--- a/src/main/java/com/bbn/hadder/core/LinkUtils.java
+++ b/src/main/java/com/bbn/hadder/core/LinkUtils.java
@@ -3,10 +3,11 @@ package com.bbn.hadder.core;
import club.minnced.discord.webhook.WebhookClient;
import club.minnced.discord.webhook.WebhookClientBuilder;
import club.minnced.discord.webhook.send.WebhookEmbed;
-import club.minnced.discord.webhook.send.WebhookEmbedBuilder;
import club.minnced.discord.webhook.send.WebhookMessageBuilder;
+import com.bbn.hadder.Rethink;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.JDA;
+import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.*;
import org.json.JSONArray;
@@ -16,46 +17,50 @@ import java.util.concurrent.ExecutionException;
public class LinkUtils {
- public void sendAll(JSONArray jsonArray, JDA jda, Message message, User user, List reactions) {
+ public void sendAll(JSONArray jsonArray, JDA jda, Message message, User user, List reactions, Rethink rethink, boolean usedmessagebuilder) {
for (int i = 0; jsonArray.length() > i; i++) {
- this.send(message, jda.getTextChannelById(jsonArray.getString(i)), user, reactions);
+ this.send(message, jda.getTextChannelById(rethink.getLinkChannel(jsonArray.getString(i))), user, reactions, usedmessagebuilder);
}
}
- private void send(Message message, TextChannel channel, User user, List reactions) {
-
- channel.retrieveWebhooks().queue(
- webhooks -> {
- Webhook webhook=null;
- for (Webhook webhooktemp : webhooks) {
- if (webhooktemp.getOwner().equals(channel.getJDA().getSelfUser())) {
- webhook=webhooktemp;
+ private void send(Message message, TextChannel channel, User user, List reactions, boolean usedmessagebuilder) {
+ if (!channel.getGuild().getSelfMember().hasPermission(Permission.MANAGE_WEBHOOKS)) {
+ channel.sendMessage(new EmbedBuilder().setTitle("Wait a sec").setDescription("Please contact the owner of the server to give me the manage webhook permission").build()).queue();
+ } else {
+ channel.retrieveWebhooks().queue(
+ webhooks -> {
+ Webhook webhook = null;
+ for (Webhook webhooktemp : webhooks) {
+ if (webhooktemp.getOwner().equals(channel.getGuild().getSelfMember())) {
+ webhook = webhooktemp;
+ }
}
+
+ if (webhook == null) {
+ channel.createWebhook("Hadder GuildLink").queue(
+ webhook1 -> sendMessage(webhook1, channel, user, message, reactions, usedmessagebuilder)
+ );
+ } else sendMessage(webhook, channel, user, message, reactions, usedmessagebuilder);
}
-
- if (webhook==null) {
- channel.createWebhook("Hadder GuildLink").queue(
- webhook1 -> sendMessage(webhook1, channel, user, message, reactions)
- );
- } else sendMessage(webhook, channel, user, message, reactions);
- }
- );
-
+ );
+ }
}
- private void sendMessage(Webhook webhook, TextChannel channel, User user, Message message, List reactions) {
- WebhookClientBuilder builder = new WebhookClientBuilder(webhook.getId());
+ private void sendMessage(Webhook webhook, TextChannel channel, User user, Message message, List reactions, boolean usedmessagebuilder) {
+ WebhookClientBuilder builder = new WebhookClientBuilder(webhook.getUrl());
WebhookClient client = builder.build();
WebhookMessageBuilder mb = new WebhookMessageBuilder();
mb.setUsername(user.getName())
.setAvatarUrl((user.getAvatarUrl()!=null) ? user.getAvatarUrl() : user.getDefaultAvatarUrl())
.setContent(message.getContentRaw());
- for (Message.Attachment attachment:message.getAttachments()) {
- try {
- mb.addFile(attachment.getFileName(), attachment.retrieveInputStream().get());
- } catch (InterruptedException | ExecutionException e) {
- e.printStackTrace();
+ if (!usedmessagebuilder) {
+ for (Message.Attachment attachment : message.getAttachments()) {
+ try {
+ mb.addFile(attachment.getFileName(), attachment.retrieveInputStream().get());
+ } catch (InterruptedException | ExecutionException e) {
+ e.printStackTrace();
+ }
}
}
for (MessageEmbed embed : message.getEmbeds()) {
@@ -65,9 +70,13 @@ public class LinkUtils {
}
mb.addEmbeds(new WebhookEmbed(
embed.getTimestamp(), embed.getColorRaw(), embed.getDescription(),
- embed.getThumbnail().getUrl(), embed.getImage().getUrl(), new WebhookEmbed.EmbedFooter(embed.getFooter().getText(), embed.getFooter().getIconUrl()),
- new WebhookEmbed.EmbedTitle(embed.getTitle(), embed.getUrl()),
- new WebhookEmbed.EmbedAuthor(embed.getAuthor().getName(), embed.getAuthor().getIconUrl(), embed.getAuthor().getUrl()), fields));
+ (embed.getThumbnail()!=null) ? embed.getThumbnail().getUrl() : "", (embed.getImage()!=null) ? embed.getImage().getUrl() : "",
+ new WebhookEmbed.EmbedFooter((embed.getFooter()!=null) ? (embed.getFooter().getText()!=null) ? embed.getFooter().getText() : "" : "",
+ (embed.getFooter()!=null) ? embed.getFooter().getIconUrl():""),
+ new WebhookEmbed.EmbedTitle((embed.getTitle()!=null) ? embed.getTitle() : "", embed.getUrl()),
+ new WebhookEmbed.EmbedAuthor((embed.getAuthor()!=null) ? (embed.getAuthor().getName() != null) ? embed.getAuthor().getName() : "" : "",
+ (embed.getAuthor()!=null) ? (embed.getAuthor().getIconUrl()!=null) ? embed.getAuthor().getIconUrl(): "" : "",
+ (embed.getAuthor()!=null) ? embed.getAuthor().getUrl() : ""), fields));
}
try {
long msgid = client.send(mb.build()).get().getId();
diff --git a/src/main/java/com/bbn/hadder/listener/GuildListener.java b/src/main/java/com/bbn/hadder/listener/GuildListener.java
index 7cadb70..b0c91fcc 100644
--- a/src/main/java/com/bbn/hadder/listener/GuildListener.java
+++ b/src/main/java/com/bbn/hadder/listener/GuildListener.java
@@ -9,7 +9,7 @@ import com.bbn.hadder.core.Config;
import com.bbn.hadder.utils.BotList;
import com.bbn.hadder.utils.MessageEditor;
import net.dv8tion.jda.api.EmbedBuilder;
-import net.dv8tion.jda.api.entities.User;
+import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.events.guild.GuildJoinEvent;
import net.dv8tion.jda.api.events.guild.GuildLeaveEvent;
import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent;
@@ -28,11 +28,13 @@ public class GuildListener extends ListenerAdapter {
}
public void onGuildJoin(GuildJoinEvent event) {
- for (User user : event.getJDA().getUsers()) {
- if (!user.getId().equals(event.getJDA().getSelfUser().getId())) {
- rethink.insertUser(user.getId());
+ new Thread(() -> {
+ for (Member member : event.getGuild().getMembers()) {
+ if (!member.getUser().getId().equals(event.getJDA().getSelfUser().getId())) {
+ rethink.insertUser(member.getUser().getId());
+ }
}
- }
+ }).start();
rethink.insertGuild(event.getGuild().getId());
EmbedBuilder builder = new EmbedBuilder();
diff --git a/src/main/java/com/bbn/hadder/listener/LinkListener.java b/src/main/java/com/bbn/hadder/listener/LinkListener.java
index 224e529..d709e3c 100644
--- a/src/main/java/com/bbn/hadder/listener/LinkListener.java
+++ b/src/main/java/com/bbn/hadder/listener/LinkListener.java
@@ -1,11 +1,17 @@
package com.bbn.hadder.listener;
import com.bbn.hadder.Rethink;
+import com.bbn.hadder.core.LinkUtils;
+import com.bbn.hadder.utils.MessageEditor;
+import net.dv8tion.jda.api.EmbedBuilder;
+import net.dv8tion.jda.api.Permission;
+import net.dv8tion.jda.api.entities.MessageEmbed;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import javax.annotation.Nonnull;
+import java.util.ArrayList;
public class LinkListener extends ListenerAdapter {
@@ -17,11 +23,59 @@ public class LinkListener extends ListenerAdapter {
@Override
public void onMessageReactionAdd(@Nonnull MessageReactionAddEvent event) {
+ event.getChannel().retrieveMessageById(event.getMessageId()).queue(
+ msg -> {
+ if (event.getMember().hasPermission(Permission.MANAGE_CHANNEL)) {
+ if (!event.getMember().getUser().equals(event.getJDA().getSelfUser())) {
+ if (msg.getAuthor().equals(event.getJDA().getSelfUser())) {
+ if (msg.getEmbeds().size() == 1) {
+ if (msg.getEmbeds().get(0).getFooter() == null) {
+ if (msg.getEmbeds().get(0).getTitle().endsWith(") wants to link guilds!")) {
+ String requestguild = msg.getEmbeds().get(0).getTitle().replaceAll("\\) wants to link guilds!", "");
+ String requestguildid = null;
+ for (int i = requestguild.length() - 1; i >= 0; i--) {
+ if (String.valueOf(requestguild.charAt(i)).equals("(")) {
+ requestguildid = requestguild.substring(i + 1);
+ break;
+ }
+ }
+ if (requestguildid != null) {
+ if (event.getReactionEmote().getName().equals("✅")) {
+ rethink.addLinkedGuild(event.getGuild().getId(), requestguildid);
+ rethink.addLinkedGuild(requestguildid, event.getGuild().getId());
+ msg.delete().queue();
+
+ MessageEmbed msgembed = new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO,
+ new EmbedBuilder().setTitle("Guilds linked!").setDescription("The Guild allowed the link. Have fun!")).build();
+ event.getChannel().sendMessage(msgembed).queue();
+ event.getJDA().getTextChannelById(rethink.getLinkChannel(requestguildid)).sendMessage(msgembed).queue();
+ } else if (event.getReactionEmote().getName().equals("❌")) {
+ msg.delete().queue();
+
+ MessageEmbed msgembed = new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO,
+ new EmbedBuilder().setTitle("Guild linking denied.").setDescription("The Guild denied the link. :(")).build();
+ event.getChannel().sendMessage(msgembed).queue();
+ event.getJDA().getTextChannelById(rethink.getLinkChannel(requestguildid)).sendMessage(msgembed).queue();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ );
}
@Override
public void onMessageReceived(@Nonnull MessageReceivedEvent event) {
- // TODO
+ if (!event.isWebhookMessage()) {
+ if (event.getChannel().getId().equals(rethink.getLinkChannel(event.getGuild().getId()))) {
+ new LinkUtils().sendAll(rethink.getLinks(event.getGuild().getId()), event.getJDA(), event.getMessage(), event.getAuthor(), new ArrayList<>() {
+ }, rethink, false);
+ }
+ }
}
}
diff --git a/src/main/java/com/bbn/hadder/listener/ReadyListener.java b/src/main/java/com/bbn/hadder/listener/ReadyListener.java
index 678497c..7432c5f 100644
--- a/src/main/java/com/bbn/hadder/listener/ReadyListener.java
+++ b/src/main/java/com/bbn/hadder/listener/ReadyListener.java
@@ -23,14 +23,16 @@ public class ReadyListener extends ListenerAdapter {
@Override
public void onReady(@Nonnull ReadyEvent event) {
rethink.setup();
- for (User user : event.getJDA().getUsers()) {
- if (!user.getId().equals(event.getJDA().getSelfUser().getId())) {
- rethink.insertUser(user.getId());
+ new Thread(() -> {
+ for (User user : event.getJDA().getUsers()) {
+ if (!user.getId().equals(event.getJDA().getSelfUser().getId())) {
+ rethink.insertUser(user.getId());
+ }
}
- }
- for (Guild g : event.getJDA().getGuilds()) {
- rethink.insertGuild(g.getId());
- }
+ for (Guild g : event.getJDA().getGuilds()) {
+ rethink.insertGuild(g.getId());
+ }
+ }).start();
new BotList(config).post();
}
diff --git a/src/main/java/com/bbn/hadder/listener/RulesListener.java b/src/main/java/com/bbn/hadder/listener/RulesListener.java
index dd42306..b56c47c 100644
--- a/src/main/java/com/bbn/hadder/listener/RulesListener.java
+++ b/src/main/java/com/bbn/hadder/listener/RulesListener.java
@@ -20,11 +20,9 @@ public class RulesListener extends ListenerAdapter {
public void onMessageReactionAdd(MessageReactionAddEvent event) {
if (event.getMessageId().equals(rethink.getRulesMID(event.getGuild().getId()))) {
if (!event.getMember().getUser().isBot()) {
- if (event.getReactionEmote().equals("✅")) {
+
event.getGuild().addRoleToMember(event.getMember(), event.getGuild().getRoleById(rethink.getRulesRID(event.getGuild().getId()))).queue();
- } else if (event.getReactionEmote().equals("❌")) {
- event.getMember().kick().reason("Declined the rules").queue();
- }
+
}
}
}