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.