diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml new file mode 100644 index 0000000..aaeb397 --- /dev/null +++ b/.github/workflows/maven.yml @@ -0,0 +1,55 @@ +name: Hadder + +on: [push] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: Set up JDK 1.13 + uses: actions/setup-java@v1 + with: + java-version: 1.13 + - name: Build with Maven + run: mvn -B package --file pom.xml + + deploy: + runs-on: ubuntu-latest + needs: test + if: github.ref == 'refs/heads/master' + steps: + - uses: actions/checkout@v1 + - name: Set up JDK 1.13 + uses: actions/setup-java@v1 + with: + java-version: 1.13 + - name: Build Final Jar + run: mvn clean compile assembly:single + - name: Copy folder content recursively to remote + uses: garygrossgarten/github-action-scp@release + with: + local: ./target/Hadder-Build.jar + remote: /home/Bots/Hadder-Build.jar + host: ${{ secrets.HOST }} + username: ${{ secrets.USERNAME }} + password: ${{ secrets.PASSWORD }} + - name: executing remote ssh commands using password + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.HOST }} + username: ${{ secrets.USERNAME }} + password: ${{ secrets.PASSWORD }} + port: ${{ secrets.PORT }} + script: /home/Bots/deploy.sh + - name: Send Webhook Notification + if: always() + env: + JOB_STATUS: ${{ job.status }} + WEBHOOK_URL: ${{ secrets.WEBHOOK_URL }} + HOOK_OS_NAME: ${{ runner.os }} + WORKFLOW_NAME: ${{ github.workflow }} + run: | + git clone https://github.com/DiscordHooks/github-actions-discord-webhook.git webhook + bash webhook/send.sh $JOB_STATUS $WEBHOOK_URL + shell: bash diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index f7aeaa3..0000000 --- a/.travis.yml +++ /dev/null @@ -1,24 +0,0 @@ -language: java -jdk: - - openjdk12 - -addons: - apt: - packages: - - sshpass - -after_success: - - wget https://raw.githubusercontent.com/DiscordHooks/travis-ci-discord-webhook/master/send.sh - - chmod +x send.sh - - ./send.sh success $WEBHOOK_URL - - mvn clean compile assembly:single - - cd target - - sshpass -p $SFTP_PASSWORD scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r Hadder-Build.jar $SFTP_USER@$SFTP_IP:/home/Bots/Hadder-Build.jar - - echo $? - - sshpass -p $SFTP_PASSWORD ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $SFTP_IP /home/Bots/deploy.sh - - echo $? - -after_failure: - - wget https://raw.githubusercontent.com/DiscordHooks/travis-ci-discord-webhook/master/send.sh - - chmod +x send.sh - - ./send.sh failure $WEBHOOK_URL diff --git a/README.md b/README.md index cd779c4..a78d7e1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ # Hadder -[![Build Status](https://travis-ci.com/BigBotNetwork/Hadder.svg?branch=master)](https://travis-ci.com/BigBotNetwork/Hadder) +The Hadder Discord bot is a multi-purpose Discord Bot. + + +[![Build Status](https://github.com/BigBotNetwork/Hadder/workflows/Hadder/badge.svg)](https://github.com/BigBotNetwork/Hadder) + + diff --git a/pom.xml b/pom.xml index 23bcffe..7afe0e1 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ Hadder Hadder - 0.7-ALPHA + 0.7.1-ALPHA Hadder @@ -25,7 +25,7 @@ net.dv8tion JDA - 4.0.0_56 + 4.0.0_61 org.json diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index 5cf0dfc..27df501 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -23,7 +23,7 @@ public class Hadder { startBot(); } - public static void startBot() { + private static void startBot() { Config config = new Config("./config.json"); if (!config.fileExists()) config.create(); config.load(); @@ -47,12 +47,14 @@ public class Hadder { new ShutdownCommand(), new KickCommand(), new PingCommand(), - new GifCommand(config), + new GifCommand(), new ClearCommand(), new GitHubCommand(), new ScreenshareCommand(), new RebootCommand(), new EqualsCommand(), + new InviteCommand(), + new NickCommand(), new GuildPrefixCommand()), config); builder.addEventListeners( diff --git a/src/main/java/com/bbn/hadder/Rethink.java b/src/main/java/com/bbn/hadder/Rethink.java index 7aed33c..ba6a03e 100644 --- a/src/main/java/com/bbn/hadder/Rethink.java +++ b/src/main/java/com/bbn/hadder/Rethink.java @@ -18,11 +18,11 @@ public class Rethink { private Connection conn; private Config config; - public Rethink(Config config) { + Rethink(Config config) { this.config = config; } - public boolean connect() { + public void connect() { try { conn = r.connection() .hostname(config.getDatabaseIP()) @@ -35,7 +35,6 @@ public class Rethink { System.out.println(e.toString()); System.out.println("DB CONNECTION FAILED"); } - return true; } public void disconnect() { @@ -46,8 +45,7 @@ public class Rethink { private JSONArray getAsArray(String table, String where, String value) { try { String string = r.table(table).filter(row -> row.g(where.toLowerCase()).eq(value)).coerceTo("array").toJson().run(conn); - JSONArray jsonArray = new JSONArray(string); - return jsonArray; + return new JSONArray(string); } catch (NoSuchElementException e) { return null; } catch (Exception e) { @@ -105,15 +103,15 @@ public class Rethink { return this.get("user", "id", id, "prefix"); } - public String setServerPrefix(String prefix, String guildid) { + public String setGuildPrefix(String prefix, String guildid) { return this.update("server", guildid, "prefix", prefix); } - public String getServerPrefix(String id) { + public String getGuildPrefix(String id) { return this.get("server", "id", id, "prefix"); } - public String insertServer(String id) { + public String insertGuild(String id) { return this.insert("server", r.hashMap("id", id).with("prefix", "h.")); } 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 14c068e..ae57750 100644 --- a/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java +++ b/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java @@ -19,12 +19,6 @@ import java.util.Random; public class GifCommand implements Command { - private Config config; - - public GifCommand(Config config) { - this.config = config; - } - @Override public void executed(String[] args, CommandEvent event) { if (args.length > 0) { @@ -35,7 +29,7 @@ public class GifCommand implements Command { } OkHttpClient caller = new OkHttpClient(); - Request request = new Request.Builder().url("http://api.giphy.com/v1/gifs/search?q=" + query + "&api_key=" + config.getGiphyToken()).build(); + Request request = new Request.Builder().url("http://api.giphy.com/v1/gifs/search?q=" + query + "&api_key=" + event.getConfig().getGiphyToken()).build(); try { Random rand = new Random(); Response response = caller.newCall(request).execute(); 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 bcc800d..848c927 100644 --- a/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java +++ b/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java @@ -4,6 +4,7 @@ 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 java.util.ArrayList; import java.util.HashMap; @@ -13,47 +14,51 @@ public class HelpCommand implements Command { @Override public void executed(String[] args, CommandEvent event) { - if (args.length == 0) { - HashMap> hashMap = new HashMap<>(); - for (Command cmd : event.getCommandHandler().getCommandList()) { - if (!hashMap.containsKey(cmd.getClass().getPackageName())) { - ArrayList cmdlist = new ArrayList<>(); - cmdlist.add(cmd); - hashMap.put(cmd.getClass().getPackageName(), cmdlist); - } else { - hashMap.get(cmd.getClass().getPackageName()).add(cmd); - } - } - EmbedBuilder eb = new EmbedBuilder(); - for (Map.Entry> entry : hashMap.entrySet()) { - if (!entry.getKey().endsWith("owner") || (entry.getKey().endsWith("owner") && (event.getAuthor().getId().equals("477141528981012511") || event.getAuthor().getId().equals("261083609148948488")))) { - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < entry.getValue().size(); i++) { - Command cmd = entry.getValue().get(i); - sb.append("`" + cmd.labels()[0] + "`"); - if (i < entry.getValue().size() - 1) sb.append(", "); + if (event.getGuild().getSelfMember().hasPermission(Permission.MESSAGE_EMBED_LINKS)) { + if (args.length == 0) { + HashMap> hashMap = new HashMap<>(); + for (Command cmd : event.getCommandHandler().getCommandList()) { + if (!hashMap.containsKey(cmd.getClass().getPackageName())) { + ArrayList cmdlist = new ArrayList<>(); + cmdlist.add(cmd); + hashMap.put(cmd.getClass().getPackageName(), cmdlist); + } else { + hashMap.get(cmd.getClass().getPackageName()).add(cmd); } - String[] packagesplit = entry.getKey().split("\\."); - eb.addField(packagesplit[packagesplit.length - 1], sb.toString(), false); } - } - new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, eb); - event.getChannel().sendMessage(eb.build()).queue(); - } else { - 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(); + EmbedBuilder eb = new EmbedBuilder(); + for (Map.Entry> entry : hashMap.entrySet()) { + if (!entry.getKey().endsWith("owner") || (entry.getKey().endsWith("owner") && (event.getAuthor().getId().equals("477141528981012511") || event.getAuthor().getId().equals("261083609148948488")))) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < entry.getValue().size(); i++) { + Command cmd = entry.getValue().get(i); + sb.append("`").append(cmd.labels()[0]).append("`"); + if (i < entry.getValue().size() - 1) sb.append(", "); + } + String[] packagesplit = entry.getKey().split("\\."); + eb.addField(packagesplit[packagesplit.length - 1], sb.toString(), false); + } + } + new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, eb); + event.getChannel().sendMessage(eb.build()).queue(); + } else { + 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(); + } } } } } + } else { + event.getTextChannel().sendMessage("I need the Embed Links Permission to send the Help Menu!").queue(); } } diff --git a/src/main/java/com/bbn/hadder/commands/misc/GitHubCommand.java b/src/main/java/com/bbn/hadder/commands/misc/GitHubCommand.java index a75f0d4..5bafb91 100644 --- a/src/main/java/com/bbn/hadder/commands/misc/GitHubCommand.java +++ b/src/main/java/com/bbn/hadder/commands/misc/GitHubCommand.java @@ -21,52 +21,54 @@ public class GitHubCommand implements Command { @Override public void executed(String[] args, CommandEvent event) { if (args.length > 0) { - Request request = new Request.Builder().url("https://api.github.com/users/" + args[0]).build(); - try { - - Response response = new OkHttpClient().newCall(request).execute(); - JSONObject json = new JSONObject(response.body().string()); - - String nickname = json.getString("name"); - String bio = "None"; - String location = "Unknown"; - String website = "None"; + if (args[0].equals("link")) { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("Link your GitHub Account").setDescription("https://github.com/login/oauth/authorize?client_id=25321f690bb1b6952942").build()).queue(); + } else { + Request request = new Request.Builder().url("https://api.github.com/users/" + args[0]).build(); try { - bio = json.getString("bio"); + + Response response = new OkHttpClient().newCall(request).execute(); + JSONObject json = new JSONObject(response.body().string()); + + String nickname = json.getString("name"); + String bio = "None"; + String location = "Unknown"; + String website = "None"; + try { + bio = json.getString("bio"); + } catch (JSONException ignored) { + } + try { + location = json.getString("location"); + } catch (JSONException ignored) { + } + + if (!json.getString("blog").equals("")) website = json.getString("blog"); + + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder) + .setAuthor("Information about " + nickname + " (" + args[0] + ")", "https://github.com/" + args[0] + "", "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png") + .setThumbnail(json.getString("avatar_url")) + .addField("User bio", bio, false) + .addField("Location", location, true) + .addField("Website", website, true) + .addField("Public repositories", String.valueOf(json.getInt("public_repos")), true) + .addField("Public gists", String.valueOf(json.getInt("public_gists")), true) + .addField("Followers", String.valueOf(json.getInt("followers")), true) + .addField("Following", String.valueOf(json.getInt("following")), true) + .build()).queue(); + + } catch (IOException | NullPointerException e) { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.ERROR, builder).setDescription("The GitHub API might be down at the moment!").build()).queue(); } catch (JSONException e) { - + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("This user does not exist!").build()).queue(); } - try { - location = json.getString("location"); - } catch (JSONException e) { - - } - - if(!json.getString("blog").equals("")) website = json.getString("blog"); - - EmbedBuilder builder = new EmbedBuilder(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder) - .setAuthor("Information about " + nickname + " (" + args[0] + ")", "https://github.com/" + args[0] + "", "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png") - .setThumbnail(json.getString("avatar_url")) - .addField("User bio", bio, false) - .addField("Location", location, true) - .addField("Website", website, true) - .addField("Public repositories", String.valueOf(json.getInt("public_repos")), true) - .addField("Public gists", String.valueOf(json.getInt("public_gists")), true) - .addField("Followers", String.valueOf(json.getInt("followers")), true) - .addField("Following", String.valueOf(json.getInt("following")), true) - .build()).queue(); - - } catch (IOException | NullPointerException e) { - EmbedBuilder builder = new EmbedBuilder(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.ERROR, builder).setDescription("The GitHub API might be down at the moment!").build()).queue(); - } catch (JSONException e) { - EmbedBuilder builder = new EmbedBuilder(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("This user does not exist!").build()).queue(); } } else { - EmbedBuilder builder = new EmbedBuilder(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You have to specify a user!").build()).queue(); + event.getTextChannel().sendMessage("SOON").queue(); } } diff --git a/src/main/java/com/bbn/hadder/commands/misc/InviteCommand.java b/src/main/java/com/bbn/hadder/commands/misc/InviteCommand.java new file mode 100644 index 0000000..ac79e18 --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/misc/InviteCommand.java @@ -0,0 +1,35 @@ +package com.bbn.hadder.commands.misc; + +/* + * @author Skidder / GregTCLTK + */ + +import com.bbn.hadder.Hadder; +import com.bbn.hadder.commands.Command; +import com.bbn.hadder.commands.CommandEvent; +import com.bbn.hadder.utils.MessageEditor; +import net.dv8tion.jda.api.EmbedBuilder; + +public class InviteCommand implements Command { + + @Override + public void executed(String[] args, CommandEvent event) { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("Invite me!").setDescription("[Invite me here!](discordapp.com/oauth2/authorize?client_id=" + Hadder.shardManager.getGuilds().get(0).getSelfMember().getId() + "&scope=bot&permissions=470133879)").build()).queue(); + } + + @Override + public String[] labels() { + return new String[]{"invite"}; + } + + @Override + public String description() { + return "Hadder Bot Invite"; + } + + @Override + public String usage() { + return ""; + } +} 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 7c5f810..80ed92e 100644 --- a/src/main/java/com/bbn/hadder/commands/misc/ScreenshareCommand.java +++ b/src/main/java/com/bbn/hadder/commands/misc/ScreenshareCommand.java @@ -33,7 +33,7 @@ public class ScreenshareCommand implements Command { List vcs = event.getGuild().getVoiceChannelsByName(String.join(" ", args), true); if (vcs.size() > 1) { EmbedBuilder eb = new EmbedBuilder() - .setTitle("Please Choose a Voicechannel") + .setTitle("Please Choose a Voice Channel") .setDescription("There is more than one channel with this name"); for (int i = 0; i < vcs.size(); i++) { VoiceChannel voiceChannel = vcs.get(i); @@ -54,14 +54,14 @@ public class ScreenshareCommand implements Command { } } catch (NumberFormatException e) { event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.ERROR, new EmbedBuilder() - .setTitle("Wait, thats illegal") + .setTitle("Wait, that's 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(); + .setDescription("There is no Voice Channel named like this. \n\nNote: Make sure the Voice Channel 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") 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 5d61ed8..19d7b94 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java @@ -38,10 +38,29 @@ 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 a user!").build()).queue(); - } else { + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You have to mention at least one user!").build()).queue(); + } else if (event.getMessage().getMentionedMembers().size() > 1) { + for (int i = 0; i < event.getMessage().getMentionedMembers().size(); i++) { + Member member = event.getMessage().getMentionedMembers().get(i); + if (!event.getAuthor().getId().equals(member.getId())) { + if (!event.getJDA().getSelfUser().getId().equals(member.getId())) { + if (event.getGuild().getSelfMember().canInteract(member)) { + event.getGuild().ban(member, 0).reason("Mass Ban by " + event.getAuthor().getAsTag()).queue(); + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_SELF_PERMISSION, builder).build()).queue(); + } + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("I can not ban myself!").build()).queue(); + } + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You can't ban yourself.").build()).queue(); + } + } EmbedBuilder builder = new EmbedBuilder(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("We will be adding multiple banning within a command in the future.").build()).queue(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully banned ✅").setDescription("I successfully banned " + event.getMessage().getMentionedMembers().size() + " Members!").build()).queue(); } } else { EmbedBuilder builder = new EmbedBuilder(); 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 81f357a..2c41a40 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/GuildPrefixCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/GuildPrefixCommand.java @@ -14,7 +14,7 @@ public class GuildPrefixCommand implements Command { if (args.length == 1) { if (!args[0].contains("\"")) { - event.getRethink().setServerPrefix(args[0], event.getGuild().getId()); + event.getRethink().setGuildPrefix(args[0], event.getGuild().getId()); 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 74ca429..07f538c 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/KickCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/KickCommand.java @@ -11,6 +11,7 @@ import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.Member; + public class KickCommand implements Command { @Override @@ -30,18 +31,37 @@ public class KickCommand implements Command { } } else { EmbedBuilder builder = new EmbedBuilder(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("I can not kick myself").build()).queue(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("I can not kick myself!").build()).queue(); } } else { EmbedBuilder builder = new EmbedBuilder(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You can't kick yourself.").build()).queue(); } } 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 a user!").build()).queue(); - } else { - EmbedBuilder builder = new EmbedBuilder(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("We will be adding multiple kicking within a command in the future.").build()).queue(); + 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(); + } else if (event.getMessage().getMentionedMembers().size() > 1) { + for (int i = 0; i < event.getMessage().getMentionedMembers().size(); i++) { + Member member = event.getMessage().getMentionedMembers().get(i); + if (!event.getAuthor().getId().equals(member.getId())) { + if (!event.getJDA().getSelfUser().getId().equals(member.getId())) { + if (event.getGuild().getSelfMember().canInteract(member)) { + event.getGuild().kick(member).reason("Mass Kicked by " + event.getAuthor().getAsTag()).queue(); + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_SELF_PERMISSION, builder).build()).queue(); + } + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("I can not kick myself!").build()).queue(); + } + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You can't kick yourself.").build()).queue(); + } + } + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully kicked ✅").setDescription("I successfully kicked " + event.getMessage().getMentionedMembers().size() + " Members!").build()).queue(); } } } diff --git a/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java new file mode 100644 index 0000000..1a7319b --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/moderation/NickCommand.java @@ -0,0 +1,91 @@ +package com.bbn.hadder.commands.moderation; + +/* + * @author Skidder / GregTCLTK + */ + +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.Member; + +public class NickCommand implements Command { + + @Override + public void executed(String[] args, CommandEvent event) { + if (event.getMember().hasPermission(Permission.NICKNAME_MANAGE) || event.getGuild().getOwnerId().equals(event.getMember().getId())) { + if (event.getGuild().getSelfMember().hasPermission(Permission.NICKNAME_MANAGE)) { + if (event.getMessage().getMentionedMembers().size() == 1) { + if (!event.getMessage().getMentionedMembers().get(0).getId().equals(event.getGuild().getSelfMember().getId())) { + if (event.getGuild().getSelfMember().canInteract(event.getMessage().getMentionedMembers().get(0))) { + if (args.length > 1) { + if (event.getMessage().getContentRaw().startsWith(event.getRethink().getUserPrefix(event.getMember().getId()))) { + event.getGuild().modifyNickname(event.getMessage().getMentionedMembers().get(0), event.getMessage().getContentRaw().replaceFirst(event.getRethink().getUserPrefix(event.getMember().getId()) + "nick " + args[0], "")).reason("Nicked by " + event.getAuthor().getAsTag()).queue(); + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully nicked ✅").setDescription("I successfully nicked " + event.getMessage().getMentionedMembers().get(0).getUser().getAsTag() + ".").build()).queue(); + } else if (event.getMessage().getContentRaw().startsWith(event.getRethink().getGuildPrefix(event.getGuild().getId()))) { + event.getGuild().modifyNickname(event.getMessage().getMentionedMembers().get(0), event.getMessage().getContentRaw().replaceFirst(event.getRethink().getGuildPrefix(event.getGuild().getId()) + "nick " + args[0], "")).reason("Nicked by " + event.getAuthor().getAsTag()).queue(); + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully nicked ✅").setDescription("I successfully nicked " + event.getMessage().getMentionedMembers().get(0).getUser().getAsTag() + ".").build()).queue(); + } + } 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(); + } + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_SELF_PERMISSION, builder).build()).queue(); + } + } else { + if (event.getMessage().getContentRaw().startsWith(event.getRethink().getUserPrefix(event.getMember().getId()))) { + event.getGuild().getSelfMember().modifyNickname(event.getMessage().getContentRaw().replaceFirst(event.getRethink().getUserPrefix(event.getMember().getId()) + "nick " + args[0], "")).reason("Nicked by " + event.getAuthor().getAsTag()).queue(); + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully nicked ✅").setDescription("I successfully changed my nickname.").build()).queue(); + } else if (event.getMessage().getContentRaw().startsWith(event.getRethink().getGuildPrefix(event.getGuild().getId()))) { + event.getGuild().getSelfMember().modifyNickname(event.getMessage().getContentRaw().replaceFirst(event.getRethink().getGuildPrefix(event.getGuild().getId()) + "nick " + args[0], "")).reason("Nicked by " + event.getAuthor().getAsTag()).queue(); + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully nicked ✅").setDescription("I successfully changed my nickname.").build()).queue(); + } + } + } 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(); + } else { + for (int i = 0; i < event.getMessage().getMentionedMembers().size(); i++) { + Member member = event.getMessage().getMentionedMembers().get(i); + if (!event.getJDA().getSelfUser().getId().equals(member.getId())) { + event.getGuild().modifyNickname(member, args[args.length - 1]).reason("Mass Nicked by " + event.getAuthor().getAsTag()).queue(); + } else { + event.getGuild().getSelfMember().modifyNickname(args[args.length - 1]).reason("Mass Nicked by " + event.getAuthor().getAsTag()).queue(); + } + } + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully nicked ✅").setDescription("I successfully nicked " + event.getMessage().getMentionedMembers().size() + " Members!").build()).queue(); + } + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_SELF_PERMISSION, builder).build()).queue(); + } + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_PERMISSION, builder).build()).queue(); + } + } + + @Override + public String[] labels() { + return new String[]{"nick"}; + } + + @Override + public String description() { + return "Rename a user"; + } + + @Override + public String usage() { + return "<@user> "; + } +} diff --git a/src/main/java/com/bbn/hadder/commands/owner/RebootCommand.java b/src/main/java/com/bbn/hadder/commands/owner/RebootCommand.java index 0923ba1..b058ffa 100644 --- a/src/main/java/com/bbn/hadder/commands/owner/RebootCommand.java +++ b/src/main/java/com/bbn/hadder/commands/owner/RebootCommand.java @@ -12,10 +12,11 @@ import net.dv8tion.jda.api.EmbedBuilder; public class RebootCommand implements Command { + @Override public void executed(String[] args, CommandEvent event) { if (event.getAuthor().getId().equals("477141528981012511") || event.getAuthor().getId().equals("261083609148948488")) { - + } else { EmbedBuilder builder = new EmbedBuilder(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_PERMISSION, builder).build()).queue(); diff --git a/src/main/java/com/bbn/hadder/core/CommandHandler.java b/src/main/java/com/bbn/hadder/core/CommandHandler.java index cb7f7dd..71c3a49 100644 --- a/src/main/java/com/bbn/hadder/core/CommandHandler.java +++ b/src/main/java/com/bbn/hadder/core/CommandHandler.java @@ -9,8 +9,8 @@ import java.util.List; public class CommandHandler { - List commandList; - Config config; + private List commandList; + private Config config; public CommandHandler(List commandList, Config config) { this.commandList = commandList; @@ -18,7 +18,6 @@ public class CommandHandler { } public void handle(MessageReceivedEvent event, Rethink rethink, String prefix) { - StringBuilder regexBuilder = new StringBuilder().append("\\").append(prefix); String invoke = event.getMessage().getContentRaw().replaceFirst(prefix, "").split(" ")[0]; for (Command cmd : commandList) { for (String label : cmd.labels()) { diff --git a/src/main/java/com/bbn/hadder/core/Config.java b/src/main/java/com/bbn/hadder/core/Config.java index 7b9ea31..f8df1e0 100644 --- a/src/main/java/com/bbn/hadder/core/Config.java +++ b/src/main/java/com/bbn/hadder/core/Config.java @@ -33,7 +33,7 @@ public class Config { public void create() { try { if (Files.notExists(file)) { - file = Files.createFile(file); + Files.createFile(file); } Files.write(file, defaultConfigContent().getBytes()); } catch (IOException e) { @@ -113,4 +113,12 @@ public class Config { public String getDiscordBoatsToken() { return config.getJSONObject("Tokens").getString("DiscordBoats"); } + + public String getYetAnotherBotListToken() { + return config.getJSONObject("Tokens").getString("YetAnotherBotList"); + } + + public String getDiscordExtremeListToken() { + return config.getJSONObject("Tokens").getString("DiscordExtremeList"); + } } diff --git a/src/main/java/com/bbn/hadder/listener/CommandListener.java b/src/main/java/com/bbn/hadder/listener/CommandListener.java index e09f7ea..b0d4bc9 100644 --- a/src/main/java/com/bbn/hadder/listener/CommandListener.java +++ b/src/main/java/com/bbn/hadder/listener/CommandListener.java @@ -24,7 +24,7 @@ public class CommandListener extends ListenerAdapter { public void onMessageReceived(MessageReceivedEvent event) { if (event.isFromType(ChannelType.TEXT)) { if (!event.getAuthor().isBot()) { - String[] prefixes = {rethink.getUserPrefix(event.getAuthor().getId()), rethink.getServerPrefix(event.getGuild().getId()), event.getGuild().getSelfMember().getAsMention()+" ", event.getGuild().getSelfMember().getAsMention()}; + String[] prefixes = {rethink.getUserPrefix(event.getAuthor().getId()), rethink.getGuildPrefix(event.getGuild().getId()), event.getGuild().getSelfMember().getAsMention()+" ", event.getGuild().getSelfMember().getAsMention()}; for (String prefix : prefixes) { if (event.getMessage().getContentRaw().startsWith(prefix)) { handler.handle(event, rethink, prefix); diff --git a/src/main/java/com/bbn/hadder/listener/GuildListener.java b/src/main/java/com/bbn/hadder/listener/GuildListener.java index 789e8b7..bd506f2 100644 --- a/src/main/java/com/bbn/hadder/listener/GuildListener.java +++ b/src/main/java/com/bbn/hadder/listener/GuildListener.java @@ -34,7 +34,7 @@ public class GuildListener extends ListenerAdapter { } } - rethink.insertServer(event.getGuild().getId()); + rethink.insertGuild(event.getGuild().getId()); EmbedBuilder builder = new EmbedBuilder(); event.getJDA().getTextChannelById("475722540140986369").sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder) .setTitle("Joined Server") diff --git a/src/main/java/com/bbn/hadder/listener/MentionListener.java b/src/main/java/com/bbn/hadder/listener/MentionListener.java index 45638e1..cc7b3dc 100644 --- a/src/main/java/com/bbn/hadder/listener/MentionListener.java +++ b/src/main/java/com/bbn/hadder/listener/MentionListener.java @@ -27,7 +27,7 @@ public class MentionListener extends ListenerAdapter { .addField("Users", String.valueOf(event.getJDA().getUsers().size()), false) .addField("Guilds", String.valueOf(event.getJDA().getGuilds().size()), false) .addField("Prefix (User)", rethink.getUserPrefix(event.getAuthor().getId()), false) - .addField("Prefix (Guild)", rethink.getServerPrefix(event.getGuild().getId()), false); + .addField("Prefix (Guild)", rethink.getGuildPrefix(event.getGuild().getId()), false); event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).build()).queue(); } } diff --git a/src/main/java/com/bbn/hadder/listener/ReadyListener.java b/src/main/java/com/bbn/hadder/listener/ReadyListener.java index e238ca1..678497c 100644 --- a/src/main/java/com/bbn/hadder/listener/ReadyListener.java +++ b/src/main/java/com/bbn/hadder/listener/ReadyListener.java @@ -29,7 +29,7 @@ public class ReadyListener extends ListenerAdapter { } } for (Guild g : event.getJDA().getGuilds()) { - rethink.insertServer(g.getId()); + rethink.insertGuild(g.getId()); } new BotList(config).post(); diff --git a/src/main/java/com/bbn/hadder/utils/BotList.java b/src/main/java/com/bbn/hadder/utils/BotList.java index aeddf4a..dcd1bb5 100644 --- a/src/main/java/com/bbn/hadder/utils/BotList.java +++ b/src/main/java/com/bbn/hadder/utils/BotList.java @@ -23,6 +23,8 @@ public class BotList { private static String DiscordBotList = "https://discordbotlist.com/api/bots/637002314162372639/stats"; private static String DiscordBestBots = "https://discordsbestbots.xyz/api/bots/637002314162372639/stats"; private static String DiscordBoats = "https://discord.boats/api/bot/637002314162372639"; + private static String YetAnotherBotList = "https://yabl.xyz/api/bot/637002314162372639/stats"; + private static String DiscordExtremeList = "https://discordextremelist.xyz/api/bot/637002314162372639"; private Config config; @@ -34,6 +36,7 @@ public class BotList { if (Files.notExists(Paths.get("./DEBUG"))) { JSONObject json = new JSONObject(); json.put("server_count", Hadder.shardManager.getGuilds().size()); + json.put("guildCount", Hadder.shardManager.getGuilds().size()); json.put("guilds", Hadder.shardManager.getGuilds().size()); json.put("users", Hadder.shardManager.getUsers().size()); @@ -113,6 +116,35 @@ public class BotList { } catch (IOException e) { e.printStackTrace(); } + + // Yet Another Bot List + + Request yetanotherbotlist = new Request.Builder() + .url(YetAnotherBotList) + .post(body) + .addHeader("Authorization", config.getYetAnotherBotListToken()) + .build(); + + try { + new OkHttpClient().newCall(yetanotherbotlist).execute().close(); + System.out.println("Successfully posted count to Yet Another Bot List!"); + } catch (IOException e) { + e.printStackTrace(); + } + + // Discord Extreme List + + Request discordextremelist = new Request.Builder() + .url(DiscordExtremeList) + .post(body) + .addHeader("Authorizaion", config.getDiscordExtremeListToken()) + .build(); + + try { + new OkHttpClient().newCall(discordextremelist).execute().close(); + } catch (IOException e) { + e.printStackTrace(); + } } }