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.
[](https://github.com/BigBotNetwork/Hadder)
[](https://www.codacy.com/gh/BigBotNetwork/Hadder?utm_source=github.com&utm_medium=referral&utm_content=BigBotNetwork/Hadder&utm_campaign=Badge_Grade)
+[](https://www.codefactor.io/repository/github/bigbotnetwork/hadder)
[](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();
}
}
}