It's rewind time everybody
This commit is contained in:
parent
664c2b9db0
commit
c680b6a903
3 changed files with 80 additions and 118 deletions
|
|
@ -2,100 +2,81 @@ 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.TextChannel;
|
||||
import org.json.JSONArray;
|
||||
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) {
|
||||
if (args.length == 0) return;
|
||||
switch (args[0]) {
|
||||
|
||||
} else {
|
||||
switch (args[0].toLowerCase()) {
|
||||
case "add":
|
||||
if (args.length==2) {
|
||||
boolean found = false;
|
||||
for (Guild g :event.getJDA().getGuilds()) {
|
||||
if (g.getId().equals(args[1])) found = true;
|
||||
}
|
||||
if (!found) {
|
||||
event.getChannel().sendMessage(
|
||||
new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR, new EmbedBuilder()
|
||||
.setTitle("I'm not on this guild")
|
||||
.setDescription("I'm not on this guild. Please tell the Server Owner to add me.")).build()).queue();
|
||||
return;
|
||||
}
|
||||
JSONArray linkedguildids = event.getRethink().getLinks(event.getGuild().getId());
|
||||
for (int i = 0; linkedguildids.length() > i; i++) {
|
||||
if (linkedguildids.getString(i).equals(args[1])) {
|
||||
event.getChannel().sendMessage(
|
||||
new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR, new EmbedBuilder()
|
||||
.setTitle("Already Linked with that Guild!")
|
||||
.setDescription("Your Guild is already linked with " + event.getJDA().getGuildById(args[1]).getName())).build()).queue();
|
||||
return;
|
||||
}
|
||||
}
|
||||
case "add":
|
||||
if (args.length != 2) return;
|
||||
String linkid = args[1];
|
||||
|
||||
// TODO: Fix this
|
||||
// TODO: Add poll to accept
|
||||
for (int i = 0; linkedguildids.length() > i; i++) {
|
||||
// TODO: Check if any channel exists else create
|
||||
event.getJDA().getTextChannelById(event.getRethink().getLinkChannel(linkedguildids.getString(i))).sendMessage(
|
||||
new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder()
|
||||
.setTitle("A Guild wants to link the Guilds")
|
||||
.setDescription("The Guild "+event.getGuild().getName()+" want to link!")
|
||||
.setFooter("Request by: "+event.getGuild().getId()+ " To:"+linkedguildids.getString(i))).build()).queue(
|
||||
msg -> {
|
||||
msg.addReaction("✅").queue();
|
||||
msg.addReaction("❌").queue();
|
||||
}
|
||||
);
|
||||
}
|
||||
// TODO: Success Message
|
||||
}
|
||||
break;
|
||||
|
||||
case "remove":
|
||||
|
||||
break;
|
||||
|
||||
case "list":
|
||||
JSONArray linkedguildids = event.getRethink().getLinks(event.getGuild().getId());
|
||||
String response;
|
||||
if (linkedguildids.length()==0) response = "There are no Guilds linked.";
|
||||
else {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; linkedguildids.length()>i; i++) {
|
||||
String id = linkedguildids.getString(i);
|
||||
Guild guild = event.getJDA().getGuildById(id);
|
||||
sb.append(guild.getName()+" ("+id+")\n");
|
||||
}
|
||||
response = sb.toString();
|
||||
// Check if guild is existing
|
||||
boolean found = false;
|
||||
Guild linkguild = null;
|
||||
for (Guild g : event.getJDA().getGuilds()) {
|
||||
if (g.getId().equals(linkid)) {
|
||||
found = true;
|
||||
linkguild = g;
|
||||
}
|
||||
}
|
||||
// TODO
|
||||
if (!found) return;
|
||||
|
||||
// Check if the guild is the same
|
||||
if (event.getGuild().getId().equals(args[1])) {
|
||||
event.getChannel().sendMessage(
|
||||
new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO,
|
||||
new EmbedBuilder().setTitle("Linked Guilds").setDescription(response)).build()).queue();
|
||||
break;
|
||||
new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR,
|
||||
new EmbedBuilder().setTitle("Wait thats illegal.").setDescription("You specified the same guild as the guild on which you're reading this")).build()).queue();
|
||||
return;
|
||||
}
|
||||
|
||||
case "channel":
|
||||
if (args.length==2) {
|
||||
for (TextChannel tc : event.getJDA().getTextChannels()) {
|
||||
if (tc.getId().equals(args[1])) {
|
||||
event.getRethink().setLinkChannel(event.getGuild().getId(), args[1]);
|
||||
event.getChannel().sendMessage(
|
||||
new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder()
|
||||
.setTitle("Successfully set the text channel as your link channel")
|
||||
.setDescription("The new Channel receives all new messages")).build()).queue();
|
||||
}
|
||||
// Send poll to all connected guilds
|
||||
if (event.getRethink().getLinks(event.getGuild().getId()).length() > 0) {
|
||||
List<String> 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();
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,13 +16,13 @@ import java.util.concurrent.ExecutionException;
|
|||
|
||||
public class LinkUtils {
|
||||
|
||||
public void sendAll(JSONArray jsonArray, JDA jda, Message message, User user) {
|
||||
public void sendAll(JSONArray jsonArray, JDA jda, Message message, User user, List<String> reactions) {
|
||||
for (int i = 0; jsonArray.length() > i; i++) {
|
||||
this.send(message, jda.getTextChannelById(jsonArray.getString(i)), user);
|
||||
this.send(message, jda.getTextChannelById(jsonArray.getString(i)), user, reactions);
|
||||
}
|
||||
}
|
||||
|
||||
private void send(Message message, TextChannel channel, User user) {
|
||||
private void send(Message message, TextChannel channel, User user, List<String> reactions) {
|
||||
|
||||
channel.retrieveWebhooks().queue(
|
||||
webhooks -> {
|
||||
|
|
@ -35,16 +35,16 @@ public class LinkUtils {
|
|||
|
||||
if (webhook==null) {
|
||||
channel.createWebhook("Hadder GuildLink").queue(
|
||||
webhook1 -> sendMessage(webhook1, user, message)
|
||||
webhook1 -> sendMessage(webhook1, channel, user, message, reactions)
|
||||
);
|
||||
} else sendMessage(webhook, user, message);
|
||||
} else sendMessage(webhook, channel, user, message, reactions);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void sendMessage(Webhook webhook, User user, Message message) {
|
||||
private void sendMessage(Webhook webhook, TextChannel channel, User user, Message message, List<String> reactions) {
|
||||
WebhookClientBuilder builder = new WebhookClientBuilder(webhook.getId());
|
||||
WebhookClient client = builder.build();
|
||||
WebhookMessageBuilder mb = new WebhookMessageBuilder();
|
||||
|
|
@ -69,7 +69,20 @@ public class LinkUtils {
|
|||
new WebhookEmbed.EmbedTitle(embed.getTitle(), embed.getUrl()),
|
||||
new WebhookEmbed.EmbedAuthor(embed.getAuthor().getName(), embed.getAuthor().getIconUrl(), embed.getAuthor().getUrl()), fields));
|
||||
}
|
||||
client.send(mb.build());
|
||||
try {
|
||||
long msgid = client.send(mb.build()).get().getId();
|
||||
channel.retrieveMessageById(msgid).queue(
|
||||
msg -> {
|
||||
for (String reaction: reactions) {
|
||||
msg.addReaction(reaction).queue();
|
||||
}
|
||||
}
|
||||
);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
} catch (ExecutionException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,9 @@
|
|||
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.MessageBuilder;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
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 org.json.JSONArray;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
|
|
@ -23,33 +17,7 @@ public class LinkListener extends ListenerAdapter {
|
|||
|
||||
@Override
|
||||
public void onMessageReactionAdd(@Nonnull MessageReactionAddEvent event) {
|
||||
if (event.isFromGuild()) {
|
||||
event.getTextChannel().retrieveMessageById(event.getMessageId()).queue(
|
||||
msg -> {
|
||||
if (msg.getAuthor().equals(event.getJDA().getSelfUser())) {
|
||||
if (msg.getEmbeds().size() == 1) {
|
||||
String footer = msg.getEmbeds().get(0).getFooter().getText();
|
||||
if (footer!=null) {
|
||||
if (footer.startsWith("Request by: ")&&footer.contains(" To:")) {
|
||||
String[] ids = footer.replace("Request by: ", "").replace("To:", "").split(" ");
|
||||
JSONArray jsonArray = rethink.getLinks(ids[0]);
|
||||
for (int i = 0; jsonArray.length()>i; i++) {
|
||||
rethink.addLinkedGuild(jsonArray.getString(i), ids[1]);
|
||||
rethink.addLinkedGuild(ids[1], jsonArray.getString(i));
|
||||
}
|
||||
|
||||
rethink.addLinkedGuild(ids[0], ids[1]);
|
||||
|
||||
new LinkUtils().sendAll(rethink.getLinks(event.getGuild().getId()), event.getJDA(),
|
||||
new MessageBuilder().setEmbed(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO,
|
||||
new EmbedBuilder().setTitle(event.getGuild().getName()+" just joined the link!").setDescription("Say Hello!")).build()).build(), event.getJDA().getSelfUser());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue