diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 7f10e1b..0000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1 +0,0 @@ -* @GregTCLTK @Schlauer-Hax diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index 6ec4194..de63baf 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -2,7 +2,9 @@ package com.bbn.hadder; import com.bbn.hadder.commands.general.*; import com.bbn.hadder.commands.fun.GifCommand; +import com.bbn.hadder.commands.misc.EqualsCommand; import com.bbn.hadder.commands.misc.GitHubCommand; +import com.bbn.hadder.commands.misc.ScreenshareCommand; import com.bbn.hadder.commands.moderation.*; import com.bbn.hadder.commands.owner.RebootCommand; import com.bbn.hadder.commands.owner.ShutdownCommand; @@ -24,8 +26,6 @@ import java.util.List; public class Hadder { - public static ShardManager shardManager; - public static void main(String[] args) { startBot(); } @@ -53,7 +53,21 @@ public class Hadder { builder.setToken(config.getString("Token")); - CommandHandler.cmdlist.addAll(List.of(new HelpCommand(), new TestCommand(), new BanCommand(), new PrefixCommand(), new ShutdownCommand(), new KickCommand(), new PingCommand(), new GifCommand(), new ClearCommand(), new GitHubCommand(), new RebootCommand())); + CommandHandler.cmdlist.addAll( + List.of( + new HelpCommand(), + new TestCommand(), + new BanCommand(), + new PrefixCommand(), + new ShutdownCommand(), + new KickCommand(), + new PingCommand(), + new GifCommand(), + new ClearCommand(), + new GitHubCommand(), + new ScreenshareCommand(), + new RebootCommand(), + new EqualsCommand())); builder.addEventListeners( new MentionListener(), @@ -63,7 +77,7 @@ public class Hadder { new ReadyListener()); try { - shardManager = builder.build(); + ShardManager shardManager = builder.build(); } catch (LoginException e) { e.printStackTrace(); } diff --git a/src/main/java/com/bbn/hadder/commands/misc/EqualsCommand.java b/src/main/java/com/bbn/hadder/commands/misc/EqualsCommand.java new file mode 100644 index 0000000..3920c22 --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/misc/EqualsCommand.java @@ -0,0 +1,58 @@ +package com.bbn.hadder.commands.misc; + +import com.bbn.hadder.commands.Command; +import com.bbn.hadder.utils.EventWaiter; +import com.bbn.hadder.utils.MessageEditor; +import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; + +public class EqualsCommand implements Command { + @Override + public void executed(String[] args, MessageReceivedEvent event) { + event.getChannel().sendMessage( + new MessageEditor() + .setDefaultSettings( + MessageEditor.Messagetype.INFO, + new EmbedBuilder() + .setTitle("Please send me the first String") + ).build() + ).queue(); + new EventWaiter().newOnMessageEventWaiter(msgevent -> { + String firstString = msgevent.getMessage().getContentRaw(); + event.getChannel().sendMessage( + new MessageEditor() + .setDefaultSettings( + MessageEditor.Messagetype.INFO, + new EmbedBuilder() + .setTitle("Please send me the second String") + ).build() + ).queue(); + new EventWaiter().newOnMessageEventWaiter(msgevent2 -> { + String secondString = msgevent2.getMessage().getContentRaw(); + event.getChannel().sendMessage( + new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, new EmbedBuilder() + .setTitle((firstString.equals(secondString)) ? "Yes! The first string equals the second string!" : "Well yes, but actually No. This isn't the same.") + .addField("First String", firstString, false) + .addField("Second String", secondString, false) + .addField("Result", String.valueOf(firstString.equals(secondString)), false) + ).build() + ).queue(); + }, event.getJDA(), event.getAuthor()); + }, event.getJDA(), event.getAuthor()); + } + + @Override + public String[] labels() { + return new String[]{"equals"}; + } + + @Override + public String description() { + return "Check's if two string are equal to each other"; + } + + @Override + public String usage() { + return "equals"; + } +} diff --git a/src/main/java/com/bbn/hadder/commands/misc/ScreenshareCommand.java b/src/main/java/com/bbn/hadder/commands/misc/ScreenshareCommand.java new file mode 100644 index 0000000..8bcf433 --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/misc/ScreenshareCommand.java @@ -0,0 +1,88 @@ +package com.bbn.hadder.commands.misc; + +import com.bbn.hadder.commands.Command; +import com.bbn.hadder.utils.EventWaiter; +import com.bbn.hadder.utils.MessageEditor; +import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.entities.VoiceChannel; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; + +import java.util.List; + +public class ScreenshareCommand implements Command { + @Override + public void executed(String[] args, MessageReceivedEvent event) { + if (args.length>0) { + if (args[0].matches("[0-9]*")&&args.length==1) { + for (VoiceChannel vc : event.getGuild().getVoiceChannels()) { + try { + if (vc.getIdLong() == Long.parseLong(args[0])) { + event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, new EmbedBuilder() + .setTitle("Here's your Url to share your Screen") + .setDescription("http://discordapp.com/channels/" + event.getGuild().getId() + "/" + vc.getId() + "/")).build()).queue(); + return; + } + } catch (NumberFormatException e) { + event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.ERROR, new EmbedBuilder() + .setTitle("Wait, thats illegal") + .setDescription("This Id is invalid. \nMaybe you entered a wrong Id? \n\nNote: Make sure the Voicechannel is on this Guild.")).build()).queue(); + return; + } + } + } else { + List vcs = event.getGuild().getVoiceChannelsByName(String.join(" ", args), true); + if (vcs.size() > 1) { + EmbedBuilder eb = new EmbedBuilder() + .setTitle("Please Choose a Voicechannel") + .setDescription("There is more than one channel with this name"); + for (int i = 0; i < vcs.size(); i++) { + VoiceChannel voiceChannel = vcs.get(i); + eb.addField(i + ": " + voiceChannel.getName(), voiceChannel.getId(), false); + } + event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, eb).build()).queue(); + new EventWaiter().newOnMessageEventWaiter(msgevent -> { + try { + int i = Integer.parseInt(msgevent.getMessage().getContentRaw()); + if (vcs.size() > i) { + event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, new EmbedBuilder() + .setTitle("Here's your Url to share your Screen") + .setDescription("http://discordapp.com/channels/" + event.getGuild().getId() + "/" + vcs.get(i).getId() + "/")).build()).queue(); + } else { + + event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.ERROR, new EmbedBuilder() + .setTitle("You specified a wrong number!")).build()).queue(); + } + } catch (NumberFormatException e) { + event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.ERROR, new EmbedBuilder() + .setTitle("Wait, thats illegal") + .setDescription("This isn't a Number.")).build()).queue(); + } + }, 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 Voicechannel named like this. \n\nNote: Make sure the Voicechannel is on this Guild.")).build()).queue(); + } else { + event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, new EmbedBuilder() + .setTitle("Here's your Url to share your Screen") + .setDescription("http://discordapp.com/channels/" + event.getGuild().getId() + "/" + vcs.get(0).getId() + "/")).build()).queue(); + } + } + } + } + + @Override + public String[] labels() { + return new String[]{"screenshare"}; + } + + @Override + public String description() { + return "Give you a link with the screenshare url"; + } + + @Override + public String usage() { + return "screenshare "; + } +} diff --git a/src/main/java/com/bbn/hadder/listener/GuildListener.java b/src/main/java/com/bbn/hadder/listener/GuildListener.java index f37bd2c..2ac0825 100644 --- a/src/main/java/com/bbn/hadder/listener/GuildListener.java +++ b/src/main/java/com/bbn/hadder/listener/GuildListener.java @@ -5,7 +5,6 @@ package com.bbn.hadder.listener; */ import com.bbn.hadder.Rethink; -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; @@ -35,8 +34,6 @@ public class GuildListener extends ListenerAdapter { .setFooter(event.getJDA().getSelfUser().getName(), event.getJDA().getSelfUser().getAvatarUrl()) .setTimestamp(Instant.now()) .build()).queue(); - - BotList.post(); } public void onGuildLeave(GuildLeaveEvent event) { @@ -49,8 +46,6 @@ public class GuildListener extends ListenerAdapter { .setFooter(event.getJDA().getSelfUser().getName(), event.getJDA().getSelfUser().getAvatarUrl()) .setTimestamp(Instant.now()) .build()).queue(); - - BotList.post(); } public void onGuildMemberJoin(GuildMemberJoinEvent event) { diff --git a/src/main/java/com/bbn/hadder/listener/ReadyListener.java b/src/main/java/com/bbn/hadder/listener/ReadyListener.java index a007c31..4d24a2b 100644 --- a/src/main/java/com/bbn/hadder/listener/ReadyListener.java +++ b/src/main/java/com/bbn/hadder/listener/ReadyListener.java @@ -1,7 +1,6 @@ package com.bbn.hadder.listener; import com.bbn.hadder.Rethink; -import com.bbn.hadder.utils.BotList; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.User; import net.dv8tion.jda.api.events.ReadyEvent; @@ -22,7 +21,5 @@ public class ReadyListener extends ListenerAdapter { for (Guild g : event.getJDA().getGuilds()) { Rethink.insertServer(g.getId()); } - - BotList.post(); } } diff --git a/src/main/java/com/bbn/hadder/utils/BotList.java b/src/main/java/com/bbn/hadder/utils/BotList.java deleted file mode 100644 index fbee5ca..0000000 --- a/src/main/java/com/bbn/hadder/utils/BotList.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.bbn.hadder.utils; - -/* - * @author Skidder / GregTCLTK - */ - -import com.bbn.hadder.Hadder; -import okhttp3.MediaType; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import org.json.JSONObject; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; - -public class BotList { - - private static String MythicalBotList = "https://mythicalbots.xyz/api/bot/637002314162372639"; - private static String BotsForDiscord = "https://botsfordiscord.com/api/bot/637002314162372639"; - private static String DiscordBotList = "https://discordbotlist.com/api/bots/637002314162372639/stats"; - private static String DiscordBestBots = "https://discordsbestbots.xyz/api/bots/637002314162372639/stats"; - - private static JSONObject json = new JSONObject(); - - public static void post() { - json.put("server_count", Hadder.shardManager.getGuilds().size()); - json.put("guilds", Hadder.shardManager.getGuilds().size()); - json.put("users", Hadder.shardManager.getUsers().size()); - - RequestBody body = RequestBody.create(MediaType.parse("application/json"), json.toString()); - - File configfile = new File("./config.json"); - - JSONObject config = null; - try { - config = new JSONObject(new String(Files.readAllBytes(Paths.get(configfile.toURI())))); - } catch (IOException e) { - e.printStackTrace(); - } - - // Mythical Bot List - - Request mythicalbotlist = new Request.Builder() - .url(MythicalBotList) - .post(body) - .addHeader("Authorization", config.getString("MythicalBotList")) - .build(); - - try { - new OkHttpClient().newCall(mythicalbotlist).execute().close(); - System.out.println("Successfully posted count for the Mythical Bot List!"); - } catch (IOException e) { - e.printStackTrace(); - } - - // BotsForDiscord - - Request botsfordiscord = new Request.Builder() - .url(BotsForDiscord) - .post(body) - .addHeader("Authorization", config.getString("BotsForDiscord")) - .build(); - - try { - new OkHttpClient().newCall(botsfordiscord).execute().close(); - System.out.println("Successfully posted count to Bots For Discord!"); - } catch (IOException e) { - e.printStackTrace(); - } - - // Discord Bot List - - Request discordbotlist = new Request.Builder() - .url(DiscordBotList) - .post(body) - .addHeader("Authorization", "Bot " + config.getString("DiscordBotList")) - .build(); - - try { - new OkHttpClient().newCall(discordbotlist).execute().close(); - System.out.println("Successfully posted count for the Discord Bot List"); - } catch (IOException e) { - e.printStackTrace(); - } - - // Discord Best Bots - - Request discordbestbots = new Request.Builder() - .url(DiscordBestBots) - .post(body) - .addHeader("Authorization", config.getString("DiscordBestBots")) - .build(); - - try { - new OkHttpClient().newCall(discordbestbots).execute().close(); - System.out.println("Successfully posted count to Discord Best Bots!"); - } catch (IOException e) { - e.printStackTrace(); - } - } - -} diff --git a/src/main/java/com/bbn/hadder/utils/EventWaiter.java b/src/main/java/com/bbn/hadder/utils/EventWaiter.java new file mode 100644 index 0000000..bc9ad89 --- /dev/null +++ b/src/main/java/com/bbn/hadder/utils/EventWaiter.java @@ -0,0 +1,29 @@ +package com.bbn.hadder.utils; + +import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; +import net.dv8tion.jda.api.hooks.ListenerAdapter; + +import javax.annotation.Nonnull; +import java.util.function.Consumer; + +public class EventWaiter { + + public void newOnMessageEventWaiter(Consumer onEvent, JDA jda, User user) { + Object listener = new ListenerAdapter() { + @Override + public void onGuildMessageReceived(@Nonnull GuildMessageReceivedEvent event) { + if (user==null) { + onEvent.accept(event); + event.getJDA().getShardManager().removeEventListener(this); + } else if (event.getAuthor().getId().equals(user.getId())) { + onEvent.accept(event); + event.getJDA().getShardManager().removeEventListener(this); + } + } + }; + jda.getShardManager().addEventListener(listener); + } + +} diff --git a/src/main/java/com/bbn/hadder/utils/MessageEditor.java b/src/main/java/com/bbn/hadder/utils/MessageEditor.java index 0595fef..3b6324d 100644 --- a/src/main/java/com/bbn/hadder/utils/MessageEditor.java +++ b/src/main/java/com/bbn/hadder/utils/MessageEditor.java @@ -17,7 +17,7 @@ public class MessageEditor { break; case WARNING: - embedBuilder.setTitle("⚠ Warning ⚠").setColor(Color.ORANGE); + embedBuilder.setColor(Color.ORANGE); break; case NO_PERMISSION: