diff --git a/README.md b/README.md index 1e24aef..025df75 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ Hadder Discord is a multi-purpose Discord bot with 100% uptime. [![Build Status](https://github.com/BigBotNetwork/Hadder/workflows/Hadder/badge.svg)](https://github.com/BigBotNetwork/Hadder) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/ddb8cb7ec85f467caa691c175e1f01b5)](https://www.codacy.com/gh/BigBotNetwork/Hadder?utm_source=github.com&utm_medium=referral&utm_content=BigBotNetwork/Hadder&utm_campaign=Badge_Grade) +[![CodeFactor](https://www.codefactor.io/repository/github/bigbotnetwork/hadder/badge)](https://www.codefactor.io/repository/github/bigbotnetwork/hadder) [![Crowdin](https://badges.crowdin.net/e/bc0babde730eb3eada34778502a31b03/localized.svg)](https://bbn.crowdin.com/hadder) diff --git a/docs/remove.md b/docs/remove.md deleted file mode 100644 index e69de29..0000000 diff --git a/pom.xml b/pom.xml index 5e8bc5b..b474ed6 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ net.dv8tion JDA - 4.0.0_70 + 4.0.0_73 org.json diff --git a/src/main/java/com/bbn/hadder/Rethink.java b/src/main/java/com/bbn/hadder/Rethink.java index ac894cf..ccbebdd 100644 --- a/src/main/java/com/bbn/hadder/Rethink.java +++ b/src/main/java/com/bbn/hadder/Rethink.java @@ -143,11 +143,11 @@ public class Rethink { } public void insertGuild(String id) { - this.insert("server", r.hashMap("id", id).with("prefix", "h.").with("links", "[]").with("linkchannel", "").with("message_id", "").with("role_id", "").with("invite_detect", false).with("language", "EN")); + this.insert("server", r.hashMap("id", id).with("prefix", "h.").with("links", "[]").with("linkchannel", "").with("message_id", "").with("role_id", "").with("invite_detect", false)); } public void insertUser(String id) { - this.insert("user", r.hashMap("id", id).with("prefix", "h.")); + this.insert("user", r.hashMap("id", id).with("prefix", "h.").with("language", "en")); } public void updateRules(String guild_id, String message_id, String role_id, String accept_emote, String decline_emote) { diff --git a/src/main/java/com/bbn/hadder/commands/moderation/RegionChangeCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/RegionChangeCommand.java index f1788fe..db283fe 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/RegionChangeCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/RegionChangeCommand.java @@ -19,130 +19,58 @@ public class RegionChangeCommand implements Command { if (event.getMember().hasPermission(Permission.MANAGE_SERVER) || event.getConfig().getOwners().toString().contains(event.getAuthor().getId())) { switch (args[0].toLowerCase()) { case "amsterdam": - event.getGuild().getManager().setRegion(Region.AMSTERDAM).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to Amsterdam.") - .build()).queue(); + setRegion(Region.AMSTERDAM, "Amsterdam", event); break; case "frankfurt": - event.getGuild().getManager().setRegion(Region.FRANKFURT).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to Frankfurt.") - .build()).queue(); + setRegion(Region.FRANKFURT, "Frankfurt", event); break; case "eu-west": - event.getGuild().getManager().setRegion(Region.EU_WEST).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to EU-West.") - .build()).queue(); + setRegion(Region.EU_WEST, "EU West", event); break; case "eu-central": - event.getGuild().getManager().setRegion(Region.EU_CENTRAL).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to EU-Central.") - .build()).queue(); + setRegion(Region.EU_CENTRAL, "EU Central", event); break; case "europe": - event.getGuild().getManager().setRegion(Region.EUROPE).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to Europe.") - .build()).queue(); + setRegion(Region.EUROPE, "EUROPE", event); break; case "brazil": - event.getGuild().getManager().setRegion(Region.BRAZIL).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to Brazil.") - .build()).queue(); + setRegion(Region.BRAZIL, "Brazil", event); break; case "hongkong": - event.getGuild().getManager().setRegion(Region.HONG_KONG).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to Hong Kong.") - .build()).queue(); + setRegion(Region.HONG_KONG, "Hong Kong", event); break; case "india": - event.getGuild().getManager().setRegion(Region.INDIA).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to India.") - .build()).queue(); + setRegion(Region.INDIA, "India", event); break; case "japan": - event.getGuild().getManager().setRegion(Region.JAPAN).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to Japan.") - .build()).queue(); + setRegion(Region.JAPAN, "Japan", event); break; case "london": - event.getGuild().getManager().setRegion(Region.LONDON).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to London.") - .build()).queue(); + setRegion(Region.LONDON, "London", event); break; case "russia": - event.getGuild().getManager().setRegion(Region.RUSSIA).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to Russia.") - .build()).queue(); + setRegion(Region.RUSSIA, "Russia", event); break; case "singapore": - event.getGuild().getManager().setRegion(Region.SINGAPORE).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to Singapore.") - .build()).queue(); + setRegion(Region.SINGAPORE, "Singapore", event); break; case "south-africa": - event.getGuild().getManager().setRegion(Region.SOUTH_AFRICA).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to South Africa.") - .build()).queue(); + setRegion(Region.SOUTH_AFRICA, "South Africa", event); break; case "sydney": - event.getGuild().getManager().setRegion(Region.SYDNEY).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to Sydney.") - .build()).queue(); + setRegion(Region.SYDNEY, "Sydney", event); break; case "us-central": - event.getGuild().getManager().setRegion(Region.US_CENTRAL).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to US Central.") - .build()).queue(); + setRegion(Region.US_CENTRAL, "US Central", event); break; case "us-east": - event.getGuild().getManager().setRegion(Region.US_EAST).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to US East.") - .build()).queue(); + setRegion(Region.US_EAST, "US East", event); break; case "us-west": - event.getGuild().getManager().setRegion(Region.US_WEST).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to US West.") - .build()).queue(); + setRegion(Region.US_WEST, "US West", event); break; case "us-south": - event.getGuild().getManager().setRegion(Region.US_SOUTH).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Successfully set region") - .setDescription("I successfully set the new server region to US South.") - .build()).queue(); + setRegion(Region.US_SOUTH, "US South", event); break; case "list": event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) @@ -159,6 +87,14 @@ public class RegionChangeCommand implements Command { .build()).queue(); } + public void setRegion (Region region, String region_name, CommandEvent event) { + event.getGuild().getManager().setRegion(region).reason("Region changed by " + event.getAuthor().getAsTag()).queue(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) + .setTitle("Successfully set region") + .setDescription("I successfully set the new server region to " + region_name + ".") + .build()).queue(); + } + @Override public String[] labels() { return new String[]{"changeregion", "cr", "change-region"}; diff --git a/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java index 07a86b4..063a97c 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java @@ -70,19 +70,17 @@ public class RulesCommand implements Command { .setDescription("The rules were successfully set. Please send me the name of the role which the user receives after he accepted the rules.") .build()).queue(); new EventWaiter().newOnMessageEventWaiter(event3 -> { - if (event.getMessage().getMentionedRoles().size() == 1) { - Role role = event.getMessage().getMentionedRoles().get(0); + if (event3.getMessage().getMentionedRoles().size() == 1) { + Role role = event3.getMessage().getMentionedRoles().get(0); setRole(event, channel, message, event3, role); - } else { - if (event3.getGuild().getRolesByName(event3.getMessage().getContentStripped(), true).size() > 0) { + } else if (event3.getGuild().getRolesByName(event3.getMessage().getContentStripped(), true).size() > 0) { Role role = event3.getGuild().getRolesByName(event3.getMessage().getContentStripped(), true).get(0); setRole(event, channel, message, event3, role); - } else { - event3.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING) - .setTitle("Role does not exist") - .setDescription("The specified role does not exist on this guild.") - .build()).queue(); - } + } else { + event3.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING) + .setTitle("Role does not exist") + .setDescription("The specified role does not exist on this guild.") + .build()).queue(); } }, event.getJDA(), event.getAuthor()); }, event.getJDA(), event.getAuthor()); diff --git a/src/main/java/com/bbn/hadder/commands/music/JoinCommand.java b/src/main/java/com/bbn/hadder/commands/music/JoinCommand.java index 6dbb093..7caf2ca 100644 --- a/src/main/java/com/bbn/hadder/commands/music/JoinCommand.java +++ b/src/main/java/com/bbn/hadder/commands/music/JoinCommand.java @@ -19,17 +19,25 @@ public class JoinCommand implements Command { AudioManager audioManager = event.getGuild().getAudioManager(); if(!audioManager.isAttemptingToConnect()) { VoiceChannel vc = event.getMember().getVoiceState().getChannel(); - if (!event.getGuild().getSelfMember().getVoiceState().getChannel().getId().equals(vc.getId())) { + if (event.getGuild().getSelfMember().getVoiceState().inVoiceChannel()) { + if (!event.getGuild().getSelfMember().getVoiceState().getChannel().getId().equals(vc.getId())) { + event.getGuild().getAudioManager().openAudioConnection(vc); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) + .setTitle("Successfully connected") + .setDescription("I successfully connected to " + vc.getName() + ".") + .build()).queue(); + } else { + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING) + .setTitle("Already connected") + .setDescription("I am already connected to your voice channel.") + .build()).queue(); + } + } else { event.getGuild().getAudioManager().openAudioConnection(vc); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) .setTitle("Successfully connected") .setDescription("I successfully connected to " + vc.getName() + ".") .build()).queue(); - } else { - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING) - .setTitle("Already connected") - .setDescription("I am already connected to your voice channel.") - .build()).queue(); } } else { event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING) diff --git a/src/main/java/com/bbn/hadder/commands/settings/LanguageCommand.java b/src/main/java/com/bbn/hadder/commands/settings/LanguageCommand.java index ce450f1..4faa2c6 100644 --- a/src/main/java/com/bbn/hadder/commands/settings/LanguageCommand.java +++ b/src/main/java/com/bbn/hadder/commands/settings/LanguageCommand.java @@ -14,12 +14,26 @@ public class LanguageCommand implements Command { public void executed(String[] args, CommandEvent event) { if (args.length == 1) { switch (args[0].toLowerCase()) { - case "DE": - event.getRethink().setLanguage(event.getAuthor().getId(), "DE"); - event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) - .setTitle("Language set") - .setDescription("German is your new language now.") - .build()).queue(); + case "de": + setLanguage("de", "German", event); + break; + case "en": + setLanguage("en", "English", event); + break; + case "es": + setLanguage("es", "Spanish", event); + break; + case "fr": + setLanguage("fr", "French", event); + break; + case "ru": + setLanguage("ru", "Russian", event); + break; + case "tr": + setLanguage("tr", "Turkish", event); + break; + case "zh": + setLanguage("zh", "Chinese", event); break; } } else { @@ -27,6 +41,14 @@ public class LanguageCommand implements Command { } } + public void setLanguage(String language_code, String language , CommandEvent event) { + event.getRethink().setLanguage(event.getAuthor().getId(), language_code); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO) + .setTitle("Language set") + .setDescription(language + " is your new language now.") + .build()).queue(); + } + @Override public String[] labels() { return new String[]{"language"}; diff --git a/src/main/java/com/bbn/hadder/listener/InviteLinkListener.java b/src/main/java/com/bbn/hadder/listener/InviteLinkListener.java index b8bc2bb..12c9da0 100644 --- a/src/main/java/com/bbn/hadder/listener/InviteLinkListener.java +++ b/src/main/java/com/bbn/hadder/listener/InviteLinkListener.java @@ -7,6 +7,7 @@ package com.bbn.hadder.listener; import com.bbn.hadder.Rethink; import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.ChannelType; +import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.events.message.MessageUpdateEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; @@ -30,67 +31,43 @@ public class InviteLinkListener extends ListenerAdapter { if (event.isFromType(ChannelType.TEXT)) { if (event.getMessage().getContentRaw().contains("discord.gg/")) { if (!event.getMember().hasPermission(Permission.ADMINISTRATOR) && rethink.getInviteDetection(event.getGuild().getId())) { - String split = event.getMessage().getContentRaw().split("discord.gg/", 10)[1]; - String invite = split.split(" ")[0]; - OkHttpClient client = new OkHttpClient(); - Request request = new Request.Builder().url("https://canary.discordapp.com/api/v6/invites/" + invite).build(); - try { - Response response = client.newCall(request).execute(); - JSONObject json = new JSONObject(response.body().string()); - if (!json.toString().contains("\"message\":")) { - event.getMessage().delete().reason("Invite Link detected").queue(); - } - } catch (Exception e) { - e.printStackTrace(); - } + checkInvite(event.getMessage(), "discord.gg/"); } - } else if (event.getMessage().getContentRaw().contains("discordapp.com/invite") && !event.getMember().hasPermission(Permission.ADMINISTRATOR) && rethink.getInviteDetection(event.getGuild().getId())) { - String split = event.getMessage().getContentRaw().split("discordapp.com/invite/", 10)[1]; - String invite = split.split(" ")[0]; - OkHttpClient client = new OkHttpClient(); - Request request = new Request.Builder().url("https://canary.discordapp.com/api/v6/invites/" + invite).build(); - try { - Response response = client.newCall(request).execute(); - JSONObject json = new JSONObject(response.body().string()); - if (!json.toString().contains("\"message\":")) { - event.getMessage().delete().reason("Invite Link detected").queue(); - } - } catch (Exception e) { - e.printStackTrace(); + } else if (event.getMessage().getContentRaw().contains("discordapp.com/invite")) { + if ( !event.getMember().hasPermission(Permission.ADMINISTRATOR) && rethink.getInviteDetection(event.getGuild().getId())) { + checkInvite(event.getMessage(), "discordapp.com/invite/"); } } } } + public void checkInvite(Message message, String regex) { + String split = message.getContentRaw().split(regex, 10)[1]; + String invite = split.split(" ")[0]; + OkHttpClient client = new OkHttpClient(); + Request request = new Request.Builder().url("https://canary.discordapp.com/api/v6/invites/" + invite).build(); + try { + Response response = client.newCall(request).execute(); + JSONObject json = new JSONObject(response.body().string()); + if (!json.toString().contains("\"message\":")) { + message.delete().reason("Invite Link detected").queue(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + @Override public void onMessageUpdate(@Nonnull MessageUpdateEvent event) { - if (event.isFromType(ChannelType.TEXT) && event.getMessage().getContentRaw().contains("discord.gg/") && !event.getMember().hasPermission(Permission.ADMINISTRATOR) && rethink.getInviteDetection(event.getGuild().getId())) { - String split = event.getMessage().getContentRaw().split("discord.gg/", 10)[1]; - String invite = split.split(" ")[0]; - OkHttpClient client = new OkHttpClient(); - Request request = new Request.Builder().url("https://canary.discordapp.com/api/v6/invites/" + invite).build(); - try { - Response response = client.newCall(request).execute(); - JSONObject json = new JSONObject(response.body().string()); - if (!json.toString().contains("\"message\":")) { - event.getMessage().delete().reason("Invite Link detected").queue(); + if (event.isFromType(ChannelType.TEXT)) { + if (event.getMessage().getContentRaw().contains("discord.gg/")) { + if (!event.getMember().hasPermission(Permission.ADMINISTRATOR) && rethink.getInviteDetection(event.getGuild().getId())) { + checkInvite(event.getMessage(), "discord.gg/"); } - } catch (Exception e) { - e.printStackTrace(); - } - } else if (event.getMessage().getContentRaw().contains("discordapp.com/invite") && !event.getMember().hasPermission(Permission.ADMINISTRATOR) && rethink.getInviteDetection(event.getGuild().getId())) { - String split = event.getMessage().getContentRaw().split("discordapp.com/invite/", 10)[1]; - String invite = split.split(" ")[0]; - OkHttpClient client = new OkHttpClient(); - Request request = new Request.Builder().url("https://canary.discordapp.com/api/v6/invites/" + invite).build(); - try { - Response response = client.newCall(request).execute(); - JSONObject json = new JSONObject(response.body().string()); - if (!json.toString().contains("\"message\":")) { - event.getMessage().delete().reason("Invite Link detected").queue(); + } else if (event.getMessage().getContentRaw().contains("discordapp.com/invite")) { + if (!event.getMember().hasPermission(Permission.ADMINISTRATOR) && rethink.getInviteDetection(event.getGuild().getId())) { + checkInvite(event.getMessage(), "discordapp.com/invite/"); } - } catch (Exception e) { - e.printStackTrace(); } } }