diff --git a/pom.xml b/pom.xml index dbf03e6..7346825 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ net.dv8tion JDA - 4.1.0_81 + 4.0.0_79 org.json diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index c9c2f77..f96792f 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -57,7 +57,6 @@ public class Hadder { new RebootCommand(), new EqualsCommand(), new InviteCommand(), - new ScreenShareCommand(), new NickCommand(), new PrefixCommand(), new BlowjobCommand(), @@ -89,10 +88,7 @@ public class Hadder { new AboutCommand(), new LanguageCommand(), new ClydeCommand(), - new PlayCommand(), - new StarBoardCommand(), - new QueueCommand(), - new StopCommand()), config, helpCommand); + new StarBoardCommand()), config, helpCommand); builder.addEventListeners( new MentionListener(rethink), diff --git a/src/main/java/com/bbn/hadder/audio/AudioInfo.java b/src/main/java/com/bbn/hadder/audio/AudioInfo.java deleted file mode 100644 index 8aa35e9..0000000 --- a/src/main/java/com/bbn/hadder/audio/AudioInfo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.bbn.hadder.audio; - -import com.sedmelluq.discord.lavaplayer.track.AudioTrack; -import net.dv8tion.jda.api.entities.Member; - -/** - * @author Skidder / GregTCLTK - */ - -public class AudioInfo { - - private final AudioTrack track; - private final Member author; - - AudioInfo(AudioTrack track, Member author) { - this.track = track; - this.author = author; - } - - public AudioTrack getTrack() { - return track; - } - - public Member getAuthor() { - return author; - } - -} diff --git a/src/main/java/com/bbn/hadder/audio/AudioManager.java b/src/main/java/com/bbn/hadder/audio/AudioManager.java deleted file mode 100644 index 9f54aab..0000000 --- a/src/main/java/com/bbn/hadder/audio/AudioManager.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.bbn.hadder.audio; - -import com.bbn.hadder.commands.CommandEvent; -import com.bbn.hadder.utils.MessageEditor; -import com.sedmelluq.discord.lavaplayer.player.AudioLoadResultHandler; -import com.sedmelluq.discord.lavaplayer.player.AudioPlayer; -import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager; -import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager; -import com.sedmelluq.discord.lavaplayer.source.AudioSourceManagers; -import com.sedmelluq.discord.lavaplayer.tools.FriendlyException; -import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist; -import com.sedmelluq.discord.lavaplayer.track.AudioTrack; -import net.dv8tion.jda.api.entities.Guild; -import net.dv8tion.jda.api.entities.Message; - -import java.util.AbstractMap; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -/** - * @author Skidder / GregTCLTK - */ - -public class AudioManager { - - - public AudioManager() { - AudioSourceManagers.registerRemoteSources(myManager); - } - - public final Map> players = new HashMap<>(); - public final AudioPlayerManager myManager = new DefaultAudioPlayerManager(); - - public void loadTrack(String identifier, CommandEvent event, Message msg) { - - Guild guild = event.getGuild(); - getPlayer(guild); - - myManager.loadItemOrdered(guild, identifier, new AudioLoadResultHandler() { - - @Override - public void trackLoaded(AudioTrack track) { - getTrackManager(guild).queue(track, event.getMember()); - msg.editMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO, - "commands.music.play.success.loading.title", "⏯", - "", "") - .addField(event.getMessageEditor().getTerm("commands.music.play.success.title"), track.getInfo().title, false) - .addField(event.getMessageEditor().getTerm("commands.music.play.success.author"), track.getInfo().author, true) - .addField(event.getMessageEditor().getTerm("commands.music.play.success.length"), - String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(track.getInfo().length), - TimeUnit.MILLISECONDS.toMinutes(track.getInfo().length) % TimeUnit.HOURS.toMinutes(1), - TimeUnit.MILLISECONDS.toSeconds(track.getInfo().length) % TimeUnit.MINUTES.toSeconds(1)), true) - .build()).queue(); - } - - @Override - public void playlistLoaded(AudioPlaylist playlist) { - if (playlist.getSelectedTrack() != null) { - trackLoaded(playlist.getSelectedTrack()); - } else if (playlist.isSearchResult()) { - trackLoaded(playlist.getTracks().get(0)); - } else { - for (int i = 0; i < Math.min(playlist.getTracks().size(), 200); i++) { - getTrackManager(guild).queue(playlist.getTracks().get(i), event.getMember()); - } - } - } - - @Override - public void noMatches() { - msg.editMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO, - "commands.music.play.error.match.title", "❌", - "commands.music.play.error.match.description", "") - .build()).queue(); - } - - @Override - public void loadFailed(FriendlyException e) { - msg.editMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO, - "commands.music.play.error.load.title", "❌", - "commands.music.play.error.load.description", "") - .build()).queue(); - } - }); - } - - public boolean hasPlayer(Guild guild) { - return players.containsKey(guild.getId()); - } - - public AudioPlayer getPlayer(Guild guild) { - AudioPlayer p; - if (hasPlayer(guild)) { - p = players.get(guild.getId()).getKey(); - } else { - p = createPlayer(guild); - } - return p; - } - - public TrackManager getTrackManager(Guild guild) { - return players.get(guild.getId()).getValue(); - } - - public AudioPlayer createPlayer(Guild guild) { - AudioPlayer nPlayer = myManager.createPlayer(); - TrackManager manager = new TrackManager(nPlayer); - nPlayer.addListener(manager); - guild.getAudioManager().setSendingHandler(new AudioPlayerSendHandler(nPlayer)); - players.put(guild.getId(), new AbstractMap.SimpleEntry<>(nPlayer, manager)); - return nPlayer; - } - -} diff --git a/src/main/java/com/bbn/hadder/audio/AudioPlayerSendHandler.java b/src/main/java/com/bbn/hadder/audio/AudioPlayerSendHandler.java deleted file mode 100644 index 1863de2..0000000 --- a/src/main/java/com/bbn/hadder/audio/AudioPlayerSendHandler.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.bbn.hadder.audio; - -import com.sedmelluq.discord.lavaplayer.player.AudioPlayer; -import com.sedmelluq.discord.lavaplayer.track.playback.AudioFrame; -import net.dv8tion.jda.api.audio.AudioSendHandler; - -import javax.annotation.Nullable; -import java.nio.ByteBuffer; - -/** - * @author Skidder / GregTCLTK - */ - -public class AudioPlayerSendHandler implements AudioSendHandler { - - private final AudioPlayer audioPlayer; - private AudioFrame lastFrame; - - public AudioPlayerSendHandler(AudioPlayer audioPlayer) { - this.audioPlayer = audioPlayer; - } - - @Override - public boolean canProvide() { - if (lastFrame == null) { - lastFrame = audioPlayer.provide(); - } - - return lastFrame != null; - } - - @Nullable - @Override - public ByteBuffer provide20MsAudio() { - if (lastFrame == null) { - lastFrame = audioPlayer.provide(); - } - - byte[] data = lastFrame != null ? lastFrame.getData() : null; - lastFrame = null; - - return ByteBuffer.wrap(data); - } - - @Override - public boolean isOpus() { - return true; - } -} diff --git a/src/main/java/com/bbn/hadder/audio/TrackManager.java b/src/main/java/com/bbn/hadder/audio/TrackManager.java deleted file mode 100644 index b4c1e9a..0000000 --- a/src/main/java/com/bbn/hadder/audio/TrackManager.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.bbn.hadder.audio; - -import com.sedmelluq.discord.lavaplayer.player.AudioPlayer; -import com.sedmelluq.discord.lavaplayer.player.event.AudioEventAdapter; -import com.sedmelluq.discord.lavaplayer.track.AudioTrack; -import com.sedmelluq.discord.lavaplayer.track.AudioTrackEndReason; -import net.dv8tion.jda.api.entities.Guild; -import net.dv8tion.jda.api.entities.Member; -import net.dv8tion.jda.api.entities.VoiceChannel; - -import java.util.*; -import java.util.concurrent.LinkedBlockingQueue; - -/** - * @author Skidder / GregTCLTK - */ - -public class TrackManager extends AudioEventAdapter { - - private final AudioPlayer player; - private final Queue queue; - - public TrackManager(AudioPlayer player) { - this.player = player; - this.queue = new LinkedBlockingQueue<>(); - } - - public void queue(AudioTrack track, Member author) { - AudioInfo info = new AudioInfo(track, author); - queue.add(info); - - if (player.getPlayingTrack() == null) { - player.playTrack(track); - } - } - - @Override - public void onTrackStart(AudioPlayer player, AudioTrack track) { - AudioInfo info = queue.element(); - VoiceChannel vChan = info.getAuthor().getVoiceState().getChannel(); - if (vChan == null) { - player.stopTrack(); - } else { - info.getAuthor().getGuild().getAudioManager().openAudioConnection(vChan); - } - } - - @Override - public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason endReason) { - Guild g = queue.poll().getAuthor().getGuild(); - if (queue.isEmpty()) { - g.getAudioManager().closeAudioConnection(); - } else { - player.playTrack(queue.element().getTrack()); - } - } - - public Set getQueuedTracks() { - return new LinkedHashSet<>(queue); - } - - public void purgeQueue() { - queue.clear(); - } - - public void remove(AudioInfo entry) { - queue.remove(entry); - } - - 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/moderation/StarBoardCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/StarBoardCommand.java index 3371eec..50d6987 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/StarBoardCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/StarBoardCommand.java @@ -14,7 +14,7 @@ public class StarBoardCommand implements Command { event.getChannel().sendMessage( event.getMessageEditor().getMessage( MessageEditor.MessageType.INFO, - "commands.moderation.starboard.success.title","") + "commands.moderation.starboard.successchannel","") .build()) .queue(); } else { diff --git a/src/main/java/com/bbn/hadder/commands/music/PlayCommand.java b/src/main/java/com/bbn/hadder/commands/music/PlayCommand.java deleted file mode 100644 index bae30df..0000000 --- a/src/main/java/com/bbn/hadder/commands/music/PlayCommand.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.bbn.hadder.commands.music; - -import com.bbn.hadder.audio.AudioManager; -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 java.net.URL; - -/** - * @author Skidder / GregTCLTK - */ - -public class PlayCommand implements Command { - - /* - private static final String CD = "\uD83D\uDCBF"; - private static final String MIC = "\uD83C\uDFA4 **|>** "; */ - - @Override - public void executed(String[] args, CommandEvent event) { - if (args.length > 0) { - if (event.getMember().getVoiceState().inVoiceChannel()) { - String input = event.getMessage().getContentRaw().replaceFirst(event.getRethink().getGuildPrefix(event.getGuild().getId()) + "play ", "").replaceFirst(event.getRethink().getUserPrefix(event.getAuthor().getId()) + "play ", ""); - try { - new URL(input).toURI(); - Message msg = event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO, - "commands.music.play.load.title", "⭕", - "commands.music.play.load.description", "").build()).complete(); - new AudioManager().loadTrack(input, event, msg); - } catch (Exception ignore) { - Message msg = event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO, - "commands.music.play.load.title", "⭕", - "commands.music.play.load.description", "").build()).complete(); - new AudioManager().loadTrack("ytsearch: " + input, event, msg); - } - } else { - event.getTextChannel().sendMessage(event.getMessageEditor().getMessage( - MessageEditor.MessageType.WARNING, - "commands.music.join.error.channel.title", - "commands.music.join.error.channel.description") - .build()).queue(); - } - } else event.getHelpCommand().sendHelp(this, event); - - - /* OUTSOURCE THIS - Guild guild = event.getGuild(); - if (!hasPlayer(guild) || getPlayer(guild).getPlayingTrack() == null) { // No song is playing - event.getTextChannel().sendMessage("No song is being played at the moment! *It's your time to shine..*").queue(); - } else { - AudioTrack track = getPlayer(guild).getPlayingTrack(); - event.getTextChannel().sendMessage("Track Info" + String.format(QUEUE_DESCRIPTION, CD, getOrNull(track.getInfo().title), - "\n\u23F1 **|>** `[ " + getTimestamp(track.getPosition()) + " / " + getTimestamp(track.getInfo().length) + " ]`", - "\n" + MIC, getOrNull(track.getInfo().author), - "\n\uD83C\uDFA7 **|>** " + "")).queue(); - }*/ - - } - - @Override - public String[] labels() { - return new String[]{"play"}; - } - - @Override - public String description() { - return "commands.music.play.help.description"; - } - - @Override - public String usage() { - return "song"; - } -} diff --git a/src/main/java/com/bbn/hadder/commands/music/QueueCommand.java b/src/main/java/com/bbn/hadder/commands/music/QueueCommand.java deleted file mode 100644 index 8756e38..0000000 --- a/src/main/java/com/bbn/hadder/commands/music/QueueCommand.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.bbn.hadder.commands.music; - -import com.bbn.hadder.audio.AudioInfo; -import com.bbn.hadder.audio.AudioManager; -import com.bbn.hadder.commands.Command; -import com.bbn.hadder.commands.CommandEvent; -import com.bbn.hadder.utils.MessageEditor; - -import java.util.Set; - -/** - * @author Skidder / GregTCLTK - */ - -public class QueueCommand implements Command { - - @Override - public void executed(String[] args, CommandEvent event) { - if (!new AudioManager().hasPlayer(event.getGuild()) || new AudioManager().getTrackManager(event.getGuild()).getQueuedTracks().isEmpty()) { - event.getTextChannel().sendMessage( - event.getMessageEditor().getMessage(MessageEditor.MessageType.WARNING, "", "").build()).queue(); - } else { - Set queue = new AudioManager().getTrackManager(event.getGuild()).getQueuedTracks(); - // Insert message here - } - } - - @Override - public String[] labels() { - return new String[]{"queue"}; - } - - @Override - public String description() { - return "Shows the music queue."; - } - - @Override - public String usage() { - return ""; - } -} diff --git a/src/main/java/com/bbn/hadder/commands/music/StopCommand.java b/src/main/java/com/bbn/hadder/commands/music/StopCommand.java deleted file mode 100644 index ab03799..0000000 --- a/src/main/java/com/bbn/hadder/commands/music/StopCommand.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.bbn.hadder.commands.music; - -import com.bbn.hadder.audio.AudioManager; -import com.bbn.hadder.commands.Command; -import com.bbn.hadder.commands.CommandEvent; -import com.bbn.hadder.utils.MessageEditor; - -/** - * @author Skidder / GregTCLTK - */ - -public class StopCommand implements Command { - - @Override - public void executed(String[] args, CommandEvent event) { - new AudioManager().players.remove(event.getGuild().getId()); - new AudioManager().getPlayer(event.getGuild()).destroy(); - new AudioManager().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(); - } - - @Override - public String[] labels() { - return new String[]{"stop"}; - } - - @Override - public String description() { - return "commands.music.stop.help.description"; - } - - @Override - public String usage() { - return ""; - } -} diff --git a/src/main/java/com/bbn/hadder/utils/AudioPlayerSendHandler.java b/src/main/java/com/bbn/hadder/utils/AudioPlayerSendHandler.java new file mode 100644 index 0000000..ff3f483 --- /dev/null +++ b/src/main/java/com/bbn/hadder/utils/AudioPlayerSendHandler.java @@ -0,0 +1,25 @@ +package com.bbn.hadder.utils; + +/* + * @author Skidder / GregTCLTK + */ + +import net.dv8tion.jda.api.audio.AudioSendHandler; + +import javax.annotation.Nullable; +import java.nio.ByteBuffer; + +public class AudioPlayerSendHandler implements AudioSendHandler { + + @Override + public boolean canProvide() { + return false; + } + + @Nullable + @Override + public ByteBuffer provide20MsAudio() { + + return null; + } +} diff --git a/src/main/java/com/bbn/hadder/utils/MessageEditor.java b/src/main/java/com/bbn/hadder/utils/MessageEditor.java index c7205f1..2f22d85 100644 --- a/src/main/java/com/bbn/hadder/utils/MessageEditor.java +++ b/src/main/java/com/bbn/hadder/utils/MessageEditor.java @@ -56,7 +56,7 @@ public class MessageEditor { switch (type) { case INFO: builder - .setColor(new Color(78, 156, 174)) + .setColor(new Color(47, 94, 105)) .setFooter("Hadder", "https://bigbotnetwork.com/images/Hadder.png") .setTimestamp(Instant.now()); break; diff --git a/src/main/resources/Translations/Translations_de.properties b/src/main/resources/Translations/Translations_de.properties index 06576ae..f526cae 100644 --- a/src/main/resources/Translations/Translations_de.properties +++ b/src/main/resources/Translations/Translations_de.properties @@ -2,136 +2,136 @@ # @author Skidder / GregTCLTK # -Hadder = Hadderino +Hadder = Hadder -user = <@User> +user = <@Benutzer> searchterm = username = -number = /all -prefix = -userprefix = -vc-name/id = -user+nickname = <@user> -region = +number = /all +prefix = +userprefix = +vc-name/id = +user+nickname = <@Benutzer> +region = guildid = -content = +content = -error = Error -none = None -success\! = Success\! +error = Fehler +none = Nicht angegeben +success\! = Erfolgreich\! -commands.fun.avatar.success.title = Avatar of %extra% -commands.fun.avatar.help.description = Sends the avatar of the specified member. -commands.fun.gif.error.description = Please try again with another term. -commands.fun.gif.help.description = Look for a GIF on Giphy -commands.fun.meme.success.title = Your random meme -commands.fun.meme.api.error = The request to the meme API could not be processed. Please try it again later. -commands.fun.meme.help.description = Sends you a random meme. -commands.fun.clyde.help.description = Send a message as a webhook named Clyde. +commands.fun.avatar.success.title = Avatar von %extra% +commands.fun.avatar.help.description = Sendet den Avatar des angegebenen Benutzers. +commands.fun.gif.error.description = Bitte versuche es mit einem anderen Begriff erneut. +commands.fun.gif.help.description = Suche nach einem GIF auf Giphy +commands.fun.meme.success.title = Dein zufälliges Meme +commands.fun.meme.api.error = Die Anfrage an die Meme-API konnte nicht verarbeitet werden. Bitte versuche es später erneut. +commands.fun.meme.help.description = Sendet dir einen zufälligen Meme. +commands.fun.clyde.help.description = Sendet eine Nachricht als Webhook namens Clyde. -commands.general.about.success.title = Hadder - About -commands.general.about.success.description = Hadder is an open source Discord bot. -commands.general.about.success.field.one.title = Support the Developers -commands.general.about.success.field.one.description = Hadder is completely free for everyone. We would appreciate it you donate some money [here]%extra% -commands.general.about.help.description = Shows infos about Hadder -commands.general.equals.string.first.request = Please send me the first String -commands.general.equals.string.second.request = Please send me the second String -commands.general.equals.string.equals.true = Yes\! The first string equals the second string\! -commands.general.equals.string.equals.false = Well yes but actually No. This isn't the same. -commands.general.equals.string.first = First String -commands.general.equals.string.second = Second String -commands.general.equals.string.result = Result -commands.general.equals.help.description = Check if two strings are the same +commands.general.about.success.title = Hadder - Info +commands.general.about.success.description = Hadder ist ein Open-Source Discord Bot. +commands.general.about.success.field.one.title = Unterstütze die Entwickler +commands.general.about.success.field.one.description = Hadder ist für alle völlig kostenlos. Wir würden uns freuen, wenn du [hier]%extra% etwas Geld spenden würdest. +commands.general.about.help.description = Zeigt Informationen über Hadder +commands.general.equals.string.first.request = Bitte sende mir den ersten String +commands.general.equals.string.second.request = Bitte sende mir den zweiten String +commands.general.equals.string.equals.true = Ja\! Der erste String entspricht dem zweiten String\! +commands.general.equals.string.equals.false = Ja, aber eigentlich nein. Das ist nicht dasselbe. +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 = Prüft ob zwei Strings gleich sind commands.general.help.field.usage = Benutzung -commands.general.help.error.description = I need the Embed Links Permission to send the Help Menu\! -commands.general.help.help.description = Shows each command or explains its usage +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 = [CommandName] -commands.general.invite.success.title = Invite me\! -commands.general.invite.success.description = [Invite me here\!]%extra% -commands.general.invite.help.description = Shows the invitation to invite Hadder to your server -commands.general.ping.help.description = Shows the ping to the Discord API +commands.general.invite.success.title = Lade mich ein\! +commands.general.invite.success.description = [Lade mich hier ein\!]%extra% +commands.general.invite.help.description = Zeigt die Einladung, um Hadder auf deinen Server einzuladen +commands.general.ping.help.description = Zeigt den Ping zur Discord API -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.github.link.title = Link your GitHub Account -commands.misc.github.success.title = Information about %extra% -commands.misc.github.success.bio = User bio -commands.misc.github.success.location = Location -commands.misc.github.success.website = Website -commands.misc.github.success.repositories = Public repositories -commands.misc.github.success.gists = Public gists -commands.misc.github.success.followers = Followers -commands.misc.github.success.following = Following -commands.misc.github.api.error.description = The GitHub API might be down at the moment\! -commands.misc.github.user.error.description = This user does not exist\! -commands.misc.github.connect.title = Connect you GH account -commands.misc.github.connect.description = [Please connect your GitHub account here]%extra% -commands.misc.github.help.description = Displays information about a GitHub user profile. +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.github.link.title = Verbinde dein GitHub Konto +commands.misc.github.success.title = Informationen über %extra% +commands.misc.github.success.bio = Biographie +commands.misc.github.success.location = Standort +commands.misc.github.success.website = Webseite +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.description = Die GitHub API könnte im Moment nicht verfügbar sein\! +commands.misc.github.user.error.description = Dieser Benutzer existiert nicht\! +commands.misc.github.connect.title = Verbinde dein GH Konto +commands.misc.github.connect.description = [Bitte verbinden Sie Ihr GitHub-Konto hier]%extra% +commands.misc.github.help.description = Zeigt Informationen über ein GitHub Benutzerprofil an. commands.misc.screenshare.success.title = Here's your Url to share your Screen -commands.misc.screenshare.id.error.title = Wait that's illegal +commands.misc.screenshare.id.error.title = Warte, das ist illegal commands.misc.screenshare.id.error.description = This ID is invalid. \nMaybe you entered a wrong ID? \n\nNote\: Make sure the Voice Channel is on this Guild. -commands.misc.screenshare.channel.error.title = Please Choose a Voice Channel +commands.misc.screenshare.channel.error.title = Bitte wähle einen Sprachkanal commands.misc.screenshare.channel.error.description = There is more than one channel with this name commands.misc.screenshare.number.error.title = You specified a wrong number\! commands.misc.screenshare.number.error.description = This isn't a Number. -commands.misc.screenshare.channel.existing.error = Hol' up +commands.misc.screenshare.channel.existing.error = Warte ma' commands.misc.screenshare.channel.existing.description = There is no Voice Channel named like this. \n\nNote\: Make sure the Voice Channel is on this Guild. commands.misc.screenshare.help.description = Shows you the link to share your screen. commands.moderation.ban.success.title = %extra% Successfully banned %extra% commands.moderation.ban.success.description = I successfully baned %extra% -commands.moderation.ban.error.title = Not possible -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 baned %extra% Members\! +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 = Ich habe erfolgreich %extra% Mitglieder gebannt\! commands.moderation.ban.help.description = Bans one ore more user 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.number.error.description = You have to choose a number between 1 and 99\! -commands.moderation.clear.success.description = Successfully deleted %extra% messages. -commands.moderation.clear.message.error.title = No messages\! -commands.moderation.clear.message.error.description = There are no messages in this channel. -commands.moderation.clear.help.description = Deletes the specified number of messages. +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.description = Sie müssen eine Zahl zwischen 1 und 99 wählen\! +commands.moderation.clear.success.description = Ich habe erfolgreich %extra% Nachrichten gelöscht. +commands.moderation.clear.message.error.title = Keine Nachrichten\! +commands.moderation.clear.message.error.description = Es gibt keine Nachrichten in diesem Kanal. +commands.moderation.clear.help.description = Löscht die angegebene Anzahl von Nachrichten. commands.moderation.prefix.success.title = %extra% Successfully set %extra% commands.moderation.prefix.success.description = I successfully set the new prefix for the guild to `%extra%`. commands.moderation.prefix.error.description = The prefix must not contain **"** commands.moderation.prefix.help.description = Sets the Guild-Prefix. -commands.moderation.invitedetect.activate.success.title = Successfully activated +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.error.title = Already activated +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.deactivate.success.title = Successfully deactivated +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.error.title = Already deactivated -commands.moderation.invitedetect.deactivate.error.description = The invite link detection is already deactivated on this guild. -commands.moderation.invitedetect.help.description = Activate or deactivate the Discord invite link detection. -commands.moderation.kick.success.title = %extra% Successfully kicked %extra% -commands.moderation.kick.success.description = I successfully kicked %extra%. -commands.moderation.kick.error.title = Not possible -commands.moderation.kick.myself.error.description = I can not kick myself\! -commands.moderation.kick.yourself.error.description = You can't kick yourself. -commands.moderation.kick.mass.success.description = I successfully kicked 69 Members\! -commands.moderation.kick.help.description = Kicks one or more user from the server. -commands.moderation.kick.masskick.success.description = I successfully kicked %extra% members. +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. +commands.moderation.kick.success.title = %extra% Erfolgreich gekickt %extra% +commands.moderation.kick.success.description = Ich habe %extra% erfolgreich gekickt. +commands.moderation.kick.error.title = Nicht möglich +commands.moderation.kick.myself.error.description = Ich kann mich nicht selbst kicken\! +commands.moderation.kick.yourself.error.description = Du kannst dich nicht selbst kicken. +commands.moderation.kick.mass.success.description = Ich habe erfolgreich %extra% Mitglieder gekickt\! +commands.moderation.kick.help.description = Wirft einen oder mehrere Benutzer vom Server. +commands.moderation.kick.masskick.success.description = Ich habe %extra% Mitglieder erfolgreich gekickt. commands.moderation.link.request.success.description = If i'm on this guild i sent a message to accept the link. -commands.moderation.link.error.title = Wait that's illegal. +commands.moderation.link.error.title = Warte, das ist illegal. commands.moderation.link.request.error.description = You specified the same guild as the guild on which you're reading this commands.moderation.link.request.accept.title = ) wants to link guilds\! -commands.moderation.link.request.accept.description = React with the reactions to accept or decline it +commands.moderation.link.request.accept.description = Reagiere mit den Reaktionen um es zu akzeptieren oder abzulehnen commands.moderation.link.set.title = Set the thing boi commands.moderation.link.help.description = Links two or more servers. commands.moderation.nick.success.title = %extra% Successfully nicked %extra% commands.moderation.nick.success.description = I successfully nicked %extra%. -commands.moderation.nick.myself.success.description = I successfully changed my nickname. +commands.moderation.nick.myself.success.description = Ich habe meinen Spitznamen erfolgreich geändert. commands.moderation.nick.massnick.success.description = I successfully nicked %extra% Members. -commands.moderation.nick.help.description = Rename a one or more user. -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.nick.help.description = Benennt einen oder mehrere Benutzer um. +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 = %extra% Successfully added role(s) %extra% commands.moderation.role.add.success.description = I successfully added %extra% roles to %extra_two% members. @@ -140,15 +140,15 @@ commands.moderation.role.remove.success.description = I successfully removed %ex 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.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 = 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 -commands.moderation.rules.rules.description = The channel was successfully set to %extra%. Please send me the rules now. +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 = Regeln +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.error.title = Role does not exist +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.guild.error.title = Wrong Guild +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 commands.moderation.rules.emote.accept.description = The role has been successfully set to %extra%. Now send me the emote on which your user should react to to get verified. @@ -175,48 +175,48 @@ 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 = 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.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.nsfw.gif.error.title = GIF not showing? Click here -commands.nsfw.img.error.title = Image not showing? Click here -commands.nsfw.anal.help.description = Shows a random anal gif. -commands.nsfw.bdsm.help.description = Shows a random BDSM picture. -commands.nsfw.blowjob.help.description = Shows a random Blowjob picture. -commands.nsfw.boobs.help.description = Shows a random boob gif. -commands.nsfw.cum.help.description = Shows a random cum gif. -commands.nsfw.erotic.help.description = Shows a random erotic picture. -commands.nsfw.feet.help.description = Shows a random feet gif. +commands.nsfw.gif.error.title = GIF wird nicht angezeigt? Klicke hier +commands.nsfw.img.error.title = Bild wird nicht angezeigt? Klicke hier +commands.nsfw.anal.help.description = Zeigt einen zufälligen Anal GIF. +commands.nsfw.bdsm.help.description = Zeigt ein zufälliges BDSM Bild. +commands.nsfw.blowjob.help.description = Zeigt ein zufälliges Blowjob Bild. +commands.nsfw.boobs.help.description = Zeigt einen zufälligen Boob GIF. +commands.nsfw.cum.help.description = Zeigt einen zufälligen Cum GIF. +commands.nsfw.erotic.help.description = Zeigt ein zufälliges Erotik Bild. +commands.nsfw.feet.help.description = Zeigt einen zufälligen Feet GIF. commands.nsfw.fingering.help.description = Shows a random fingering gif. commands.nsfw.linking.help.description = Shows a random licking gif. -commands.nsfw.porn.help.description = Shows a random porn gif. -commands.nsfw.pussy.help.description = Shows a random pussy gif. -commands.nsfw.randomporn.help.description = Shows a completely random porn gif. -commands.nsfw.solo.help.description = Shows a random solo gif. +commands.nsfw.porn.help.description = Zeigt einen zufälligen Porn GIF. +commands.nsfw.pussy.help.description = Zeigt einen zufälligen Pussy GIF. +commands.nsfw.randomporn.help.description = Zeigt ein völlig zufälliges Porno GIF. +commands.nsfw.solo.help.description = Zeigt einen zufälligen Solo GIF. commands.nsfw.spank.help.description = Shows a random spank gif. -commands.nsfw.trans.help.description = Shows a random trans picture. +commands.nsfw.trans.help.description = Zeigt ein zufälliges Trans Bild. commands.owner.eval.success.title = Eval Command -commands.owner.eval.success.input = Input -commands.owner.eval.success.output = Output +commands.owner.eval.success.input = Eingabe +commands.owner.eval.success.output = Ausgabe commands.owner.eval.success.timing = Timing -commands.owner.eval.help.description = Execute the given code +commands.owner.eval.help.description = Führt den angegebenen Code aus commands.owner.eval.help.usage = -commands.owner.guildleave.success.title = Successfully left -commands.owner.guildleave.success.description = I successfully left %extra%. -commands.owner.guildleave.error.title = Can not leave +commands.owner.guildleave.success.title = Erfolgreich verlassen +commands.owner.guildleave.success.description = Ich habe %extra% erfolgreich verlassen. +commands.owner.guildleave.error.title = Verlassen nicht möglich commands.owner.guildleave.error.description = I can not leave from this guild. Maybe this isn't a ID? commands.owner.guildleave.help.description = Quit from a guild commands.owner.reboot.help.description = Restart the bot -commands.owner.shutdown.success.title = Shutdown +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.settings.language.success.title = Language set commands.settings.language.success.description = `%extra%` is your new language now. -commands.settings.language.help.description = Sets the new primary language for a user. +commands.settings.language.help.description = Führt den angegebenen Code aus. commands.settings.language.help.usage = commands.settings.prefix.success.title = %extra% Successfully set %extra% commands.settings.prefix.success.description = I successfully set the new prefix for you to `%extra%`. diff --git a/src/main/resources/Translations/Translations_en.properties b/src/main/resources/Translations/Translations_en.properties index 67a2706..1ffdea2 100644 --- a/src/main/resources/Translations/Translations_en.properties +++ b/src/main/resources/Translations/Translations_en.properties @@ -15,7 +15,6 @@ user+nickname = <@user> region = guildid = content = -song = error = Error none = None @@ -24,19 +23,19 @@ success\! = Success\! commands.fun.avatar.success.title = Avatar of %extra% commands.fun.avatar.help.description = Sends the avatar of the specified member. commands.fun.gif.error.description = Please try again with another term. -commands.fun.gif.help.description = Look for a GIF on Giphy -commands.fun.meme.success.title = Your random meme -commands.fun.meme.api.error = The request to the meme API could not be processed. Please try it again later. +commands.fun.gif.help.description = Looks for a GIF on Giphy. +commands.fun.meme.success.title = Your random meme\: +commands.fun.meme.api.error = The request to the meme API could not be processed. Please try again later. commands.fun.meme.help.description = Sends you a random meme. -commands.fun.clyde.help.description = Send a message as a webhook named Clyde. +commands.fun.clyde.help.description = Sends a message as a webhook named Clyde. commands.general.about.success.title = Hadder - About commands.general.about.success.description = Hadder is an open source Discord bot. commands.general.about.success.field.one.title = Support the Developers -commands.general.about.success.field.one.description = Hadder is completely free for everyone. We would appreciate it you donate some money [here]%extra% -commands.general.about.help.description = Shows infos about Hadder -commands.general.equals.string.first.request = Please send me the first String -commands.general.equals.string.second.request = Please send me the second String +commands.general.about.success.field.one.description = Hadder is completely free for everyone. We would appreciate it if you donated some money to us. Click [here]%extra% to donate. +commands.general.about.help.description = Shows information about Hadder. +commands.general.equals.string.first.request = Please send me the first String. +commands.general.equals.string.second.request = Please send me the second String. commands.general.equals.string.equals.true = Yes\! The first string equals the second string\! commands.general.equals.string.equals.false = Well yes but actually No. This isn't the same. commands.general.equals.string.first = First String @@ -45,11 +44,11 @@ commands.general.equals.string.result = Result commands.general.equals.help.description = Check if two strings are the same commands.general.help.field.usage = Usage commands.general.help.error.description = I need the Embed Links Permission to send the Help Menu\! -commands.general.help.help.description = Shows each command or explains its usage +commands.general.help.help.description = Shows each command and explains its usage commands.general.help.help.label = [CommandName] commands.general.invite.success.title = Invite me\! commands.general.invite.success.description = [Invite me here\!]%extra% -commands.general.invite.help.description = Shows the invitation to invite Hadder to your server +commands.general.invite.help.description = Shows the invitation link to invite Hadder to your server. commands.general.ping.help.description = Shows the ping to the Discord API commands.misc.feedback.title.request.title = Feedback Topic @@ -57,7 +56,7 @@ commands.misc.feedback.title.request.description = Please send me the feedback t 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.success.title = Feedback successfully sent\! commands.misc.github.link.title = Link your GitHub Account commands.misc.github.success.title = Information about %extra% commands.misc.github.success.bio = User bio @@ -69,18 +68,18 @@ commands.misc.github.success.followers = Followers commands.misc.github.success.following = Following commands.misc.github.api.error.description = The GitHub API might be down at the moment\! commands.misc.github.user.error.description = This user does not exist\! -commands.misc.github.connect.title = Connect you GH account +commands.misc.github.connect.title = Connect your GH account commands.misc.github.connect.description = [Please connect your GitHub account here]%extra% commands.misc.github.help.description = Displays information about a GitHub user profile. -commands.misc.screenshare.success.title = Here's your Url to share your Screen -commands.misc.screenshare.id.error.title = Wait that's illegal -commands.misc.screenshare.id.error.description = This ID is invalid. \nMaybe you entered a wrong ID? \n\nNote\: Make sure the Voice Channel is on this Guild. -commands.misc.screenshare.channel.error.title = Please Choose a Voice Channel +commands.misc.screenshare.success.title = Here's your URL to share your Screen +commands.misc.screenshare.id.error.title = Wait. That's illegal. +commands.misc.screenshare.id.error.description = This ID is invalid. \nMaybe you entered a wrong ID. \n\nNote\: Make sure the Voice Channel is in this Guild. +commands.misc.screenshare.channel.error.title = Please choose a Voice Channel commands.misc.screenshare.channel.error.description = There is more than one channel with this name commands.misc.screenshare.number.error.title = You specified a wrong number\! commands.misc.screenshare.number.error.description = This isn't a Number. commands.misc.screenshare.channel.existing.error = Hol' up -commands.misc.screenshare.channel.existing.description = There is no Voice Channel named like this. \n\nNote\: Make sure the Voice Channel is on this Guild. +commands.misc.screenshare.channel.existing.description = There is no Voice Channel named like this. \n\nNote\: Make sure the Voice Channel is in this Guild. commands.misc.screenshare.help.description = Shows you the link to share your screen. commands.moderation.ban.success.title = %extra% Successfully banned %extra% @@ -115,9 +114,16 @@ commands.moderation.kick.success.description = I successfully kicked %extra%. commands.moderation.kick.error.title = Not possible commands.moderation.kick.myself.error.description = I can not kick myself\! commands.moderation.kick.yourself.error.description = You can't kick yourself. -commands.moderation.kick.mass.success.description = I successfully kicked %extra% Members\! +commands.moderation.kick.mass.success.description = I successfully kicked 69 Members\! commands.moderation.kick.help.description = Kicks one or more user from the server. commands.moderation.kick.masskick.success.description = I successfully kicked %extra% members. +commands.moderation.link.request.success.description = If i'm on this guild i sent a message to accept the link. +commands.moderation.link.error.title = Wait that's illegal. +commands.moderation.link.request.error.description = You specified the same guild as the guild on which you're reading this +commands.moderation.link.request.accept.title = ) wants to link guilds\! +commands.moderation.link.request.accept.description = React with the reactions to accept or decline it +commands.moderation.link.set.title = Set the thing boi +commands.moderation.link.help.description = Links two or more servers. commands.moderation.nick.success.title = %extra% Successfully nicked %extra% commands.moderation.nick.success.description = I successfully nicked %extra%. commands.moderation.nick.myself.success.description = I successfully changed my nickname. @@ -156,7 +162,7 @@ commands.moderation.rules.emote.error.equal.description = The 1st and 2nd emote commands.moderation.rules.emoji.decline.description = The first emote has been successfully set. Please send me now the decline emote. commands.moderation.rules.emoji.error.description = The given emote can't be used. commands.moderation.rules.help.description = Setup the rules on your Discord server -commands.moderation.starboard.success.title = Successfully set the Channel\! +commands.moderation.starboard.successchannel=Successfully set the Channel\! commands.music.join.success.title = Successfully connected commands.music.join.success.description = I successfully connected to %extra%. @@ -167,25 +173,11 @@ commands.music.join.error.connecting.trying.description = Hadder is already tryi 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.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.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.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.title = Title -commands.music.play.success.author = Author -commands.music.play.success.length = Length -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.stop.help.description = Stops the song commands.nsfw.gif.error.title = GIF not showing? Click here commands.nsfw.img.error.title = Image not showing? Click here