diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index a15e1a2..37a9d61 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -30,7 +30,7 @@ jobs:
uses: garygrossgarten/github-action-scp@release
with:
local: ./target/Hadder-Build.jar
- remote: /home/Bots/Hadder-Build.jar
+ remote: /home/Hadder-Build.jar
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
@@ -41,7 +41,7 @@ jobs:
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
- script: /home/Bots/deploy.sh
+ script: /home/deploy.sh
- name: Send Webhook Notification
if: always()
env:
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..bad7422
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,2 @@
+FROM debian:buster
+WORKDIR /home/Hadder
diff --git a/README.md b/README.md
index 11518a2..f7a3ccf 100644
--- a/README.md
+++ b/README.md
@@ -20,16 +20,13 @@ Hadder Discord is a multi-purpose Discord bot with 100% uptime.
Skidder#6775
Hax#6775
-### Designer
-TopComp#1288
-
## A few commands
| **Command** | **Description** |
|----------------|---------------------------------------------------------------|
| h.help | Shows each command and explains its usage. |
| h.about | Shows information about Hadder. |
| h.equals | Checks if two strings are the same. |
-| h.invite | Shows the invitation link to invite Hadder to your server. |
+| h.invite | Shows the invite link to invite Hadder to your server. |
| h.ping | Shows the ping to the Discord API. |
| h.avatar | Sends the avatar of the specified member. |
| h.gif | Looks for a GIF on Giphy. |
diff --git a/pom.xml b/pom.xml
index 712e13f..569e8aa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,22 +15,30 @@
1.13
+
+
+ jcenter
+ jcenter-bintray
+ https://jcenter.bintray.com
+
+
+
net.dv8tion
JDA
- 4.1.0_93
+ 4.1.0_97
org.json
json
20190722
-
- com.rethinkdb
- rethinkdb-driver
- 2.3.3
-
+
+ com.rethinkdb
+ rethinkdb-driver
+ 2.3.3
+
org.slf4j
slf4j-simple
@@ -39,7 +47,7 @@
club.minnced
discord-webhooks
- 0.1.8
+ 0.2.0
org.kohsuke
@@ -49,18 +57,10 @@
com.sedmelluq
lavaplayer
- 1.3.32
+ 1.3.33
-
-
- jcenter
- jcenter-bintray
- https://jcenter.bintray.com
-
-
-
diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java
index 85ca64f..b4a6cbb 100644
--- a/src/main/java/com/bbn/hadder/Hadder.java
+++ b/src/main/java/com/bbn/hadder/Hadder.java
@@ -11,6 +11,7 @@ import com.bbn.hadder.commands.settings.*;
import com.bbn.hadder.commands.music.*;
import com.bbn.hadder.core.*;
import com.bbn.hadder.listener.*;
+import net.dv8tion.jda.api.OnlineStatus;
import net.dv8tion.jda.api.entities.Activity;
import net.dv8tion.jda.api.sharding.DefaultShardManagerBuilder;
import net.dv8tion.jda.api.sharding.ShardManager;
@@ -39,6 +40,7 @@ public class Hadder {
builder.setAutoReconnect(true);
builder.setShardsTotal(1);
builder.setActivity(Activity.streaming("on the BigBotNetwork", "https://twitch.tv/BigBotNetwork"));
+ builder.setStatus(OnlineStatus.DO_NOT_DISTURB);
builder.setToken(config.getBotToken());
HelpCommand helpCommand = new HelpCommand();
@@ -99,7 +101,9 @@ public class Hadder {
new EditRulesCommand(),
new VolumeCommand(),
new StopCommand(),
- new BlacklistCommand()), config, helpCommand);
+ new BlacklistCommand(),
+ new PauseCommand(),
+ new LoopCommand()), config, helpCommand);
builder.addEventListeners(
new MentionListener(rethink),
diff --git a/src/main/java/com/bbn/hadder/Rethink.java b/src/main/java/com/bbn/hadder/Rethink.java
index 6ef9d10..f51814e 100644
--- a/src/main/java/com/bbn/hadder/Rethink.java
+++ b/src/main/java/com/bbn/hadder/Rethink.java
@@ -62,9 +62,25 @@ public class Rethink {
else return null;
}
- public void update(String table, String value, String what, String whatvalue) {
+ public void update(String table, String where, String what, String value) {
try {
- r.table(table).get(value).update(r.hashMap(what, whatvalue)).run(conn);
+ r.table(table).get(where).update(r.hashMap(what, value)).run(conn);
+ } catch (ClassCastException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void update(String table, String where, String what, int value) {
+ try {
+ r.table(table).get(where).update(r.hashMap(what, value)).run(conn);
+ } catch (ClassCastException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void update(String table, String where, String what, boolean value) {
+ try {
+ r.table(table).get(where).update(r.hashMap(what, value)).run(conn);
} catch (ClassCastException e) {
e.printStackTrace();
}
@@ -122,7 +138,8 @@ public class Rethink {
}
public void insertGuild(String id) {
- this.insert("server", r.hashMap("id", id)
+ this.insert("server", r
+ .hashMap("id", id)
.with("prefix", "h.")
.with("message_id", "")
.with("role_id", "")
@@ -133,7 +150,11 @@ public class Rethink {
}
public void insertUser(String id) {
- this.insert("user", r.hashMap("id", id).with("prefix", "h.").with("language", "en").with("blacklisted", "none"));
+ this.insert("user", r
+ .hashMap("id", id)
+ .with("prefix", "h.")
+ .with("language", "en")
+ .with("blacklisted", "none"));
}
public void setBlackListed(String id, String commands) {
@@ -204,11 +225,7 @@ public class Rethink {
}
public void setInviteDetection(String guild_id, boolean b) {
- try {
- r.table("server").get(guild_id).update(r.hashMap("invite_detect", b)).run(conn);
- } catch (ClassCastException e) {
- e.printStackTrace();
- }
+ this.update("server", guild_id, "invite_detect", b);
}
public Boolean getInviteDetection(String guild_id) {
diff --git a/src/main/java/com/bbn/hadder/audio/TrackManager.java b/src/main/java/com/bbn/hadder/audio/TrackManager.java
index b4c1e9a..91fa146 100644
--- a/src/main/java/com/bbn/hadder/audio/TrackManager.java
+++ b/src/main/java/com/bbn/hadder/audio/TrackManager.java
@@ -19,6 +19,7 @@ public class TrackManager extends AudioEventAdapter {
private final AudioPlayer player;
private final Queue queue;
+ private boolean loop = false;
public TrackManager(AudioPlayer player) {
this.player = player;
@@ -47,11 +48,13 @@ public class TrackManager extends AudioEventAdapter {
@Override
public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason endReason) {
- Guild g = queue.poll().getAuthor().getGuild();
- if (queue.isEmpty()) {
+ Guild g = queue.element().getAuthor().getGuild();
+ if (loop) {
+ player.playTrack(track.makeClone());
+ } else if (queue.isEmpty()) {
g.getAudioManager().closeAudioConnection();
} else {
- player.playTrack(queue.element().getTrack());
+ player.playTrack(queue.element().getTrack().makeClone());
}
}
@@ -67,6 +70,16 @@ public class TrackManager extends AudioEventAdapter {
queue.remove(entry);
}
+ public boolean isLoop()
+ {
+ return loop;
+ }
+
+ public void setLoop(boolean repeating)
+ {
+ this.loop = repeating;
+ }
+
public AudioInfo getTrackInfo(AudioTrack track) {
return queue.stream().filter(audioInfo -> audioInfo.getTrack().equals(track)).findFirst().orElse(null);
}
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 8da4db5..7322465 100644
--- a/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/general/HelpCommand.java
@@ -59,7 +59,7 @@ public class HelpCommand implements Command {
public void sendHelp(Command cmd, CommandEvent event) {
if (!cmd.getClass().getPackageName().endsWith("owner") || (cmd.getClass().getPackageName().endsWith("owner") &&
(event.getAuthor().getId().equals("477141528981012511") || event.getAuthor().getId().equals("261083609148948488")))) {
- String name = labels()[0];
+ String name = cmd.labels()[0];
StringBuilder b = new StringBuilder();
b.append(event.getMessageEditor().getTerm("commands.general.help.description")).append(" ").append(event.getMessageEditor().getTerm(cmd.description())).append("\n");
if (cmd.usage() != null) {
diff --git a/src/main/java/com/bbn/hadder/commands/moderation/RoleCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/RoleCommand.java
index b5049ec..47842e8 100644
--- a/src/main/java/com/bbn/hadder/commands/moderation/RoleCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/moderation/RoleCommand.java
@@ -36,7 +36,7 @@ public class RoleCommand implements Command {
event.getMessageEditor().getMessage(
MessageEditor.MessageType.INFO,
"commands.moderation.role.add.success.title",
- "✅",
+ "",
"",
"commands.moderation.role.add.success.description",
String.valueOf(event.getMessage().getMentionedRoles().size()),
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 fc432c2..48951c5 100644
--- a/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java
@@ -55,7 +55,10 @@ public class RulesCommand implements Command {
}
}, event.getJDA(), event.getAuthor());
} else {
- event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.NO_SELF_PERMISSION).build()).queue();
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
+ "commands.moderation.rules.error.permission.title",
+ "commands.moderation.rules.error.permission.description")
+ .build()).queue();
}
}
@@ -221,7 +224,10 @@ public class RulesCommand implements Command {
.build()).queue();
}
} else {
- event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.NO_SELF_PERMISSION).build()).queue();
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
+ "commands.moderation.rules.error.interact.title",
+ "commands.moderation.rules.error.interact.description")
+ .build()).queue();
}
}
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 ceafccd..acce3c6 100644
--- a/src/main/java/com/bbn/hadder/commands/music/JoinCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/music/JoinCommand.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.entities.VoiceChannel;
+import net.dv8tion.jda.api.exceptions.InsufficientPermissionException;
import net.dv8tion.jda.api.managers.AudioManager;
/*
@@ -20,15 +21,22 @@ public class JoinCommand implements Command {
VoiceChannel vc = event.getMember().getVoiceState().getChannel();
if (event.getGuild().getSelfMember().getVoiceState().inVoiceChannel()) {
if (!event.getGuild().getSelfMember().getVoiceState().getChannel().getId().equals(vc.getId())) {
- event.getGuild().getAudioManager().openAudioConnection(vc);
- event.getTextChannel().sendMessage(
- event.getMessageEditor().getMessage(
- MessageEditor.MessageType.INFO,
- "commands.music.join.success.title",
- "",
- "commands.music.join.success.description",
- vc.getName())
- .build()).queue();
+ try {
+ event.getGuild().getAudioManager().openAudioConnection(vc);
+ event.getTextChannel().sendMessage(
+ event.getMessageEditor().getMessage(
+ MessageEditor.MessageType.INFO,
+ "commands.music.join.success.title",
+ "",
+ "commands.music.join.success.description",
+ vc.getName())
+ .build()).queue();
+ } catch (InsufficientPermissionException e) {
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
+ "commands.music.join.error.permission.title",
+ "commands.music.join.error.permission.description")
+ .build()).queue();
+ }
} else {
event.getTextChannel().sendMessage(
event.getMessageEditor().getMessage(
@@ -38,12 +46,19 @@ public class JoinCommand implements Command {
.build()).queue();
}
} else {
- event.getGuild().getAudioManager().openAudioConnection(vc);
- event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(
- MessageEditor.MessageType.INFO,
- "commands.music.join.success.title", "",
- "commands.music.join.success.description", vc.getName())
- .build()).queue();
+ try {
+ event.getGuild().getAudioManager().openAudioConnection(vc);
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(
+ MessageEditor.MessageType.INFO,
+ "commands.music.join.success.title", "",
+ "commands.music.join.success.description", vc.getName())
+ .build()).queue();
+ } catch (InsufficientPermissionException e) {
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
+ "commands.music.join.error.permission.title",
+ "commands.music.join.error.permission.description")
+ .build()).queue();
+ }
}
} else {
event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(
diff --git a/src/main/java/com/bbn/hadder/commands/music/LeaveCommand.java b/src/main/java/com/bbn/hadder/commands/music/LeaveCommand.java
index ec9043c..8636984 100644
--- a/src/main/java/com/bbn/hadder/commands/music/LeaveCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/music/LeaveCommand.java
@@ -13,17 +13,24 @@ public class LeaveCommand implements Command {
@Override
public void executed(String[] args, CommandEvent event) {
if (event.getGuild().getSelfMember().getVoiceState().inVoiceChannel()) {
- event.getGuild().getAudioManager().closeAudioConnection();
- event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(
- MessageEditor.MessageType.INFO,
- "commands.music.leave.success.title",
- "commands.music.leave.success.description")
- .build()).queue();
+ if (event.getMember().getVoiceState().inVoiceChannel() && event.getGuild().getSelfMember().getVoiceState().getChannel().equals(event.getMember().getVoiceState().getChannel())) {
+ event.getGuild().getAudioManager().closeAudioConnection();
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(
+ MessageEditor.MessageType.INFO,
+ "commands.music.leave.success.title",
+ "commands.music.leave.success.description")
+ .build()).queue();
+ } else {
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
+ "commands.music.leave.error.channel.title",
+ "commands.music.leave.error.channel.description")
+ .build()).queue();
+ }
} else {
event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(
MessageEditor.MessageType.ERROR,
- "commands.music.leave.error.tile",
- "commands.music.leave.error.description")
+ "commands.music.leave.error.connected.tile",
+ "commands.music.leave.error.connected.description")
.build()).queue();
}
}
diff --git a/src/main/java/com/bbn/hadder/commands/music/LoopCommand.java b/src/main/java/com/bbn/hadder/commands/music/LoopCommand.java
new file mode 100644
index 0000000..5003134
--- /dev/null
+++ b/src/main/java/com/bbn/hadder/commands/music/LoopCommand.java
@@ -0,0 +1,56 @@
+package com.bbn.hadder.commands.music;
+
+import com.bbn.hadder.commands.Command;
+import com.bbn.hadder.commands.CommandEvent;
+import com.bbn.hadder.utils.MessageEditor;
+
+/**
+ * @author Skidder / GregTCLTK
+ */
+
+public class LoopCommand implements Command {
+
+ @Override
+ public void executed(String[] args, CommandEvent event) {
+ if (event.getAudioManager().hasPlayer(event.getGuild()) && event.getAudioManager().getPlayer(event.getGuild()).getPlayingTrack() != null) {
+ if (event.getMember().getVoiceState().inVoiceChannel() && event.getGuild().getSelfMember().getVoiceState().inVoiceChannel() && event.getGuild().getSelfMember().getVoiceState().getChannel().equals(event.getMember().getVoiceState().getChannel())) {
+ if (event.getAudioManager().getTrackManager(event.getGuild()).isLoop()) {
+ event.getAudioManager().getTrackManager(event.getGuild()).setLoop(false);
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO, "commands.music.loop.success.unloop.title", "commands.music.loop.success.unloop.description").build()).queue();
+ } else {
+ event.getAudioManager().getTrackManager(event.getGuild()).setLoop(true);
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO, "commands.music.loop.success.loop.title", "commands.music.loop.success.loop.description").build()).queue();
+ }
+ } else {
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
+ "commands.music.loop.error.connected.title",
+ "commands.music.loop.error.connected.description")
+ .build()).queue();
+ }
+ } else {
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
+ "commands.music.info.error.title",
+ "commands.music.info.error.description").build()).queue();
+ }
+ }
+
+ @Override
+ public String[] labels() {
+ return new String[]{"loop", "repeat"};
+ }
+
+ @Override
+ public String description() {
+ return "commands.music.loop.help.description";
+ }
+
+ @Override
+ public String usage() {
+ return null;
+ }
+
+ @Override
+ public String example() {
+ return null;
+ }
+}
diff --git a/src/main/java/com/bbn/hadder/commands/music/PauseCommand.java b/src/main/java/com/bbn/hadder/commands/music/PauseCommand.java
new file mode 100644
index 0000000..f67a099
--- /dev/null
+++ b/src/main/java/com/bbn/hadder/commands/music/PauseCommand.java
@@ -0,0 +1,61 @@
+package com.bbn.hadder.commands.music;
+
+/*
+ * @author Skidder / GregTCLTK
+ */
+
+import com.bbn.hadder.commands.Command;
+import com.bbn.hadder.commands.CommandEvent;
+import com.bbn.hadder.utils.MessageEditor;
+
+public class PauseCommand implements Command {
+
+ @Override
+ public void executed(String[] args, CommandEvent event) {
+ if (event.getAudioManager().hasPlayer(event.getGuild()) && event.getAudioManager().getPlayer(event.getGuild()).getPlayingTrack() != null) {
+ if (event.getMember().getVoiceState().inVoiceChannel() && event.getGuild().getSelfMember().getVoiceState().inVoiceChannel() && event.getGuild().getSelfMember().getVoiceState().getChannel().equals(event.getMember().getVoiceState().getChannel())) {
+ if (!event.getAudioManager().getPlayer(event.getGuild()).isPaused()) {
+ event.getAudioManager().getPlayer(event.getGuild()).setPaused(true);
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
+ "commands.music.pause.success.title",
+ "commands.music.pause.success.description")
+ .build()).queue();
+ } else {
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
+ "commands.music.pause.error.paused.title",
+ "commands.music.pause.error.paused.description")
+ .build()).queue();
+ }
+ } else {
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
+ "commands.music.pause.error.connected.title",
+ "commands.music.pause.error.connected.description")
+ .build()).queue();
+ }
+ } else {
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
+ "commands.music.info.error.title",
+ "commands.music.info.error.description").build()).queue();
+ }
+ }
+
+ @Override
+ public String[] labels() {
+ return new String[]{"pause"};
+ }
+
+ @Override
+ public String description() {
+ return "commands.music.pause.help.description";
+ }
+
+ @Override
+ public String usage() {
+ return null;
+ }
+
+ @Override
+ public String example() {
+ return null;
+ }
+}
diff --git a/src/main/java/com/bbn/hadder/commands/music/PlayCommand.java b/src/main/java/com/bbn/hadder/commands/music/PlayCommand.java
index 299d222..1646769 100644
--- a/src/main/java/com/bbn/hadder/commands/music/PlayCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/music/PlayCommand.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.entities.Message;
+import net.dv8tion.jda.api.exceptions.InsufficientPermissionException;
import java.net.URL;
@@ -24,6 +25,11 @@ public class PlayCommand implements Command {
"commands.music.play.load.title", "⭕",
"commands.music.play.load.description", "").build()).complete();
event.getAudioManager().loadTrack(input, event, msg);
+ } catch (InsufficientPermissionException e) {
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
+ "commands.music.join.error.permission.title",
+ "commands.music.join.error.permission.description")
+ .build()).queue();
} catch (Exception ignore) {
Message msg = event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
"commands.music.play.load.title", "⭕",
@@ -37,6 +43,19 @@ public class PlayCommand implements Command {
"commands.music.join.error.channel.description")
.build()).queue();
}
+ } else if (event.getAudioManager().getPlayer(event.getGuild()).isPaused()) {
+ if (event.getMember().getVoiceState().inVoiceChannel() && event.getGuild().getSelfMember().getVoiceState().inVoiceChannel() && event.getGuild().getSelfMember().getVoiceState().getChannel().equals(event.getMember().getVoiceState().getChannel())) {
+ event.getAudioManager().getPlayer(event.getGuild()).setPaused(false);
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
+ "commands.music.play.success.unpause.title",
+ "commands.music.play.success.unpause.description")
+ .build()).queue();
+ } else {
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
+ "commands.music.play.error.connected.title",
+ "commands.music.play.error.connected.description")
+ .build()).queue();
+ }
} else event.getHelpCommand().sendHelp(this, event);
}
diff --git a/src/main/java/com/bbn/hadder/commands/music/SkipCommand.java b/src/main/java/com/bbn/hadder/commands/music/SkipCommand.java
index c2265bd..40f366f 100644
--- a/src/main/java/com/bbn/hadder/commands/music/SkipCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/music/SkipCommand.java
@@ -13,10 +13,16 @@ public class SkipCommand implements Command {
@Override
public void executed(String[] args, CommandEvent event) {
if (event.getAudioManager().hasPlayer(event.getGuild()) && !event.getAudioManager().getTrackManager(event.getGuild()).getQueuedTracks().isEmpty()) {
- event.getAudioManager().forceSkipTrack(event);
- event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
- "commands.music.skip.success.title",
- "commands.music.skip.success.description").build()).queue();
+ if (event.getMember().getVoiceState().inVoiceChannel() && event.getGuild().getSelfMember().getVoiceState().inVoiceChannel() && event.getGuild().getSelfMember().getVoiceState().getChannel().equals(event.getMember().getVoiceState().getChannel())) {
+ event.getAudioManager().forceSkipTrack(event);
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
+ "commands.music.skip.success.title",
+ "commands.music.skip.success.description").build()).queue();
+ } else {
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
+ "commands.music.skip.error.connected.title",
+ "commands.music.skip.error.connected.description ").build()).queue();
+ }
} else {
event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
"commands.music.info.error.title",
diff --git a/src/main/java/com/bbn/hadder/commands/music/StopCommand.java b/src/main/java/com/bbn/hadder/commands/music/StopCommand.java
index b9336bc..56cd891 100644
--- a/src/main/java/com/bbn/hadder/commands/music/StopCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/music/StopCommand.java
@@ -13,13 +13,20 @@ public class StopCommand implements Command {
@Override
public void executed(String[] args, CommandEvent event) {
if (event.getAudioManager().hasPlayer(event.getGuild()) && event.getAudioManager().getPlayer(event.getGuild()).getPlayingTrack() != null) {
- event.getAudioManager().players.remove(event.getGuild().getId());
- event.getAudioManager().getPlayer(event.getGuild()).destroy();
- event.getAudioManager().getTrackManager(event.getGuild()).purgeQueue();
- event.getGuild().getAudioManager().closeAudioConnection();
- event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
- "commands.music.stop.success.title",
- "commands.music.stop.success.description").build()).queue();
+ if (event.getMember().getVoiceState().inVoiceChannel() && event.getGuild().getSelfMember().getVoiceState().inVoiceChannel() && event.getGuild().getSelfMember().getVoiceState().getChannel().equals(event.getMember().getVoiceState().getChannel())) {
+ event.getAudioManager().players.remove(event.getGuild().getId());
+ event.getAudioManager().getPlayer(event.getGuild()).destroy();
+ event.getAudioManager().getTrackManager(event.getGuild()).purgeQueue();
+ event.getGuild().getAudioManager().closeAudioConnection();
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
+ "commands.music.stop.success.title",
+ "commands.music.stop.success.description").build()).queue();
+ } else {
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
+ "commands.music.stop.error.connected.title",
+ "commands.music.stop.error.connected.description")
+ .build()).queue();
+ }
} else {
event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
"commands.music.info.error.title",
diff --git a/src/main/java/com/bbn/hadder/commands/music/VolumeCommand.java b/src/main/java/com/bbn/hadder/commands/music/VolumeCommand.java
index d0d058b..a7d3546 100644
--- a/src/main/java/com/bbn/hadder/commands/music/VolumeCommand.java
+++ b/src/main/java/com/bbn/hadder/commands/music/VolumeCommand.java
@@ -14,22 +14,29 @@ public class VolumeCommand implements Command {
public void executed(String[] args, CommandEvent event) {
if (args.length > 0) {
if (event.getAudioManager().hasPlayer(event.getGuild()) && event.getAudioManager().getPlayer(event.getGuild()).getPlayingTrack() != null) {
- try {
- int volume = Integer.parseInt(args[0]);
- if (volume < 201 && volume > 0 || event.getConfig().getOwners().contains(event.getAuthor().getIdLong())) {
- event.getAudioManager().getPlayer(event.getGuild()).setVolume(volume);
- event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
- "commands.music.volume.success.title", "",
- "commands.music.volume.success.description", String.valueOf(volume)).build()).queue();
- } else {
- event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
- "commands.music.volume.error.int.title",
- "commands.music.volume.error.int.description").build()).queue();
+ if (event.getMember().getVoiceState().inVoiceChannel() && event.getGuild().getSelfMember().getVoiceState().inVoiceChannel() && event.getGuild().getSelfMember().getVoiceState().getChannel().equals(event.getMember().getVoiceState().getChannel())) {
+ try {
+ int volume = Integer.parseInt(args[0]);
+ if (volume < 201 && volume > 0 || event.getConfig().getOwners().contains(event.getAuthor().getIdLong())) {
+ event.getAudioManager().getPlayer(event.getGuild()).setVolume(volume);
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
+ "commands.music.volume.success.title", "",
+ "commands.music.volume.success.description", String.valueOf(volume)).build()).queue();
+ } else {
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
+ "commands.music.volume.error.int.title",
+ "commands.music.volume.error.int.description").build()).queue();
+ }
+ } catch (NumberFormatException e) {
+ event.getHelpCommand().sendHelp(this, event);
+ } catch (Exception e) {
+ e.printStackTrace();
}
- } catch (NumberFormatException e) {
- event.getHelpCommand().sendHelp(this, event);
- } catch (Exception e) {
- e.printStackTrace();
+ } else {
+ event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
+ "commands.music.volume.error.connected.title",
+ "commands.volume.stop.error.connected.description")
+ .build()).queue();
}
} else {
event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
diff --git a/src/main/resources/Translations/Translations_de.properties b/src/main/resources/Translations/Translations_de.properties
index 6e6e7af..41eee21 100644
--- a/src/main/resources/Translations/Translations_de.properties
+++ b/src/main/resources/Translations/Translations_de.properties
@@ -29,10 +29,10 @@ commands.general.equals.string.equals.false = Ja, aber eigentlich nein. Das ist
commands.general.equals.string.first = Erster String\:
commands.general.equals.string.second = Zweiter String\:
commands.general.equals.string.result = Ergebnis\:
-commands.general.equals.help.description = Checks if two strings are the same.
-commands.general.help.description = **Description\:**
+commands.general.equals.help.description = Prüft, ob zwei Strings gleich sind.
+commands.general.help.description = **Beschreibung\:**
commands.general.help.usage = **Benutzung\:**
-commands.general.help.example = **Example\:**
+commands.general.help.example = **Beispiel\:**
commands.general.help.error.description = Ich brauche die Links Einbetten Berechtigung, um das Hilfe-Menü zu senden\!
commands.general.help.help.description = Zeigt jeden Befehl an und erklärt seine Verwendung.
commands.general.help.help.label = [Name des Commands]
@@ -45,8 +45,8 @@ commands.misc.feedback.title.request.title = Feedback-Thema
commands.misc.feedback.title.request.description = Bitte senden Sie mir das Thema des Feedbacks.
commands.misc.feedback.description.request.title = Feedback Beschreibung
commands.misc.feedback.description.request.description = Bitte senden Sie mir jetzt die Feedback Beschreibung.
-commands.misc.feedback.help.description = Sendet Feedback direkt an die Entwickler.
commands.misc.feedback.success.title = Feedback erfolgreich gesendet\!
+commands.misc.feedback.help.description = Sendet Feedback direkt an die Entwickler.
commands.misc.github.link.title = Verbinde dein GitHub Konto
commands.misc.github.success.title = Informationen über %extra%
commands.misc.github.success.bio = Biographie
@@ -56,10 +56,10 @@ commands.misc.github.success.repositories = Öffentliche Repositories
commands.misc.github.success.gists = Öffentliche Gists
commands.misc.github.success.followers = Abonnenten
commands.misc.github.success.following = Folgt
-commands.misc.github.api.error.title = API error
+commands.misc.github.api.error.title = API-Fehler
commands.misc.github.api.error.description = Die GitHub API könnte im Moment nicht verfügbar sein\!
-commands.misc.github.user.error.title = User doesn't exist
-commands.misc.github.user.error.description = I can not find a user named like this\!
+commands.misc.github.user.error.title = Benutzer existiert nicht
+commands.misc.github.user.error.description = Ich kann keinen Benutzer finden der so heißt\!
commands.misc.github.connect.title = Verbinde dein GH Konto
commands.misc.github.connect.description = [Bitte verbinde dein GitHub-Konto hier]%extra%
commands.misc.github.help.description = Zeigt Informationen über ein GitHub Benutzerprofil an.
@@ -79,11 +79,11 @@ commands.moderation.ban.success.description = Ich habe %extra% erfolgreich geban
commands.moderation.ban.error.title = Nicht möglich
commands.moderation.ban.myself.error.description = Ich kann mich nicht selbst bannen\!
commands.moderation.ban.yourself.error.description = Du kannst dich nicht selbst bannen\!
-commands.moderation.ban.massban.success.description = I successfully banned %extra% members\!
-commands.moderation.ban.help.description = Bans one or more users from the server.
-commands.moderation.lear.all.success.title = Erfolgreich gelöscht
-commands.moderation.lear.all.success.description = Ich habe erfolgreich %extra% Nachrichten gelöscht.
-commands.moderation.clear.number.error.title = Invalid number
+commands.moderation.ban.massban.success.description = Ich habe erfolgreich %extra% Mitglieder gebannt\!
+commands.moderation.ban.help.description = Bannt einen oder mehrere Benutzer vom Server.
+commands.moderation.clear.all.success.title = Erfolgreich gelöscht
+commands.moderation.clear.all.success.description = Ich habe erfolgreich %extra% Nachrichten gelöscht.
+commands.moderation.clear.number.error.title = Ungültige Nummer
commands.moderation.clear.number.error.description = Sie müssen eine Zahl zwischen 1 und 99 wählen\!
commands.moderation.clear.success.title = Erfolgreich gelöscht
commands.moderation.clear.success.description.singular = Nachricht erfolgreich gelöscht.
@@ -96,11 +96,11 @@ commands.moderation.prefix.success.description = Ich habe den neuen Prefix für
commands.moderation.prefix.error.description = Der Prefix darf nicht **"** enthalten
commands.moderation.prefix.help.description = Legt den Guild-Prefix fest.
commands.moderation.invitedetect.activate.success.title = Erfolgreich aktiviert
-commands.moderation.invitedetect.activate.success.description = I successfully activated the invite link detection for this guild.
+commands.moderation.invitedetect.activate.success.description = Ich habe erfolgreich die Erkennung für Einladungslinks auf diesem Server aktiviert.
commands.moderation.invitedetect.activate.error.title = Bereits aktiviert
-commands.moderation.invitedetect.activate.error.description = The invite link detection is already activated on this guild.
+commands.moderation.invitedetect.activate.error.description = Die Erkennung für Einladungslinks ist bereits auf diesem Server aktiviert.
commands.moderation.invitedetect.deactivate.success.title = Erfolgreich deaktiviert
-commands.moderation.invitedetect.deactivate.success.description = I successfully deactivated the invite link detection for this guild.
+commands.moderation.invitedetect.deactivate.success.description = Ich habe erfolgreich die Erkennung für Einladungslinks auf diesem Server deaktiviert.
commands.moderation.invitedetect.deactivate.error.title = Bereits deaktiviert
commands.moderation.invitedetect.deactivate.error.description = Die Einladungslink-Erkennung ist auf dieser Guild bereits deaktiviert.
commands.moderation.invitedetect.help.description = Aktiviert oder deaktiviert die Discord Einladungserkennung.
@@ -121,21 +121,23 @@ commands.moderation.regionchange.regions.title = Alle Regionen
commands.moderation.regionchange.success.title = Region erfolgreich gesetzt
commands.moderation.regionchange.success.description = Ich habe die neue Serverregion erfolgreich zu %extra% geändert.
commands.moderation.regionchange.help.description = Changes the server region to locked regions.
-commands.moderation.role.add.success.title = Rolle(n) Erfolgreich hinzugefügt
+commands.moderation.role.add.success.title = Rolle(n) erfolgreich hinzugefügt
commands.moderation.role.add.success.description = Ich habe %extra% Rollen zu %extra_two% Mitgliedern hinzugefügt.
commands.moderation.role.remove.success.title = Rolle(n) erfolgreich entfernt
commands.moderation.role.remove.success.description = Ich habe %extra% Rollen von %extra_two% Mitgliedern entfernt.
-commands.moderation.role.help.description = Adds and removes one or more role(s) from one or more user(s)
-commands.moderation.rules.setup.title = Set up rules
+commands.moderation.role.help.description = Fügt und entfernt eine oder mehrere Rolle(n) von einem oder mehreren Benutzer(n) hinzu
+commands.moderation.rules.setup.title = Richte Regeln ein
commands.moderation.rules.setup.description = Welcome to the Hadder rules setup. Please mention the channel in which I should send the rules. Your message should look like\: \#rules or \#verify.
commands.moderation.rules.channel.error.title = Kanal konnte nicht gefunden werden
commands.moderation.rules.channel.error.description = Ich kann den angegebenen Kanal nicht finden. Bitte starte das Setup erneut.
commands.moderation.rules.rules.title = Rules message
commands.moderation.rules.rules.description = Der Kanal wurde erfolgreich auf %extra% gesetzt. Bitte senden Sie mir jetzt die Regeln.
-commands.moderation.rules.role.title = Role to assign
-commands.moderation.rules.role.description = The rules were successfully set. Please send me the name of the role which the user receives after he accepted the rules.
+commands.moderation.rules.role.title = Role to assign/remove
+commands.moderation.rules.role.description = The rules were successfully set. Please send me the name of the role which the user receives/loses after he accepted the rules.
commands.moderation.rules.role.error.title = Rolle existiert nicht
commands.moderation.rules.role.error.description = The specified role does not exist on this guild.
+commands.moderation.rules.role.permission.error.title = No permission
+commands.moderation.rules.role.permission.error.description = You cannot select this role because you cannot interact with it.
commands.moderation.rules.guild.error.title = Falsche Guild
commands.moderation.rules.guild.error.description = The mentioned channel must be on this guild\!
commands.moderation.rules.emote.accept.title = Custom Accept Emote
@@ -151,8 +153,13 @@ commands.moderation.rules.success.title = Successfully set the rules
commands.moderation.rules.success.description = I successfully send the rules in %extra%.
commands.moderation.rules.error.message.title = Can't write messages
commands.moderation.rules.error.message.description = I can not write messages in the specified channel
+commands.moderation.rules.error.permission.title = No permission
+commands.moderation.rules.error.permission.description = To execute this command, I need the `MANAGE_ROLES` permission.
+commands.moderation.rules.error.interact.title = Can't interact
+commands.moderation.rules.error.interact.description = I can not interact with the specified role. Make sure my role is higher than the specified role.
commands.moderation.rules.help.description = Setup the rules on your Discord server
commands.moderation.starboard.success.title = Successfully set the Channel\!
+commands.moderation.starboard.help.description = Sets the starboard channel.
commands.moderation.editrules.channel.title = Rules channel
commands.moderation.editrules.channel.description = Please send me the channel with the rules as mention
commands.moderation.editrules.channel.found.error.title = Kanal konnte nicht gefunden werden
@@ -168,51 +175,79 @@ commands.moderation.editrules.success.description = I successfully changed the r
commands.moderation.editrules.help.description = Edits the rules message.
commands.music.join.success.title = Successfully connected
-commands.music.join.success.description = I successfully connected to %extra%.
+commands.music.join.success.description = Ich habe mich erfolgreich mit %extra% verbunden.
commands.music.join.error.connecting.already.title = Already connected
-commands.music.join.error.connecting.already.description = I am already connected to your voice channel
-commands.music.join.error.connecting.trying.title = Already trying to connect
-commands.music.join.error.connecting.trying.description = Hadder is already trying to connect. Please wait a moment
-commands.music.join.error.channel.title = No Voice Channel
-commands.music.join.error.channel.description = You aren't in a Voice Channel.
-commands.music.join.help.description = Joins your voice channel
-commands.music.leave.success.title = Successfully disconnected
-commands.music.leave.success.description = I successfully disconnected from the Voice Channel
-commands.music.leave.error.tile = Nicht verbunden
-commands.music.leave.error.description = Ich bin derzeit in keinem Sprachkanal auf dieser Guild
-commands.music.leave.help.description = Verlässt einen Sprachkanal
+commands.music.join.error.connecting.already.description = Ich bin bereits mit deinem Sprachkanal verbunden
+commands.music.join.error.connecting.trying.title = Verbindung wird bereits hergestellt
+commands.music.join.error.connecting.trying.description = Hadder versucht bereits, sich zu verbinden. Bitte warten Sie einen Moment
+commands.music.join.error.channel.title = Kein Sprachkanal
+commands.music.join.error.channel.description = Du befindest dich nicht in einem Sprachkanal.
+commands.music.join.error.permission.title = No permission
+commands.music.join.error.permission.description = I am not allowed to join your voice channel.
+commands.music.join.help.description = Tritt deinem Sprachkanal bei.
+commands.music.leave.success.title = Verbindung erfolgreich getrennt
+commands.music.leave.success.description = Ich habe die Verbindung zum Sprachkanal erfolgreich getrennt
+commands.music.leave.error.channel.title = No channel
+commands.music.leave.error.channel.description = You have to be in the same voice channel as the bot.
+commands.music.leave.error.connected.tile = Nicht verbunden
+commands.music.leave.error.connected.description = Ich bin derzeit in keinem Sprachkanal auf dieser Guild
+commands.music.leave.help.description = Leaves your voice channel.
commands.music.play.load.title = %extra% Now loading %extra%
commands.music.play.load.description = Trying to load the song...
-commands.music.play.success.loading.title = %extra% Now playing %extra%
-commands.music.play.success.title = Title
-commands.music.play.success.author = Author
-commands.music.play.success.length = Length
+commands.music.play.success.loading.title = %extra% Jetzt läuft %extra%
+commands.music.play.success.title = Titel
+commands.music.play.success.author = Autor
+commands.music.play.success.length = Länge
commands.music.play.success.tracks = Tracks
-commands.music.play.error.load.title = %extra% Load failed %extra%
-commands.music.play.error.load.description = Unfortunately I can not load the given song
+commands.music.play.error.load.title = %extra% Laden fehlgeschlagen %extra%
+commands.music.play.error.load.description = Leider kann ich das angegebene Lied nicht laden
commands.music.play.error.match.title = %extra% No matches %extra%
-commands.music.play.error.match.description = I can not find a song named this on YouTube
-commands.music.play.help.description = Plays a song
-commands.music.stop.success.title = Successfully stopped
-commands.music.stop.success.description = I successfully stopped the song.
+commands.music.play.error.match.description = Ich kann keinen Song mit diesem Namen auf YouTube finden
+commands.music.play.success.unpause.title = Successfully continued
+commands.music.play.success.unpause.description = I successfully continued playing the song.
+commands.music.play.error.connected.title = No channel
+commands.music.play.error.connected.description = You have to be in the same voice channel as the bot to continue the song.
+commands.music.play.help.description = Spielt den angegebenen Song ab.
+commands.music.stop.success.title = Erfolgreich gestoppt
+commands.music.stop.success.description = Ich habe den Song erfolgreich gestoppt.
+commands.music.stop.error.connected.title = No channel
+commands.music.stop.error.connected.description = You have to be in the same voice channel as the bot to stop the song.
+commands.music.stop.help.description = Stoppt den Song.
commands.music.info.success.title = Track info
commands.music.info.error.title = No playing track
commands.music.info.error.description = I am not playing anything at the moment
-commands.music.info.help.description = Shows information about the playing song
-commands.music.stop.help.description = Stops the song
-commands.music.queue.error.title = No queue
-commands.music.queue.error.description = There are no queued songs at the moment
-commands.music.queue.success.title = Queue
+commands.music.info.help.description = Zeigt Informationen über das abgespielte Lied.
+commands.music.queue.error.title = Keine Warteschlange
+commands.music.queue.error.description = Momentan sind keine Lieder in der Warteschlange
+commands.music.queue.success.title = Queue %extra%
commands.music.queue.success.description = This is the queue\: \n %extra%
-commands.music.queue.help.description = Shows the music queue
-commands.music.skip.success.title = Successfully skipped
-commands.music.skip.success.description = I successfully skipped to the next song
-commands.music.skip.help.description = Skips the currently playing song
+commands.music.queue.help.description = Shows the music queue.
+commands.music.skip.success.title = Erfolgreich übersprungen
+commands.music.skip.success.description = Ich habe erfolgreich zum nächsten Song übersprungen
+commands.music.skip.error.connected.title = No channel
+commands.music.skip.error.connected.description = You have to be in the same voice channel as the bot to skip the song.
+commands.music.skip.help.description = Überspringt den gerade abgespielten Song.
commands.music.volume.success.title = Successfully set
commands.music.volume.success.description = I successfully set the new volume to %extra%
commands.music.volume.error.int.title = Invalid number
-commands.music.volume.error.int.description = The volume have to be between 1 and 200
+commands.music.volume.error.int.description = Die Lautstärke muss zwischen 1 und 200 liegen
+commands.music.volume.error.connected.title = No channel
+commands.music.volume.error.connected.description = You have to be in the same voice channel as the bot to change the volume.
commands.music.volume.help.description = Change the volume of the music.
+commands.music.pause.success.title = Successfully paused
+commands.music.pause.success.description = I successfully paused the played song.
+commands.music.pause.error.paused.title = Already paused
+commands.music.pause.error.paused.description = The song is already paused.
+commands.music.pause.error.connected.title = No channel
+commands.music.pause.error.connected.description = You have to be in the same voice channel as the bot to pause the song.
+commands.music.pause.help.description = Pause the playing song.
+commands.music.loop.success.loop.title = Erfolgreich aktiviert
+commands.music.loop.success.loop.description = I will now repeat the currently played song.
+commands.music.loop.success.unloop.title = Erfolgreich deaktiviert
+commands.music.loop.success.unloop.description = I will no longer repeat the currently played song.
+commands.music.loop.error.connected.title = No channel
+commands.music.loop.error.connected.description = You have to be in the same voice channel as the bot to set the repeat status.
+commands.music.loop.help.description = Repeats a song/queue.
commands.nsfw.gif.error.title = GIF wird nicht angezeigt? Klicke hier
commands.nsfw.img.error.title = Bild wird nicht angezeigt? Klicke hier
@@ -247,6 +282,7 @@ commands.owner.shutdown.success.title = Fährt herrunter
commands.owner.shutdown.help.description = Shuts the Bot down
commands.owner.test.success = TEST my friends
commands.owner.test.help.description = Just a little Test Command
+commands.owner.blacklist.help.description = Blacklist a user for specific commands
commands.settings.language.success.title = Language set
commands.settings.language.success.description = `%extra%` is your new language now.
diff --git a/src/main/resources/Translations/Translations_en.properties b/src/main/resources/Translations/Translations_en.properties
index e7dee3e..9167e2d 100644
--- a/src/main/resources/Translations/Translations_en.properties
+++ b/src/main/resources/Translations/Translations_en.properties
@@ -121,9 +121,9 @@ commands.moderation.regionchange.regions.title = All regions
commands.moderation.regionchange.success.title = Successfully set region
commands.moderation.regionchange.success.description = I successfully set the new server region to %extra%.
commands.moderation.regionchange.help.description = Changes the server region to locked regions.
-commands.moderation.role.add.success.title = %extra% Successfully added role(s) %extra%
+commands.moderation.role.add.success.title = Successfully added role(s)
commands.moderation.role.add.success.description = I successfully added %extra% roles to %extra_two% members.
-commands.moderation.role.remove.success.title = %extra% Successfully removed role(s) %extra%
+commands.moderation.role.remove.success.title = Successfully removed role(s)
commands.moderation.role.remove.success.description = I successfully removed %extra% roles from %extra_two% members.
commands.moderation.role.help.description = Adds and removes one or more role(s) from one or more user(s)
commands.moderation.rules.setup.title = Set up rules
@@ -153,6 +153,10 @@ commands.moderation.rules.success.title = Successfully set the rules
commands.moderation.rules.success.description = I successfully send the rules in %extra%.
commands.moderation.rules.error.message.title = Can't write messages
commands.moderation.rules.error.message.description = I can not write messages in the specified channel
+commands.moderation.rules.error.permission.title = No permission
+commands.moderation.rules.error.permission.description = To execute this command, I need the `MANAGE_ROLES` permission.
+commands.moderation.rules.error.interact.title = Can't interact
+commands.moderation.rules.error.interact.description = I can not interact with the specified role. Make sure my role is higher than the specified role.
commands.moderation.rules.help.description = Setup the rules on your Discord server
commands.moderation.starboard.success.title = Successfully set the Channel\!
commands.moderation.starboard.help.description = Sets the starboard channel.
@@ -178,11 +182,15 @@ commands.music.join.error.connecting.trying.title = Already trying to connect
commands.music.join.error.connecting.trying.description = Hadder is already trying to connect. Please wait a moment
commands.music.join.error.channel.title = No Voice Channel
commands.music.join.error.channel.description = You aren't in a Voice Channel.
+commands.music.join.error.permission.title = No permission
+commands.music.join.error.permission.description = I am not allowed to join your voice channel.
commands.music.join.help.description = Joins your voice channel.
commands.music.leave.success.title = Successfully disconnected
commands.music.leave.success.description = I successfully disconnected from the Voice Channel
-commands.music.leave.error.tile = Not connected
-commands.music.leave.error.description = I'm currently in no Voice Channel on this Guild
+commands.music.leave.error.channel.title = No channel
+commands.music.leave.error.channel.description = You have to be in the same voice channel as the bot.
+commands.music.leave.error.connected.tile = Not connected
+commands.music.leave.error.connected.description = I'm currently in no Voice Channel on this Guild
commands.music.leave.help.description = Leaves your voice channel.
commands.music.play.load.title = %extra% Now loading %extra%
commands.music.play.load.description = Trying to load the song...
@@ -195,9 +203,15 @@ commands.music.play.error.load.title = %extra% Load failed %extra%
commands.music.play.error.load.description = Unfortunately I can not load the given song
commands.music.play.error.match.title = %extra% No matches %extra%
commands.music.play.error.match.description = I can not find a song named this on YouTube
+commands.music.play.success.unpause.title = Successfully continued
+commands.music.play.success.unpause.description = I successfully continued playing the song.
+commands.music.play.error.connected.title = No channel
+commands.music.play.error.connected.description = You have to be in the same voice channel as the bot to continue the song.
commands.music.play.help.description = Plays the specified song.
commands.music.stop.success.title = Successfully stopped
commands.music.stop.success.description = I successfully stopped the song.
+commands.music.stop.error.connected.title = No channel
+commands.music.stop.error.connected.description = You have to be in the same voice channel as the bot to stop the song.
commands.music.stop.help.description = Stops the song.
commands.music.info.success.title = Track info
commands.music.info.error.title = No playing track
@@ -210,12 +224,30 @@ commands.music.queue.success.description = This is the queue\: \n %extra%
commands.music.queue.help.description = Shows the music queue.
commands.music.skip.success.title = Successfully skipped
commands.music.skip.success.description = I successfully skipped to the next song
+commands.music.skip.error.connected.title = No channel
+commands.music.skip.error.connected.description = You have to be in the same voice channel as the bot to skip the song.
commands.music.skip.help.description = Skips the currently playing song.
commands.music.volume.success.title = Successfully set
commands.music.volume.success.description = I successfully set the new volume to %extra%
commands.music.volume.error.int.title = Invalid number
commands.music.volume.error.int.description = The volume have to be between 1 and 200
+commands.music.volume.error.connected.title = No channel
+commands.music.volume.error.connected.description = You have to be in the same voice channel as the bot to change the volume.
commands.music.volume.help.description = Change the volume of the music.
+commands.music.pause.success.title = Successfully paused
+commands.music.pause.success.description = I successfully paused the played song.
+commands.music.pause.error.paused.title = Already paused
+commands.music.pause.error.paused.description = The song is already paused.
+commands.music.pause.error.connected.title = No channel
+commands.music.pause.error.connected.description = You have to be in the same voice channel as the bot to pause the song.
+commands.music.pause.help.description = Pause the playing song.
+commands.music.loop.success.loop.title = Successfully activated
+commands.music.loop.success.loop.description = I will now repeat the currently played song.
+commands.music.loop.success.unloop.title = Successfully deactivated
+commands.music.loop.success.unloop.description = I will no longer repeat the currently played song.
+commands.music.loop.error.connected.title = No channel
+commands.music.loop.error.connected.description = You have to be in the same voice channel as the bot to set the repeat status.
+commands.music.loop.help.description = Repeats a song/queue.
commands.nsfw.gif.error.title = GIF not showing? Click here
commands.nsfw.img.error.title = Image not showing? Click here
diff --git a/src/main/resources/Translations/Translations_es.properties b/src/main/resources/Translations/Translations_es.properties
index f142696..9167e2d 100644
--- a/src/main/resources/Translations/Translations_es.properties
+++ b/src/main/resources/Translations/Translations_es.properties
@@ -45,8 +45,8 @@ commands.misc.feedback.title.request.title = Feedback Topic
commands.misc.feedback.title.request.description = Please send me the feedback topic.
commands.misc.feedback.description.request.title = Feedback Description
commands.misc.feedback.description.request.description = Please send me the feedback description now.
-commands.misc.feedback.help.description = Sends feedback directly to the developers.
commands.misc.feedback.success.title = Feedback successfully sent\!
+commands.misc.feedback.help.description = Sends feedback directly to the developers.
commands.misc.github.link.title = Link your GitHub Account
commands.misc.github.success.title = Information about %extra%
commands.misc.github.success.bio = User bio
@@ -81,8 +81,8 @@ commands.moderation.ban.myself.error.description = I can not ban myself\!
commands.moderation.ban.yourself.error.description = You can not ban yourself\!
commands.moderation.ban.massban.success.description = I successfully banned %extra% members\!
commands.moderation.ban.help.description = Bans one or more users from the server.
-commands.moderation.lear.all.success.title = Successfully deleted
-commands.moderation.lear.all.success.description = I successfully deleted %extra% messages.
+commands.moderation.clear.all.success.title = Successfully deleted
+commands.moderation.clear.all.success.description = I successfully deleted %extra% messages.
commands.moderation.clear.number.error.title = Invalid number
commands.moderation.clear.number.error.description = You have to choose a number between 1 and 99\!
commands.moderation.clear.success.title = Successfully cleared
@@ -121,9 +121,9 @@ commands.moderation.regionchange.regions.title = All regions
commands.moderation.regionchange.success.title = Successfully set region
commands.moderation.regionchange.success.description = I successfully set the new server region to %extra%.
commands.moderation.regionchange.help.description = Changes the server region to locked regions.
-commands.moderation.role.add.success.title = %extra% Successfully added role(s) %extra%
+commands.moderation.role.add.success.title = Successfully added role(s)
commands.moderation.role.add.success.description = I successfully added %extra% roles to %extra_two% members.
-commands.moderation.role.remove.success.title = %extra% Successfully removed role(s) %extra%
+commands.moderation.role.remove.success.title = Successfully removed role(s)
commands.moderation.role.remove.success.description = I successfully removed %extra% roles from %extra_two% members.
commands.moderation.role.help.description = Adds and removes one or more role(s) from one or more user(s)
commands.moderation.rules.setup.title = Set up rules
@@ -132,10 +132,12 @@ commands.moderation.rules.channel.error.title = Channel not found
commands.moderation.rules.channel.error.description = I can't find the specified channel. Please start the setup again.
commands.moderation.rules.rules.title = Rules message
commands.moderation.rules.rules.description = The channel was successfully set to %extra%. Please send me the rules now.
-commands.moderation.rules.role.title = Role to assign
-commands.moderation.rules.role.description = The rules were successfully set. Please send me the name of the role which the user receives after he accepted the rules.
+commands.moderation.rules.role.title = Role to assign/remove
+commands.moderation.rules.role.description = The rules were successfully set. Please send me the name of the role which the user receives/loses after he accepted the rules.
commands.moderation.rules.role.error.title = Role does not exist
commands.moderation.rules.role.error.description = The specified role does not exist on this guild.
+commands.moderation.rules.role.permission.error.title = No permission
+commands.moderation.rules.role.permission.error.description = You cannot select this role because you cannot interact with it.
commands.moderation.rules.guild.error.title = Wrong Guild
commands.moderation.rules.guild.error.description = The mentioned channel must be on this guild\!
commands.moderation.rules.emote.accept.title = Custom Accept Emote
@@ -151,8 +153,13 @@ commands.moderation.rules.success.title = Successfully set the rules
commands.moderation.rules.success.description = I successfully send the rules in %extra%.
commands.moderation.rules.error.message.title = Can't write messages
commands.moderation.rules.error.message.description = I can not write messages in the specified channel
+commands.moderation.rules.error.permission.title = No permission
+commands.moderation.rules.error.permission.description = To execute this command, I need the `MANAGE_ROLES` permission.
+commands.moderation.rules.error.interact.title = Can't interact
+commands.moderation.rules.error.interact.description = I can not interact with the specified role. Make sure my role is higher than the specified role.
commands.moderation.rules.help.description = Setup the rules on your Discord server
commands.moderation.starboard.success.title = Successfully set the Channel\!
+commands.moderation.starboard.help.description = Sets the starboard channel.
commands.moderation.editrules.channel.title = Rules channel
commands.moderation.editrules.channel.description = Please send me the channel with the rules as mention
commands.moderation.editrules.channel.found.error.title = Channel not found
@@ -175,12 +182,16 @@ commands.music.join.error.connecting.trying.title = Already trying to connect
commands.music.join.error.connecting.trying.description = Hadder is already trying to connect. Please wait a moment
commands.music.join.error.channel.title = No Voice Channel
commands.music.join.error.channel.description = You aren't in a Voice Channel.
-commands.music.join.help.description = Joins your voice channel
+commands.music.join.error.permission.title = No permission
+commands.music.join.error.permission.description = I am not allowed to join your voice channel.
+commands.music.join.help.description = Joins your voice channel.
commands.music.leave.success.title = Successfully disconnected
commands.music.leave.success.description = I successfully disconnected from the Voice Channel
-commands.music.leave.error.tile = Not connected
-commands.music.leave.error.description = I'm currently in no Voice Channel on this Guild
-commands.music.leave.help.description = Leaves a voice channel
+commands.music.leave.error.channel.title = No channel
+commands.music.leave.error.channel.description = You have to be in the same voice channel as the bot.
+commands.music.leave.error.connected.tile = Not connected
+commands.music.leave.error.connected.description = I'm currently in no Voice Channel on this Guild
+commands.music.leave.help.description = Leaves your voice channel.
commands.music.play.load.title = %extra% Now loading %extra%
commands.music.play.load.description = Trying to load the song...
commands.music.play.success.loading.title = %extra% Now playing %extra%
@@ -192,27 +203,51 @@ commands.music.play.error.load.title = %extra% Load failed %extra%
commands.music.play.error.load.description = Unfortunately I can not load the given song
commands.music.play.error.match.title = %extra% No matches %extra%
commands.music.play.error.match.description = I can not find a song named this on YouTube
-commands.music.play.help.description = Plays a song
+commands.music.play.success.unpause.title = Successfully continued
+commands.music.play.success.unpause.description = I successfully continued playing the song.
+commands.music.play.error.connected.title = No channel
+commands.music.play.error.connected.description = You have to be in the same voice channel as the bot to continue the song.
+commands.music.play.help.description = Plays the specified song.
commands.music.stop.success.title = Successfully stopped
commands.music.stop.success.description = I successfully stopped the song.
+commands.music.stop.error.connected.title = No channel
+commands.music.stop.error.connected.description = You have to be in the same voice channel as the bot to stop the song.
+commands.music.stop.help.description = Stops the song.
commands.music.info.success.title = Track info
commands.music.info.error.title = No playing track
commands.music.info.error.description = I am not playing anything at the moment
-commands.music.info.help.description = Shows information about the playing song
-commands.music.stop.help.description = Stops the song
+commands.music.info.help.description = Shows information about the playing song.
commands.music.queue.error.title = No queue
commands.music.queue.error.description = There are no queued songs at the moment
-commands.music.queue.success.title = Queue
+commands.music.queue.success.title = Queue %extra%
commands.music.queue.success.description = This is the queue\: \n %extra%
-commands.music.queue.help.description = Shows the music queue
+commands.music.queue.help.description = Shows the music queue.
commands.music.skip.success.title = Successfully skipped
commands.music.skip.success.description = I successfully skipped to the next song
-commands.music.skip.help.description = Skips the currently playing song
+commands.music.skip.error.connected.title = No channel
+commands.music.skip.error.connected.description = You have to be in the same voice channel as the bot to skip the song.
+commands.music.skip.help.description = Skips the currently playing song.
commands.music.volume.success.title = Successfully set
commands.music.volume.success.description = I successfully set the new volume to %extra%
commands.music.volume.error.int.title = Invalid number
commands.music.volume.error.int.description = The volume have to be between 1 and 200
+commands.music.volume.error.connected.title = No channel
+commands.music.volume.error.connected.description = You have to be in the same voice channel as the bot to change the volume.
commands.music.volume.help.description = Change the volume of the music.
+commands.music.pause.success.title = Successfully paused
+commands.music.pause.success.description = I successfully paused the played song.
+commands.music.pause.error.paused.title = Already paused
+commands.music.pause.error.paused.description = The song is already paused.
+commands.music.pause.error.connected.title = No channel
+commands.music.pause.error.connected.description = You have to be in the same voice channel as the bot to pause the song.
+commands.music.pause.help.description = Pause the playing song.
+commands.music.loop.success.loop.title = Successfully activated
+commands.music.loop.success.loop.description = I will now repeat the currently played song.
+commands.music.loop.success.unloop.title = Successfully deactivated
+commands.music.loop.success.unloop.description = I will no longer repeat the currently played song.
+commands.music.loop.error.connected.title = No channel
+commands.music.loop.error.connected.description = You have to be in the same voice channel as the bot to set the repeat status.
+commands.music.loop.help.description = Repeats a song/queue.
commands.nsfw.gif.error.title = GIF not showing? Click here
commands.nsfw.img.error.title = Image not showing? Click here
@@ -247,6 +282,7 @@ commands.owner.shutdown.success.title = Shutdown
commands.owner.shutdown.help.description = Shuts the Bot down
commands.owner.test.success = TEST my friends
commands.owner.test.help.description = Just a little Test Command
+commands.owner.blacklist.help.description = Blacklist a user for specific commands
commands.settings.language.success.title = Language set
commands.settings.language.success.description = `%extra%` is your new language now.
diff --git a/src/main/resources/Translations/Translations_fr.properties b/src/main/resources/Translations/Translations_fr.properties
index f142696..9167e2d 100644
--- a/src/main/resources/Translations/Translations_fr.properties
+++ b/src/main/resources/Translations/Translations_fr.properties
@@ -45,8 +45,8 @@ commands.misc.feedback.title.request.title = Feedback Topic
commands.misc.feedback.title.request.description = Please send me the feedback topic.
commands.misc.feedback.description.request.title = Feedback Description
commands.misc.feedback.description.request.description = Please send me the feedback description now.
-commands.misc.feedback.help.description = Sends feedback directly to the developers.
commands.misc.feedback.success.title = Feedback successfully sent\!
+commands.misc.feedback.help.description = Sends feedback directly to the developers.
commands.misc.github.link.title = Link your GitHub Account
commands.misc.github.success.title = Information about %extra%
commands.misc.github.success.bio = User bio
@@ -81,8 +81,8 @@ commands.moderation.ban.myself.error.description = I can not ban myself\!
commands.moderation.ban.yourself.error.description = You can not ban yourself\!
commands.moderation.ban.massban.success.description = I successfully banned %extra% members\!
commands.moderation.ban.help.description = Bans one or more users from the server.
-commands.moderation.lear.all.success.title = Successfully deleted
-commands.moderation.lear.all.success.description = I successfully deleted %extra% messages.
+commands.moderation.clear.all.success.title = Successfully deleted
+commands.moderation.clear.all.success.description = I successfully deleted %extra% messages.
commands.moderation.clear.number.error.title = Invalid number
commands.moderation.clear.number.error.description = You have to choose a number between 1 and 99\!
commands.moderation.clear.success.title = Successfully cleared
@@ -121,9 +121,9 @@ commands.moderation.regionchange.regions.title = All regions
commands.moderation.regionchange.success.title = Successfully set region
commands.moderation.regionchange.success.description = I successfully set the new server region to %extra%.
commands.moderation.regionchange.help.description = Changes the server region to locked regions.
-commands.moderation.role.add.success.title = %extra% Successfully added role(s) %extra%
+commands.moderation.role.add.success.title = Successfully added role(s)
commands.moderation.role.add.success.description = I successfully added %extra% roles to %extra_two% members.
-commands.moderation.role.remove.success.title = %extra% Successfully removed role(s) %extra%
+commands.moderation.role.remove.success.title = Successfully removed role(s)
commands.moderation.role.remove.success.description = I successfully removed %extra% roles from %extra_two% members.
commands.moderation.role.help.description = Adds and removes one or more role(s) from one or more user(s)
commands.moderation.rules.setup.title = Set up rules
@@ -132,10 +132,12 @@ commands.moderation.rules.channel.error.title = Channel not found
commands.moderation.rules.channel.error.description = I can't find the specified channel. Please start the setup again.
commands.moderation.rules.rules.title = Rules message
commands.moderation.rules.rules.description = The channel was successfully set to %extra%. Please send me the rules now.
-commands.moderation.rules.role.title = Role to assign
-commands.moderation.rules.role.description = The rules were successfully set. Please send me the name of the role which the user receives after he accepted the rules.
+commands.moderation.rules.role.title = Role to assign/remove
+commands.moderation.rules.role.description = The rules were successfully set. Please send me the name of the role which the user receives/loses after he accepted the rules.
commands.moderation.rules.role.error.title = Role does not exist
commands.moderation.rules.role.error.description = The specified role does not exist on this guild.
+commands.moderation.rules.role.permission.error.title = No permission
+commands.moderation.rules.role.permission.error.description = You cannot select this role because you cannot interact with it.
commands.moderation.rules.guild.error.title = Wrong Guild
commands.moderation.rules.guild.error.description = The mentioned channel must be on this guild\!
commands.moderation.rules.emote.accept.title = Custom Accept Emote
@@ -151,8 +153,13 @@ commands.moderation.rules.success.title = Successfully set the rules
commands.moderation.rules.success.description = I successfully send the rules in %extra%.
commands.moderation.rules.error.message.title = Can't write messages
commands.moderation.rules.error.message.description = I can not write messages in the specified channel
+commands.moderation.rules.error.permission.title = No permission
+commands.moderation.rules.error.permission.description = To execute this command, I need the `MANAGE_ROLES` permission.
+commands.moderation.rules.error.interact.title = Can't interact
+commands.moderation.rules.error.interact.description = I can not interact with the specified role. Make sure my role is higher than the specified role.
commands.moderation.rules.help.description = Setup the rules on your Discord server
commands.moderation.starboard.success.title = Successfully set the Channel\!
+commands.moderation.starboard.help.description = Sets the starboard channel.
commands.moderation.editrules.channel.title = Rules channel
commands.moderation.editrules.channel.description = Please send me the channel with the rules as mention
commands.moderation.editrules.channel.found.error.title = Channel not found
@@ -175,12 +182,16 @@ commands.music.join.error.connecting.trying.title = Already trying to connect
commands.music.join.error.connecting.trying.description = Hadder is already trying to connect. Please wait a moment
commands.music.join.error.channel.title = No Voice Channel
commands.music.join.error.channel.description = You aren't in a Voice Channel.
-commands.music.join.help.description = Joins your voice channel
+commands.music.join.error.permission.title = No permission
+commands.music.join.error.permission.description = I am not allowed to join your voice channel.
+commands.music.join.help.description = Joins your voice channel.
commands.music.leave.success.title = Successfully disconnected
commands.music.leave.success.description = I successfully disconnected from the Voice Channel
-commands.music.leave.error.tile = Not connected
-commands.music.leave.error.description = I'm currently in no Voice Channel on this Guild
-commands.music.leave.help.description = Leaves a voice channel
+commands.music.leave.error.channel.title = No channel
+commands.music.leave.error.channel.description = You have to be in the same voice channel as the bot.
+commands.music.leave.error.connected.tile = Not connected
+commands.music.leave.error.connected.description = I'm currently in no Voice Channel on this Guild
+commands.music.leave.help.description = Leaves your voice channel.
commands.music.play.load.title = %extra% Now loading %extra%
commands.music.play.load.description = Trying to load the song...
commands.music.play.success.loading.title = %extra% Now playing %extra%
@@ -192,27 +203,51 @@ commands.music.play.error.load.title = %extra% Load failed %extra%
commands.music.play.error.load.description = Unfortunately I can not load the given song
commands.music.play.error.match.title = %extra% No matches %extra%
commands.music.play.error.match.description = I can not find a song named this on YouTube
-commands.music.play.help.description = Plays a song
+commands.music.play.success.unpause.title = Successfully continued
+commands.music.play.success.unpause.description = I successfully continued playing the song.
+commands.music.play.error.connected.title = No channel
+commands.music.play.error.connected.description = You have to be in the same voice channel as the bot to continue the song.
+commands.music.play.help.description = Plays the specified song.
commands.music.stop.success.title = Successfully stopped
commands.music.stop.success.description = I successfully stopped the song.
+commands.music.stop.error.connected.title = No channel
+commands.music.stop.error.connected.description = You have to be in the same voice channel as the bot to stop the song.
+commands.music.stop.help.description = Stops the song.
commands.music.info.success.title = Track info
commands.music.info.error.title = No playing track
commands.music.info.error.description = I am not playing anything at the moment
-commands.music.info.help.description = Shows information about the playing song
-commands.music.stop.help.description = Stops the song
+commands.music.info.help.description = Shows information about the playing song.
commands.music.queue.error.title = No queue
commands.music.queue.error.description = There are no queued songs at the moment
-commands.music.queue.success.title = Queue
+commands.music.queue.success.title = Queue %extra%
commands.music.queue.success.description = This is the queue\: \n %extra%
-commands.music.queue.help.description = Shows the music queue
+commands.music.queue.help.description = Shows the music queue.
commands.music.skip.success.title = Successfully skipped
commands.music.skip.success.description = I successfully skipped to the next song
-commands.music.skip.help.description = Skips the currently playing song
+commands.music.skip.error.connected.title = No channel
+commands.music.skip.error.connected.description = You have to be in the same voice channel as the bot to skip the song.
+commands.music.skip.help.description = Skips the currently playing song.
commands.music.volume.success.title = Successfully set
commands.music.volume.success.description = I successfully set the new volume to %extra%
commands.music.volume.error.int.title = Invalid number
commands.music.volume.error.int.description = The volume have to be between 1 and 200
+commands.music.volume.error.connected.title = No channel
+commands.music.volume.error.connected.description = You have to be in the same voice channel as the bot to change the volume.
commands.music.volume.help.description = Change the volume of the music.
+commands.music.pause.success.title = Successfully paused
+commands.music.pause.success.description = I successfully paused the played song.
+commands.music.pause.error.paused.title = Already paused
+commands.music.pause.error.paused.description = The song is already paused.
+commands.music.pause.error.connected.title = No channel
+commands.music.pause.error.connected.description = You have to be in the same voice channel as the bot to pause the song.
+commands.music.pause.help.description = Pause the playing song.
+commands.music.loop.success.loop.title = Successfully activated
+commands.music.loop.success.loop.description = I will now repeat the currently played song.
+commands.music.loop.success.unloop.title = Successfully deactivated
+commands.music.loop.success.unloop.description = I will no longer repeat the currently played song.
+commands.music.loop.error.connected.title = No channel
+commands.music.loop.error.connected.description = You have to be in the same voice channel as the bot to set the repeat status.
+commands.music.loop.help.description = Repeats a song/queue.
commands.nsfw.gif.error.title = GIF not showing? Click here
commands.nsfw.img.error.title = Image not showing? Click here
@@ -247,6 +282,7 @@ commands.owner.shutdown.success.title = Shutdown
commands.owner.shutdown.help.description = Shuts the Bot down
commands.owner.test.success = TEST my friends
commands.owner.test.help.description = Just a little Test Command
+commands.owner.blacklist.help.description = Blacklist a user for specific commands
commands.settings.language.success.title = Language set
commands.settings.language.success.description = `%extra%` is your new language now.
diff --git a/src/main/resources/Translations/Translations_ru.properties b/src/main/resources/Translations/Translations_ru.properties
index f142696..9167e2d 100644
--- a/src/main/resources/Translations/Translations_ru.properties
+++ b/src/main/resources/Translations/Translations_ru.properties
@@ -45,8 +45,8 @@ commands.misc.feedback.title.request.title = Feedback Topic
commands.misc.feedback.title.request.description = Please send me the feedback topic.
commands.misc.feedback.description.request.title = Feedback Description
commands.misc.feedback.description.request.description = Please send me the feedback description now.
-commands.misc.feedback.help.description = Sends feedback directly to the developers.
commands.misc.feedback.success.title = Feedback successfully sent\!
+commands.misc.feedback.help.description = Sends feedback directly to the developers.
commands.misc.github.link.title = Link your GitHub Account
commands.misc.github.success.title = Information about %extra%
commands.misc.github.success.bio = User bio
@@ -81,8 +81,8 @@ commands.moderation.ban.myself.error.description = I can not ban myself\!
commands.moderation.ban.yourself.error.description = You can not ban yourself\!
commands.moderation.ban.massban.success.description = I successfully banned %extra% members\!
commands.moderation.ban.help.description = Bans one or more users from the server.
-commands.moderation.lear.all.success.title = Successfully deleted
-commands.moderation.lear.all.success.description = I successfully deleted %extra% messages.
+commands.moderation.clear.all.success.title = Successfully deleted
+commands.moderation.clear.all.success.description = I successfully deleted %extra% messages.
commands.moderation.clear.number.error.title = Invalid number
commands.moderation.clear.number.error.description = You have to choose a number between 1 and 99\!
commands.moderation.clear.success.title = Successfully cleared
@@ -121,9 +121,9 @@ commands.moderation.regionchange.regions.title = All regions
commands.moderation.regionchange.success.title = Successfully set region
commands.moderation.regionchange.success.description = I successfully set the new server region to %extra%.
commands.moderation.regionchange.help.description = Changes the server region to locked regions.
-commands.moderation.role.add.success.title = %extra% Successfully added role(s) %extra%
+commands.moderation.role.add.success.title = Successfully added role(s)
commands.moderation.role.add.success.description = I successfully added %extra% roles to %extra_two% members.
-commands.moderation.role.remove.success.title = %extra% Successfully removed role(s) %extra%
+commands.moderation.role.remove.success.title = Successfully removed role(s)
commands.moderation.role.remove.success.description = I successfully removed %extra% roles from %extra_two% members.
commands.moderation.role.help.description = Adds and removes one or more role(s) from one or more user(s)
commands.moderation.rules.setup.title = Set up rules
@@ -132,10 +132,12 @@ commands.moderation.rules.channel.error.title = Channel not found
commands.moderation.rules.channel.error.description = I can't find the specified channel. Please start the setup again.
commands.moderation.rules.rules.title = Rules message
commands.moderation.rules.rules.description = The channel was successfully set to %extra%. Please send me the rules now.
-commands.moderation.rules.role.title = Role to assign
-commands.moderation.rules.role.description = The rules were successfully set. Please send me the name of the role which the user receives after he accepted the rules.
+commands.moderation.rules.role.title = Role to assign/remove
+commands.moderation.rules.role.description = The rules were successfully set. Please send me the name of the role which the user receives/loses after he accepted the rules.
commands.moderation.rules.role.error.title = Role does not exist
commands.moderation.rules.role.error.description = The specified role does not exist on this guild.
+commands.moderation.rules.role.permission.error.title = No permission
+commands.moderation.rules.role.permission.error.description = You cannot select this role because you cannot interact with it.
commands.moderation.rules.guild.error.title = Wrong Guild
commands.moderation.rules.guild.error.description = The mentioned channel must be on this guild\!
commands.moderation.rules.emote.accept.title = Custom Accept Emote
@@ -151,8 +153,13 @@ commands.moderation.rules.success.title = Successfully set the rules
commands.moderation.rules.success.description = I successfully send the rules in %extra%.
commands.moderation.rules.error.message.title = Can't write messages
commands.moderation.rules.error.message.description = I can not write messages in the specified channel
+commands.moderation.rules.error.permission.title = No permission
+commands.moderation.rules.error.permission.description = To execute this command, I need the `MANAGE_ROLES` permission.
+commands.moderation.rules.error.interact.title = Can't interact
+commands.moderation.rules.error.interact.description = I can not interact with the specified role. Make sure my role is higher than the specified role.
commands.moderation.rules.help.description = Setup the rules on your Discord server
commands.moderation.starboard.success.title = Successfully set the Channel\!
+commands.moderation.starboard.help.description = Sets the starboard channel.
commands.moderation.editrules.channel.title = Rules channel
commands.moderation.editrules.channel.description = Please send me the channel with the rules as mention
commands.moderation.editrules.channel.found.error.title = Channel not found
@@ -175,12 +182,16 @@ commands.music.join.error.connecting.trying.title = Already trying to connect
commands.music.join.error.connecting.trying.description = Hadder is already trying to connect. Please wait a moment
commands.music.join.error.channel.title = No Voice Channel
commands.music.join.error.channel.description = You aren't in a Voice Channel.
-commands.music.join.help.description = Joins your voice channel
+commands.music.join.error.permission.title = No permission
+commands.music.join.error.permission.description = I am not allowed to join your voice channel.
+commands.music.join.help.description = Joins your voice channel.
commands.music.leave.success.title = Successfully disconnected
commands.music.leave.success.description = I successfully disconnected from the Voice Channel
-commands.music.leave.error.tile = Not connected
-commands.music.leave.error.description = I'm currently in no Voice Channel on this Guild
-commands.music.leave.help.description = Leaves a voice channel
+commands.music.leave.error.channel.title = No channel
+commands.music.leave.error.channel.description = You have to be in the same voice channel as the bot.
+commands.music.leave.error.connected.tile = Not connected
+commands.music.leave.error.connected.description = I'm currently in no Voice Channel on this Guild
+commands.music.leave.help.description = Leaves your voice channel.
commands.music.play.load.title = %extra% Now loading %extra%
commands.music.play.load.description = Trying to load the song...
commands.music.play.success.loading.title = %extra% Now playing %extra%
@@ -192,27 +203,51 @@ commands.music.play.error.load.title = %extra% Load failed %extra%
commands.music.play.error.load.description = Unfortunately I can not load the given song
commands.music.play.error.match.title = %extra% No matches %extra%
commands.music.play.error.match.description = I can not find a song named this on YouTube
-commands.music.play.help.description = Plays a song
+commands.music.play.success.unpause.title = Successfully continued
+commands.music.play.success.unpause.description = I successfully continued playing the song.
+commands.music.play.error.connected.title = No channel
+commands.music.play.error.connected.description = You have to be in the same voice channel as the bot to continue the song.
+commands.music.play.help.description = Plays the specified song.
commands.music.stop.success.title = Successfully stopped
commands.music.stop.success.description = I successfully stopped the song.
+commands.music.stop.error.connected.title = No channel
+commands.music.stop.error.connected.description = You have to be in the same voice channel as the bot to stop the song.
+commands.music.stop.help.description = Stops the song.
commands.music.info.success.title = Track info
commands.music.info.error.title = No playing track
commands.music.info.error.description = I am not playing anything at the moment
-commands.music.info.help.description = Shows information about the playing song
-commands.music.stop.help.description = Stops the song
+commands.music.info.help.description = Shows information about the playing song.
commands.music.queue.error.title = No queue
commands.music.queue.error.description = There are no queued songs at the moment
-commands.music.queue.success.title = Queue
+commands.music.queue.success.title = Queue %extra%
commands.music.queue.success.description = This is the queue\: \n %extra%
-commands.music.queue.help.description = Shows the music queue
+commands.music.queue.help.description = Shows the music queue.
commands.music.skip.success.title = Successfully skipped
commands.music.skip.success.description = I successfully skipped to the next song
-commands.music.skip.help.description = Skips the currently playing song
+commands.music.skip.error.connected.title = No channel
+commands.music.skip.error.connected.description = You have to be in the same voice channel as the bot to skip the song.
+commands.music.skip.help.description = Skips the currently playing song.
commands.music.volume.success.title = Successfully set
commands.music.volume.success.description = I successfully set the new volume to %extra%
commands.music.volume.error.int.title = Invalid number
commands.music.volume.error.int.description = The volume have to be between 1 and 200
+commands.music.volume.error.connected.title = No channel
+commands.music.volume.error.connected.description = You have to be in the same voice channel as the bot to change the volume.
commands.music.volume.help.description = Change the volume of the music.
+commands.music.pause.success.title = Successfully paused
+commands.music.pause.success.description = I successfully paused the played song.
+commands.music.pause.error.paused.title = Already paused
+commands.music.pause.error.paused.description = The song is already paused.
+commands.music.pause.error.connected.title = No channel
+commands.music.pause.error.connected.description = You have to be in the same voice channel as the bot to pause the song.
+commands.music.pause.help.description = Pause the playing song.
+commands.music.loop.success.loop.title = Successfully activated
+commands.music.loop.success.loop.description = I will now repeat the currently played song.
+commands.music.loop.success.unloop.title = Successfully deactivated
+commands.music.loop.success.unloop.description = I will no longer repeat the currently played song.
+commands.music.loop.error.connected.title = No channel
+commands.music.loop.error.connected.description = You have to be in the same voice channel as the bot to set the repeat status.
+commands.music.loop.help.description = Repeats a song/queue.
commands.nsfw.gif.error.title = GIF not showing? Click here
commands.nsfw.img.error.title = Image not showing? Click here
@@ -247,6 +282,7 @@ commands.owner.shutdown.success.title = Shutdown
commands.owner.shutdown.help.description = Shuts the Bot down
commands.owner.test.success = TEST my friends
commands.owner.test.help.description = Just a little Test Command
+commands.owner.blacklist.help.description = Blacklist a user for specific commands
commands.settings.language.success.title = Language set
commands.settings.language.success.description = `%extra%` is your new language now.
diff --git a/src/main/resources/Translations/Translations_tr.properties b/src/main/resources/Translations/Translations_tr.properties
index f142696..9167e2d 100644
--- a/src/main/resources/Translations/Translations_tr.properties
+++ b/src/main/resources/Translations/Translations_tr.properties
@@ -45,8 +45,8 @@ commands.misc.feedback.title.request.title = Feedback Topic
commands.misc.feedback.title.request.description = Please send me the feedback topic.
commands.misc.feedback.description.request.title = Feedback Description
commands.misc.feedback.description.request.description = Please send me the feedback description now.
-commands.misc.feedback.help.description = Sends feedback directly to the developers.
commands.misc.feedback.success.title = Feedback successfully sent\!
+commands.misc.feedback.help.description = Sends feedback directly to the developers.
commands.misc.github.link.title = Link your GitHub Account
commands.misc.github.success.title = Information about %extra%
commands.misc.github.success.bio = User bio
@@ -81,8 +81,8 @@ commands.moderation.ban.myself.error.description = I can not ban myself\!
commands.moderation.ban.yourself.error.description = You can not ban yourself\!
commands.moderation.ban.massban.success.description = I successfully banned %extra% members\!
commands.moderation.ban.help.description = Bans one or more users from the server.
-commands.moderation.lear.all.success.title = Successfully deleted
-commands.moderation.lear.all.success.description = I successfully deleted %extra% messages.
+commands.moderation.clear.all.success.title = Successfully deleted
+commands.moderation.clear.all.success.description = I successfully deleted %extra% messages.
commands.moderation.clear.number.error.title = Invalid number
commands.moderation.clear.number.error.description = You have to choose a number between 1 and 99\!
commands.moderation.clear.success.title = Successfully cleared
@@ -121,9 +121,9 @@ commands.moderation.regionchange.regions.title = All regions
commands.moderation.regionchange.success.title = Successfully set region
commands.moderation.regionchange.success.description = I successfully set the new server region to %extra%.
commands.moderation.regionchange.help.description = Changes the server region to locked regions.
-commands.moderation.role.add.success.title = %extra% Successfully added role(s) %extra%
+commands.moderation.role.add.success.title = Successfully added role(s)
commands.moderation.role.add.success.description = I successfully added %extra% roles to %extra_two% members.
-commands.moderation.role.remove.success.title = %extra% Successfully removed role(s) %extra%
+commands.moderation.role.remove.success.title = Successfully removed role(s)
commands.moderation.role.remove.success.description = I successfully removed %extra% roles from %extra_two% members.
commands.moderation.role.help.description = Adds and removes one or more role(s) from one or more user(s)
commands.moderation.rules.setup.title = Set up rules
@@ -132,10 +132,12 @@ commands.moderation.rules.channel.error.title = Channel not found
commands.moderation.rules.channel.error.description = I can't find the specified channel. Please start the setup again.
commands.moderation.rules.rules.title = Rules message
commands.moderation.rules.rules.description = The channel was successfully set to %extra%. Please send me the rules now.
-commands.moderation.rules.role.title = Role to assign
-commands.moderation.rules.role.description = The rules were successfully set. Please send me the name of the role which the user receives after he accepted the rules.
+commands.moderation.rules.role.title = Role to assign/remove
+commands.moderation.rules.role.description = The rules were successfully set. Please send me the name of the role which the user receives/loses after he accepted the rules.
commands.moderation.rules.role.error.title = Role does not exist
commands.moderation.rules.role.error.description = The specified role does not exist on this guild.
+commands.moderation.rules.role.permission.error.title = No permission
+commands.moderation.rules.role.permission.error.description = You cannot select this role because you cannot interact with it.
commands.moderation.rules.guild.error.title = Wrong Guild
commands.moderation.rules.guild.error.description = The mentioned channel must be on this guild\!
commands.moderation.rules.emote.accept.title = Custom Accept Emote
@@ -151,8 +153,13 @@ commands.moderation.rules.success.title = Successfully set the rules
commands.moderation.rules.success.description = I successfully send the rules in %extra%.
commands.moderation.rules.error.message.title = Can't write messages
commands.moderation.rules.error.message.description = I can not write messages in the specified channel
+commands.moderation.rules.error.permission.title = No permission
+commands.moderation.rules.error.permission.description = To execute this command, I need the `MANAGE_ROLES` permission.
+commands.moderation.rules.error.interact.title = Can't interact
+commands.moderation.rules.error.interact.description = I can not interact with the specified role. Make sure my role is higher than the specified role.
commands.moderation.rules.help.description = Setup the rules on your Discord server
commands.moderation.starboard.success.title = Successfully set the Channel\!
+commands.moderation.starboard.help.description = Sets the starboard channel.
commands.moderation.editrules.channel.title = Rules channel
commands.moderation.editrules.channel.description = Please send me the channel with the rules as mention
commands.moderation.editrules.channel.found.error.title = Channel not found
@@ -175,12 +182,16 @@ commands.music.join.error.connecting.trying.title = Already trying to connect
commands.music.join.error.connecting.trying.description = Hadder is already trying to connect. Please wait a moment
commands.music.join.error.channel.title = No Voice Channel
commands.music.join.error.channel.description = You aren't in a Voice Channel.
-commands.music.join.help.description = Joins your voice channel
+commands.music.join.error.permission.title = No permission
+commands.music.join.error.permission.description = I am not allowed to join your voice channel.
+commands.music.join.help.description = Joins your voice channel.
commands.music.leave.success.title = Successfully disconnected
commands.music.leave.success.description = I successfully disconnected from the Voice Channel
-commands.music.leave.error.tile = Not connected
-commands.music.leave.error.description = I'm currently in no Voice Channel on this Guild
-commands.music.leave.help.description = Leaves a voice channel
+commands.music.leave.error.channel.title = No channel
+commands.music.leave.error.channel.description = You have to be in the same voice channel as the bot.
+commands.music.leave.error.connected.tile = Not connected
+commands.music.leave.error.connected.description = I'm currently in no Voice Channel on this Guild
+commands.music.leave.help.description = Leaves your voice channel.
commands.music.play.load.title = %extra% Now loading %extra%
commands.music.play.load.description = Trying to load the song...
commands.music.play.success.loading.title = %extra% Now playing %extra%
@@ -192,27 +203,51 @@ commands.music.play.error.load.title = %extra% Load failed %extra%
commands.music.play.error.load.description = Unfortunately I can not load the given song
commands.music.play.error.match.title = %extra% No matches %extra%
commands.music.play.error.match.description = I can not find a song named this on YouTube
-commands.music.play.help.description = Plays a song
+commands.music.play.success.unpause.title = Successfully continued
+commands.music.play.success.unpause.description = I successfully continued playing the song.
+commands.music.play.error.connected.title = No channel
+commands.music.play.error.connected.description = You have to be in the same voice channel as the bot to continue the song.
+commands.music.play.help.description = Plays the specified song.
commands.music.stop.success.title = Successfully stopped
commands.music.stop.success.description = I successfully stopped the song.
+commands.music.stop.error.connected.title = No channel
+commands.music.stop.error.connected.description = You have to be in the same voice channel as the bot to stop the song.
+commands.music.stop.help.description = Stops the song.
commands.music.info.success.title = Track info
commands.music.info.error.title = No playing track
commands.music.info.error.description = I am not playing anything at the moment
-commands.music.info.help.description = Shows information about the playing song
-commands.music.stop.help.description = Stops the song
+commands.music.info.help.description = Shows information about the playing song.
commands.music.queue.error.title = No queue
commands.music.queue.error.description = There are no queued songs at the moment
-commands.music.queue.success.title = Queue
+commands.music.queue.success.title = Queue %extra%
commands.music.queue.success.description = This is the queue\: \n %extra%
-commands.music.queue.help.description = Shows the music queue
+commands.music.queue.help.description = Shows the music queue.
commands.music.skip.success.title = Successfully skipped
commands.music.skip.success.description = I successfully skipped to the next song
-commands.music.skip.help.description = Skips the currently playing song
+commands.music.skip.error.connected.title = No channel
+commands.music.skip.error.connected.description = You have to be in the same voice channel as the bot to skip the song.
+commands.music.skip.help.description = Skips the currently playing song.
commands.music.volume.success.title = Successfully set
commands.music.volume.success.description = I successfully set the new volume to %extra%
commands.music.volume.error.int.title = Invalid number
commands.music.volume.error.int.description = The volume have to be between 1 and 200
+commands.music.volume.error.connected.title = No channel
+commands.music.volume.error.connected.description = You have to be in the same voice channel as the bot to change the volume.
commands.music.volume.help.description = Change the volume of the music.
+commands.music.pause.success.title = Successfully paused
+commands.music.pause.success.description = I successfully paused the played song.
+commands.music.pause.error.paused.title = Already paused
+commands.music.pause.error.paused.description = The song is already paused.
+commands.music.pause.error.connected.title = No channel
+commands.music.pause.error.connected.description = You have to be in the same voice channel as the bot to pause the song.
+commands.music.pause.help.description = Pause the playing song.
+commands.music.loop.success.loop.title = Successfully activated
+commands.music.loop.success.loop.description = I will now repeat the currently played song.
+commands.music.loop.success.unloop.title = Successfully deactivated
+commands.music.loop.success.unloop.description = I will no longer repeat the currently played song.
+commands.music.loop.error.connected.title = No channel
+commands.music.loop.error.connected.description = You have to be in the same voice channel as the bot to set the repeat status.
+commands.music.loop.help.description = Repeats a song/queue.
commands.nsfw.gif.error.title = GIF not showing? Click here
commands.nsfw.img.error.title = Image not showing? Click here
@@ -247,6 +282,7 @@ commands.owner.shutdown.success.title = Shutdown
commands.owner.shutdown.help.description = Shuts the Bot down
commands.owner.test.success = TEST my friends
commands.owner.test.help.description = Just a little Test Command
+commands.owner.blacklist.help.description = Blacklist a user for specific commands
commands.settings.language.success.title = Language set
commands.settings.language.success.description = `%extra%` is your new language now.
diff --git a/src/main/resources/Translations/Translations_zh.properties b/src/main/resources/Translations/Translations_zh.properties
index f142696..9167e2d 100644
--- a/src/main/resources/Translations/Translations_zh.properties
+++ b/src/main/resources/Translations/Translations_zh.properties
@@ -45,8 +45,8 @@ commands.misc.feedback.title.request.title = Feedback Topic
commands.misc.feedback.title.request.description = Please send me the feedback topic.
commands.misc.feedback.description.request.title = Feedback Description
commands.misc.feedback.description.request.description = Please send me the feedback description now.
-commands.misc.feedback.help.description = Sends feedback directly to the developers.
commands.misc.feedback.success.title = Feedback successfully sent\!
+commands.misc.feedback.help.description = Sends feedback directly to the developers.
commands.misc.github.link.title = Link your GitHub Account
commands.misc.github.success.title = Information about %extra%
commands.misc.github.success.bio = User bio
@@ -81,8 +81,8 @@ commands.moderation.ban.myself.error.description = I can not ban myself\!
commands.moderation.ban.yourself.error.description = You can not ban yourself\!
commands.moderation.ban.massban.success.description = I successfully banned %extra% members\!
commands.moderation.ban.help.description = Bans one or more users from the server.
-commands.moderation.lear.all.success.title = Successfully deleted
-commands.moderation.lear.all.success.description = I successfully deleted %extra% messages.
+commands.moderation.clear.all.success.title = Successfully deleted
+commands.moderation.clear.all.success.description = I successfully deleted %extra% messages.
commands.moderation.clear.number.error.title = Invalid number
commands.moderation.clear.number.error.description = You have to choose a number between 1 and 99\!
commands.moderation.clear.success.title = Successfully cleared
@@ -121,9 +121,9 @@ commands.moderation.regionchange.regions.title = All regions
commands.moderation.regionchange.success.title = Successfully set region
commands.moderation.regionchange.success.description = I successfully set the new server region to %extra%.
commands.moderation.regionchange.help.description = Changes the server region to locked regions.
-commands.moderation.role.add.success.title = %extra% Successfully added role(s) %extra%
+commands.moderation.role.add.success.title = Successfully added role(s)
commands.moderation.role.add.success.description = I successfully added %extra% roles to %extra_two% members.
-commands.moderation.role.remove.success.title = %extra% Successfully removed role(s) %extra%
+commands.moderation.role.remove.success.title = Successfully removed role(s)
commands.moderation.role.remove.success.description = I successfully removed %extra% roles from %extra_two% members.
commands.moderation.role.help.description = Adds and removes one or more role(s) from one or more user(s)
commands.moderation.rules.setup.title = Set up rules
@@ -132,10 +132,12 @@ commands.moderation.rules.channel.error.title = Channel not found
commands.moderation.rules.channel.error.description = I can't find the specified channel. Please start the setup again.
commands.moderation.rules.rules.title = Rules message
commands.moderation.rules.rules.description = The channel was successfully set to %extra%. Please send me the rules now.
-commands.moderation.rules.role.title = Role to assign
-commands.moderation.rules.role.description = The rules were successfully set. Please send me the name of the role which the user receives after he accepted the rules.
+commands.moderation.rules.role.title = Role to assign/remove
+commands.moderation.rules.role.description = The rules were successfully set. Please send me the name of the role which the user receives/loses after he accepted the rules.
commands.moderation.rules.role.error.title = Role does not exist
commands.moderation.rules.role.error.description = The specified role does not exist on this guild.
+commands.moderation.rules.role.permission.error.title = No permission
+commands.moderation.rules.role.permission.error.description = You cannot select this role because you cannot interact with it.
commands.moderation.rules.guild.error.title = Wrong Guild
commands.moderation.rules.guild.error.description = The mentioned channel must be on this guild\!
commands.moderation.rules.emote.accept.title = Custom Accept Emote
@@ -151,8 +153,13 @@ commands.moderation.rules.success.title = Successfully set the rules
commands.moderation.rules.success.description = I successfully send the rules in %extra%.
commands.moderation.rules.error.message.title = Can't write messages
commands.moderation.rules.error.message.description = I can not write messages in the specified channel
+commands.moderation.rules.error.permission.title = No permission
+commands.moderation.rules.error.permission.description = To execute this command, I need the `MANAGE_ROLES` permission.
+commands.moderation.rules.error.interact.title = Can't interact
+commands.moderation.rules.error.interact.description = I can not interact with the specified role. Make sure my role is higher than the specified role.
commands.moderation.rules.help.description = Setup the rules on your Discord server
commands.moderation.starboard.success.title = Successfully set the Channel\!
+commands.moderation.starboard.help.description = Sets the starboard channel.
commands.moderation.editrules.channel.title = Rules channel
commands.moderation.editrules.channel.description = Please send me the channel with the rules as mention
commands.moderation.editrules.channel.found.error.title = Channel not found
@@ -175,12 +182,16 @@ commands.music.join.error.connecting.trying.title = Already trying to connect
commands.music.join.error.connecting.trying.description = Hadder is already trying to connect. Please wait a moment
commands.music.join.error.channel.title = No Voice Channel
commands.music.join.error.channel.description = You aren't in a Voice Channel.
-commands.music.join.help.description = Joins your voice channel
+commands.music.join.error.permission.title = No permission
+commands.music.join.error.permission.description = I am not allowed to join your voice channel.
+commands.music.join.help.description = Joins your voice channel.
commands.music.leave.success.title = Successfully disconnected
commands.music.leave.success.description = I successfully disconnected from the Voice Channel
-commands.music.leave.error.tile = Not connected
-commands.music.leave.error.description = I'm currently in no Voice Channel on this Guild
-commands.music.leave.help.description = Leaves a voice channel
+commands.music.leave.error.channel.title = No channel
+commands.music.leave.error.channel.description = You have to be in the same voice channel as the bot.
+commands.music.leave.error.connected.tile = Not connected
+commands.music.leave.error.connected.description = I'm currently in no Voice Channel on this Guild
+commands.music.leave.help.description = Leaves your voice channel.
commands.music.play.load.title = %extra% Now loading %extra%
commands.music.play.load.description = Trying to load the song...
commands.music.play.success.loading.title = %extra% Now playing %extra%
@@ -192,27 +203,51 @@ commands.music.play.error.load.title = %extra% Load failed %extra%
commands.music.play.error.load.description = Unfortunately I can not load the given song
commands.music.play.error.match.title = %extra% No matches %extra%
commands.music.play.error.match.description = I can not find a song named this on YouTube
-commands.music.play.help.description = Plays a song
+commands.music.play.success.unpause.title = Successfully continued
+commands.music.play.success.unpause.description = I successfully continued playing the song.
+commands.music.play.error.connected.title = No channel
+commands.music.play.error.connected.description = You have to be in the same voice channel as the bot to continue the song.
+commands.music.play.help.description = Plays the specified song.
commands.music.stop.success.title = Successfully stopped
commands.music.stop.success.description = I successfully stopped the song.
+commands.music.stop.error.connected.title = No channel
+commands.music.stop.error.connected.description = You have to be in the same voice channel as the bot to stop the song.
+commands.music.stop.help.description = Stops the song.
commands.music.info.success.title = Track info
commands.music.info.error.title = No playing track
commands.music.info.error.description = I am not playing anything at the moment
-commands.music.info.help.description = Shows information about the playing song
-commands.music.stop.help.description = Stops the song
+commands.music.info.help.description = Shows information about the playing song.
commands.music.queue.error.title = No queue
commands.music.queue.error.description = There are no queued songs at the moment
-commands.music.queue.success.title = Queue
+commands.music.queue.success.title = Queue %extra%
commands.music.queue.success.description = This is the queue\: \n %extra%
-commands.music.queue.help.description = Shows the music queue
+commands.music.queue.help.description = Shows the music queue.
commands.music.skip.success.title = Successfully skipped
commands.music.skip.success.description = I successfully skipped to the next song
-commands.music.skip.help.description = Skips the currently playing song
+commands.music.skip.error.connected.title = No channel
+commands.music.skip.error.connected.description = You have to be in the same voice channel as the bot to skip the song.
+commands.music.skip.help.description = Skips the currently playing song.
commands.music.volume.success.title = Successfully set
commands.music.volume.success.description = I successfully set the new volume to %extra%
commands.music.volume.error.int.title = Invalid number
commands.music.volume.error.int.description = The volume have to be between 1 and 200
+commands.music.volume.error.connected.title = No channel
+commands.music.volume.error.connected.description = You have to be in the same voice channel as the bot to change the volume.
commands.music.volume.help.description = Change the volume of the music.
+commands.music.pause.success.title = Successfully paused
+commands.music.pause.success.description = I successfully paused the played song.
+commands.music.pause.error.paused.title = Already paused
+commands.music.pause.error.paused.description = The song is already paused.
+commands.music.pause.error.connected.title = No channel
+commands.music.pause.error.connected.description = You have to be in the same voice channel as the bot to pause the song.
+commands.music.pause.help.description = Pause the playing song.
+commands.music.loop.success.loop.title = Successfully activated
+commands.music.loop.success.loop.description = I will now repeat the currently played song.
+commands.music.loop.success.unloop.title = Successfully deactivated
+commands.music.loop.success.unloop.description = I will no longer repeat the currently played song.
+commands.music.loop.error.connected.title = No channel
+commands.music.loop.error.connected.description = You have to be in the same voice channel as the bot to set the repeat status.
+commands.music.loop.help.description = Repeats a song/queue.
commands.nsfw.gif.error.title = GIF not showing? Click here
commands.nsfw.img.error.title = Image not showing? Click here
@@ -247,6 +282,7 @@ commands.owner.shutdown.success.title = Shutdown
commands.owner.shutdown.help.description = Shuts the Bot down
commands.owner.test.success = TEST my friends
commands.owner.test.help.description = Just a little Test Command
+commands.owner.blacklist.help.description = Blacklist a user for specific commands
commands.settings.language.success.title = Language set
commands.settings.language.success.description = `%extra%` is your new language now.