. #403
51 changed files with 527 additions and 327 deletions
|
|
@ -11,9 +11,10 @@ Hadder Discord is a multi-purpose Discord bot with 100% uptime.
|
|||
[](https://github.com/BigBotNetwork/Hadder/blob/master/LICENSE)
|
||||
[](https://wakatime.com/badge/github/BigBotNetwork/Hadder)
|
||||
|
||||
[](https://discordextremelist.xyz/bots/Hadder)
|
||||
[](Https://Mythicalbots.Xyz/Bot/637002314162372639)
|
||||
[](https://top.gg/bot/637002314162372639)
|
||||
[](https://botlist.space/bot/637002314162372639?utm_source=bls&utm_medium=widget&utm_campaign=637002314162372639)
|
||||
[](https://discordbotlist.com/bots/637002314162372639)
|
||||
|
||||
## Hadder Team
|
||||
### Developer
|
||||
|
|
|
|||
27
pom.xml
27
pom.xml
|
|
@ -5,9 +5,19 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>Hadder</groupId>
|
||||
<artifactId>Hadder</artifactId>
|
||||
<version>1.0.1</version>
|
||||
|
||||
<version>1.1.3</version>
|
||||
<name>Hadder</name>
|
||||
<inceptionYear>2019</inceptionYear>
|
||||
<description>Hadder is a multi-purpose Discord bot.</description>
|
||||
<url>https://github.com/BigBotNetwork/Hadder</url>
|
||||
|
||||
<licenses>
|
||||
<license>
|
||||
<name>GNU Affero General Public License v3.0</name>
|
||||
<url>https://www.gnu.org/licenses/agpl-3.0.en.html</url>
|
||||
<distribution>repo</distribution>
|
||||
</license>
|
||||
</licenses>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
|
|
@ -56,7 +66,7 @@
|
|||
<dependency>
|
||||
<groupId>net.dv8tion</groupId>
|
||||
<artifactId>JDA</artifactId>
|
||||
<version>4.1.1_105</version>
|
||||
<version>4.1.1_113</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.json</groupId>
|
||||
|
|
@ -66,7 +76,7 @@
|
|||
<dependency>
|
||||
<groupId>com.rethinkdb</groupId>
|
||||
<artifactId>rethinkdb-driver</artifactId>
|
||||
<version>2.3.3</version>
|
||||
<version>2.4.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
|
|
@ -81,13 +91,18 @@
|
|||
<dependency>
|
||||
<groupId>org.kohsuke</groupId>
|
||||
<artifactId>github-api</artifactId>
|
||||
<version>1.106</version>
|
||||
<version>1.108</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sedmelluq</groupId>
|
||||
<artifactId>lavaplayer</artifactId>
|
||||
<version>1.3.34</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-annotations</artifactId>
|
||||
<version>2.10.3</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
|
@ -127,7 +142,7 @@
|
|||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-site-plugin</artifactId>
|
||||
<version>3.8.2</version>
|
||||
<version>3.9.0</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-project-info-reports-plugin</artifactId>
|
||||
|
|
|
|||
|
|
@ -125,7 +125,8 @@ public class Hadder {
|
|||
new BassCommand(),
|
||||
new EchoCommand(),
|
||||
new ServerStatsCommand(),
|
||||
new ProfileCommand()), config, helpCommand);
|
||||
new ProfileCommand(),
|
||||
new CodeCommand()), config, helpCommand);
|
||||
|
||||
builder.addEventListeners(
|
||||
new MentionListener(rethink),
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ package com.bbn.hadder;
|
|||
|
||||
import com.bbn.hadder.core.Config;
|
||||
import com.rethinkdb.RethinkDB;
|
||||
import com.rethinkdb.gen.exc.ReqlNonExistenceError;
|
||||
import com.rethinkdb.gen.exc.ReqlOpFailedError;
|
||||
import com.rethinkdb.net.Connection;
|
||||
import org.json.JSONArray;
|
||||
|
|
@ -26,7 +27,6 @@ import org.json.JSONObject;
|
|||
import java.lang.reflect.Field;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
|
||||
public class Rethink {
|
||||
private RethinkDB r = RethinkDB.r;
|
||||
private Connection conn;
|
||||
|
|
@ -51,11 +51,6 @@ public class Rethink {
|
|||
}
|
||||
}
|
||||
|
||||
public void disconnect() {
|
||||
conn.close();
|
||||
System.out.println("DISCONNECTED");
|
||||
}
|
||||
|
||||
private JSONArray getAsArray(String table, String where, String value) {
|
||||
try {
|
||||
String string = r.table(table).filter(row -> row.g(where.toLowerCase()).eq(value)).coerceTo("array").toJson().run(conn);
|
||||
|
|
@ -141,27 +136,26 @@ public class Rethink {
|
|||
.with("blacklisted", "none"));
|
||||
}
|
||||
|
||||
// TODO
|
||||
public boolean hasStarboardChannel(String guild_id) {
|
||||
return !this.getByID("server", guild_id, "starboard").equals("");
|
||||
}
|
||||
// TODO
|
||||
public void insertStarboardMessage(String message_id, String guild_id, String starboard_message_id) {
|
||||
this.insert("stars", r.hashMap("id", message_id).with("guild", guild_id).with("starboardmsg", starboard_message_id));
|
||||
}
|
||||
// TODO
|
||||
|
||||
public String getStarboardMessage(String message_id) {
|
||||
return (String) this.getByID("stars", message_id, "starboardmsg");
|
||||
}
|
||||
// TODO
|
||||
|
||||
public void removeStarboardMessage(String message_id) {
|
||||
this.remove("stars", "id", message_id);
|
||||
}
|
||||
// TODO
|
||||
public boolean hasStarboardMessage(String message_id) {
|
||||
return this.getByID("stars", message_id, "guild") != null;
|
||||
}
|
||||
|
||||
public boolean hasStarboardMessage(String message_id) {
|
||||
try {
|
||||
this.getByID("stars", message_id, "guild");
|
||||
return true;
|
||||
} catch (ReqlNonExistenceError e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void pushServer(RethinkServer server) {
|
||||
JSONObject object = new JSONObject();
|
||||
|
|
@ -190,5 +184,4 @@ public class Rethink {
|
|||
}
|
||||
r.table("user").get(user.getId()).update(object.toMap()).run(conn);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,15 +24,15 @@ public class RethinkServer {
|
|||
|
||||
private Rethink rethink;
|
||||
|
||||
String accept_emote = "";
|
||||
String decline_emote = "";
|
||||
String id;
|
||||
boolean invite_detect = false;
|
||||
String message_id = "";
|
||||
String neededstars = "3";
|
||||
String prefix = "h.";
|
||||
String role_id = "";
|
||||
String starboard = "";
|
||||
public String accept_emote = "";
|
||||
public String decline_emote = "";
|
||||
public String id;
|
||||
public boolean invite_detect = false;
|
||||
public String message_id = "";
|
||||
public String neededstars = "3";
|
||||
public String prefix = "h.";
|
||||
public String role_id = "";
|
||||
public String starboard = "";
|
||||
|
||||
public RethinkServer(JSONObject object, Rethink rethink) {
|
||||
for (Field field : this.getClass().getDeclaredFields()) {
|
||||
|
|
@ -68,7 +68,7 @@ public class RethinkServer {
|
|||
return id;
|
||||
}
|
||||
|
||||
public boolean isInviteDetect() {
|
||||
public boolean hasInviteDetect() {
|
||||
return invite_detect;
|
||||
}
|
||||
|
||||
|
|
@ -116,6 +116,10 @@ public class RethinkServer {
|
|||
this.starboard = starboard;
|
||||
}
|
||||
|
||||
public boolean hasStarboardChannel() {
|
||||
return !"".equals(starboard);
|
||||
}
|
||||
|
||||
public void updateRules(String message_id, String role_id, String accept_emote, String decline_emote) {
|
||||
this.setMessageID(message_id);
|
||||
this.setRoleID(role_id);
|
||||
|
|
|
|||
|
|
@ -24,10 +24,10 @@ public class RethinkUser {
|
|||
|
||||
private Rethink rethink;
|
||||
|
||||
String id;
|
||||
String prefix = "h.";
|
||||
String language = "en";
|
||||
String blacklisted = "none";
|
||||
public String id;
|
||||
public String prefix = "h.";
|
||||
public String language = "en";
|
||||
public String blacklisted = "none";
|
||||
|
||||
public RethinkUser(JSONObject object, Rethink rethink) {
|
||||
for (Field field : this.getClass().getDeclaredFields()) {
|
||||
|
|
|
|||
|
|
@ -76,17 +76,31 @@ public class AudioManager {
|
|||
|
||||
@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();
|
||||
if (getTrackManager(guild).getQueuedTracks().isEmpty()) {
|
||||
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();
|
||||
} else {
|
||||
getTrackManager(guild).queue(track, event.getMember());
|
||||
msg.editMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
|
||||
"commands.music.play.success.queueing.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
|
||||
|
|
@ -148,5 +162,4 @@ public class AudioManager {
|
|||
s = s - (minutes * 60);
|
||||
return (hours == 0 ? "" : hours + ":") + String.format("%02d", minutes) + ":" + String.format("%02d", s);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,15 +18,20 @@ 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.AudioReceiveHandler;
|
||||
import net.dv8tion.jda.api.audio.AudioSendHandler;
|
||||
import net.dv8tion.jda.api.audio.CombinedAudio;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.Queue;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
public class AudioPlayerSendHandler implements AudioSendHandler {
|
||||
public class AudioPlayerSendHandler implements AudioSendHandler, AudioReceiveHandler {
|
||||
|
||||
private final AudioPlayer audioPlayer;
|
||||
private AudioFrame lastFrame;
|
||||
private final Queue<byte[]> queue = new ConcurrentLinkedQueue<>();
|
||||
|
||||
public AudioPlayerSendHandler(AudioPlayer audioPlayer) {
|
||||
this.audioPlayer = audioPlayer;
|
||||
|
|
@ -34,28 +39,49 @@ public class AudioPlayerSendHandler implements AudioSendHandler {
|
|||
|
||||
@Override
|
||||
public boolean canProvide() {
|
||||
if (lastFrame == null) {
|
||||
if (audioPlayer.getPlayingTrack() == null)
|
||||
return !queue.isEmpty();
|
||||
else if (lastFrame == null) {
|
||||
lastFrame = audioPlayer.provide();
|
||||
return lastFrame != null;
|
||||
}
|
||||
|
||||
return lastFrame != null;
|
||||
return false;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ByteBuffer provide20MsAudio() {
|
||||
if (lastFrame == null) {
|
||||
lastFrame = audioPlayer.provide();
|
||||
if (audioPlayer.getPlayingTrack() == null) {
|
||||
byte[] data = queue.poll();
|
||||
return data == null ? null : ByteBuffer.wrap(data);
|
||||
} else {
|
||||
if (lastFrame == null) {
|
||||
lastFrame = audioPlayer.provide();
|
||||
}
|
||||
|
||||
byte[] data = lastFrame != null ? lastFrame.getData() : null;
|
||||
lastFrame = null;
|
||||
|
||||
return ByteBuffer.wrap(data);
|
||||
}
|
||||
}
|
||||
|
||||
byte[] data = lastFrame != null ? lastFrame.getData() : null;
|
||||
lastFrame = null;
|
||||
@Override
|
||||
public boolean canReceiveCombined() {
|
||||
return queue.size() < 10;
|
||||
}
|
||||
|
||||
return ByteBuffer.wrap(data);
|
||||
@Override
|
||||
public void handleCombinedAudio(CombinedAudio combinedAudio) {
|
||||
if (combinedAudio.getUsers().isEmpty())
|
||||
return;
|
||||
|
||||
byte[] data = combinedAudio.getAudioData(1.0f);
|
||||
queue.add(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpus() {
|
||||
return true;
|
||||
return audioPlayer.getPlayingTrack() != null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,17 +63,19 @@ public class TrackManager extends AudioEventAdapter {
|
|||
|
||||
@Override
|
||||
public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason endReason) {
|
||||
Guild g = queue.poll().getAuthor().getGuild();
|
||||
this.lastTrack = track;
|
||||
if (loop) {
|
||||
this.lastTrack = track;
|
||||
player.playTrack(lastTrack.makeClone());
|
||||
} else if (queue.isEmpty()) {
|
||||
manager.players.remove(g.getId());
|
||||
manager.getPlayer(g).destroy();
|
||||
manager.getTrackManager(g).purgeQueue();
|
||||
g.getAudioManager().closeAudioConnection();
|
||||
} else {
|
||||
player.playTrack(queue.element().getTrack());
|
||||
Guild g = queue.poll().getAuthor().getGuild();
|
||||
manager.getPlayer(g).stopTrack();
|
||||
if (!queue.isEmpty()) player.playTrack(queue.element().getTrack().makeClone());
|
||||
else {
|
||||
manager.players.remove(g.getId());
|
||||
manager.getPlayer(g).destroy();
|
||||
manager.getTrackManager(g).purgeQueue();
|
||||
g.getAudioManager().closeAudioConnection();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -98,8 +100,4 @@ public class TrackManager extends AudioEventAdapter {
|
|||
{
|
||||
this.loop = repeating;
|
||||
}
|
||||
|
||||
public AudioInfo getTrackInfo(AudioTrack track) {
|
||||
return queue.stream().filter(audioInfo -> audioInfo.getTrack().equals(track)).findFirst().orElse(null);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,9 +66,7 @@ public class ClydeCommand implements Command {
|
|||
}
|
||||
webhook.delete().queue();
|
||||
e.getMessage().delete().queue();
|
||||
} else {
|
||||
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.NO_SELF_PERMISSION).build()).queue();
|
||||
}
|
||||
} else e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.NO_SELF_PERMISSION).build()).queue();
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
|
||||
package com.bbn.hadder.commands.general;
|
||||
|
||||
import com.bbn.hadder.Hadder;
|
||||
import com.bbn.hadder.commands.Command;
|
||||
import com.bbn.hadder.commands.CommandEvent;
|
||||
import com.bbn.hadder.utils.MessageEditor;
|
||||
|
|
@ -32,8 +31,8 @@ public class InviteCommand implements Command {
|
|||
"",
|
||||
"commands.general.invite.success.description",
|
||||
"(https://discordapp.com/oauth2/authorize?client_id="
|
||||
+ Hadder.shardManager.getGuilds().get(0).getSelfMember().getId()
|
||||
+ "&scope=bot&permissions=470133879)")
|
||||
+ e.getJDA().getSelfUser().getId()
|
||||
+ "&scope=bot&permissions=1043852663)")
|
||||
.build()).queue();
|
||||
}
|
||||
|
||||
|
|
|
|||
79
src/main/java/com/bbn/hadder/commands/misc/CodeCommand.java
Normal file
79
src/main/java/com/bbn/hadder/commands/misc/CodeCommand.java
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
/*
|
||||
* Copyright 2019-2020 GregTCLTK and Schlauer-Hax
|
||||
*
|
||||
* Licensed under the GNU Affero General Public License, Version 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.gnu.org/licenses/agpl-3.0.en.html
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.bbn.hadder.commands.misc;
|
||||
|
||||
import com.bbn.hadder.commands.Command;
|
||||
import com.bbn.hadder.commands.CommandEvent;
|
||||
import com.bbn.hadder.utils.MessageEditor;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public class CodeCommand implements Command {
|
||||
|
||||
@Override
|
||||
public void executed(String[] args, CommandEvent e) {
|
||||
if (args.length > 0) {
|
||||
OkHttpClient client = new OkHttpClient();
|
||||
Request request = new Request.Builder().url("https://canary.discordapp.com/api/v6/invite/" + args[0]).addHeader("Authorization", "Bot " + e.getConfig().getBotToken()).build();
|
||||
|
||||
try {
|
||||
Response response = client.newCall(request).execute();
|
||||
JSONObject json = new JSONObject(response.body().string());
|
||||
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
|
||||
"commands.misc.code.success.title",
|
||||
"commands.misc.code.success.description")
|
||||
.addField("Code", "[" + args[0] + "](https://discord.gg/" + args[0] + ")", true)
|
||||
.addField("Guild Name", json.getJSONObject("guild").getString("name"), true)
|
||||
.addBlankField(true)
|
||||
.addField("Verification Level", String.valueOf(json.getJSONObject("guild").getInt("verification_level")), true)
|
||||
.addField("Guild ID", json.getJSONObject("guild").getString("id"), true)
|
||||
.addBlankField(true)
|
||||
.setThumbnail("https://cdn.discordapp.com/icons/" + json.getJSONObject("guild").getString("id") + "/" + json.getJSONObject("guild").getString("icon") + ".png")
|
||||
.build()).queue();
|
||||
} catch (JSONException ex) {
|
||||
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
|
||||
"commands.misc.code.error.title",
|
||||
"commands.misc.code.error.description").build()).queue();
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] labels() {
|
||||
return new String[]{"code", "invite-code", "ic"};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return "commands.misc.code.help.description";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String usage() {
|
||||
return "[Invite-code]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String example() {
|
||||
return "58My2dM";
|
||||
}
|
||||
}
|
||||
|
|
@ -54,12 +54,10 @@ public class GitHubCommand implements Command {
|
|||
String website = "None";
|
||||
try {
|
||||
bio = json.getString("bio");
|
||||
} catch (JSONException ignored) {
|
||||
}
|
||||
} catch (JSONException ignored) {}
|
||||
try {
|
||||
location = json.getString("location");
|
||||
} catch (JSONException ignored) {
|
||||
}
|
||||
} catch (JSONException ignored) {}
|
||||
|
||||
if (!json.getString("blog").equals("")) website = json.getString("blog");
|
||||
|
||||
|
|
|
|||
|
|
@ -74,9 +74,7 @@ public class ScreenShareCommand implements Command {
|
|||
.setDescription("http://discordapp.com/channels/" + e.getGuild().getId() + "/" + vcs.get(0).getId() + "/").build()).queue();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -42,7 +42,8 @@ public class ServerStatsCommand implements Command {
|
|||
.addField("MFA Level", String.valueOf(e.getGuild().getRequiredMFALevel().getKey()), true)
|
||||
.addField("Member Count", String.valueOf(e.getGuild().getMemberCount()), true)
|
||||
.addField("Explicit Content Level", e.getGuild().getExplicitContentLevel().getKey() + ": " + e.getGuild().getExplicitContentLevel(), true)
|
||||
//TODO: Features
|
||||
.addField("Features", e.getGuild().getFeatures().toString().replaceAll("\\[", "`").replaceAll(",", "`, `").replaceAll("]", "`"), true)
|
||||
.addBlankField(true)
|
||||
.setThumbnail(e.getGuild().getIconUrl())
|
||||
.setImage(e.getGuild().getBannerUrl());
|
||||
|
||||
|
|
|
|||
|
|
@ -58,8 +58,6 @@ public class BanCommand implements Command {
|
|||
"commands.moderation.ban.error.title",
|
||||
"commands.moderation.ban.yourself.error.description").build()).queue();
|
||||
}
|
||||
} else if (e.getMessage().getMentionedMembers().size() == 0) {
|
||||
e.getHelpCommand().sendHelp(this, e);
|
||||
} else if (e.getMessage().getMentionedMembers().size() > 1) {
|
||||
for (int i = 0; i < e.getMessage().getMentionedMembers().size(); i++) {
|
||||
Member member = e.getMessage().getMentionedMembers().get(i);
|
||||
|
|
@ -89,7 +87,7 @@ public class BanCommand implements Command {
|
|||
"",
|
||||
"commands.moderation.ban.massban.success.description",
|
||||
String.valueOf(e.getMessage().getMentionedMembers().size())).build()).queue();
|
||||
}
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -92,9 +92,7 @@ public class ClearCommand implements Command {
|
|||
} else {
|
||||
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.NO_SELF_PERMISSION).build()).queue();
|
||||
}
|
||||
} else {
|
||||
e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ public class InviteDetectCommand implements Command {
|
|||
String opinion = args[0].toLowerCase();
|
||||
switch (opinion) {
|
||||
case "on":
|
||||
if (!e.getRethinkServer().isInviteDetect()) {
|
||||
if (!e.getRethinkServer().hasInviteDetect()) {
|
||||
e.getRethinkServer().setInviteDetect(true);
|
||||
e.getTextChannel().sendMessage(
|
||||
e.getMessageEditor().getMessage(
|
||||
|
|
@ -50,7 +50,7 @@ public class InviteDetectCommand implements Command {
|
|||
break;
|
||||
|
||||
case "off":
|
||||
if (e.getRethinkServer().isInviteDetect()) {
|
||||
if (e.getRethinkServer().hasInviteDetect()) {
|
||||
e.getRethinkServer().setInviteDetect(false);
|
||||
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(
|
||||
MessageEditor.MessageType.INFO,
|
||||
|
|
@ -69,9 +69,7 @@ public class InviteDetectCommand implements Command {
|
|||
default:
|
||||
e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
} else {
|
||||
e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -54,8 +54,6 @@ public class KickCommand implements Command {
|
|||
} else {
|
||||
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR, "commands.moderation.kick.error.title", "commands.moderation.kick.yourself.error.description").build()).queue();
|
||||
}
|
||||
} else if (e.getMessage().getMentionedMembers().size() == 0) {
|
||||
e.getHelpCommand().sendHelp(this, e);
|
||||
} else if (e.getMessage().getMentionedMembers().size() > 1) {
|
||||
for (int i = 0; i < e.getMessage().getMentionedMembers().size(); i++) {
|
||||
Member member = e.getMessage().getMentionedMembers().get(i);
|
||||
|
|
@ -74,7 +72,7 @@ public class KickCommand implements Command {
|
|||
}
|
||||
}
|
||||
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO, "commands.moderation.kick.success.title", "✅", "commands.moderation.kick.masskick.success.description", String.valueOf(e.getMessage().getMentionedMembers().size())).build()).queue();
|
||||
}
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -54,9 +54,7 @@ public class NickCommand implements Command {
|
|||
"commands.moderation.nick.success.description", e.getMessage().getMentionedMembers().get(0).getUser().getAsTag()
|
||||
).build()).queue();
|
||||
}
|
||||
} else {
|
||||
e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
} else {
|
||||
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.NO_SELF_PERMISSION).build()).queue();
|
||||
}
|
||||
|
|
@ -81,9 +79,7 @@ public class NickCommand implements Command {
|
|||
).build()).queue();
|
||||
}
|
||||
}
|
||||
} else if (e.getMessage().getMentionedMembers().size() == 0) {
|
||||
e.getHelpCommand().sendHelp(this, e);
|
||||
} else {
|
||||
} else if (e.getMessage().getMentionedUsers().size() > 1) {
|
||||
for (int i = 0; i < e.getMessage().getMentionedMembers().size(); i++) {
|
||||
Member member = e.getMessage().getMentionedMembers().get(i);
|
||||
if (!e.getJDA().getSelfUser().getId().equals(member.getId())) {
|
||||
|
|
@ -99,7 +95,7 @@ public class NickCommand implements Command {
|
|||
"✅",
|
||||
"commands.moderation.nick.myself.success.description", String.valueOf(e.getMessage().getMentionedMembers().size())
|
||||
).build()).queue();
|
||||
}
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
} else {
|
||||
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.NO_SELF_PERMISSION).build()).queue();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ public class PrefixCommand implements Command {
|
|||
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(
|
||||
MessageEditor.MessageType.INFO,
|
||||
"commands.moderation.prefix.success.title",
|
||||
"✅",
|
||||
"",
|
||||
"commands.moderation.prefix.success.description",
|
||||
args[0]).build()
|
||||
).queue();
|
||||
|
|
@ -45,9 +45,7 @@ public class PrefixCommand implements Command {
|
|||
"",
|
||||
"commands.moderation.prefix.error.description").build()).queue();
|
||||
}
|
||||
} else {
|
||||
e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -86,17 +86,16 @@ public class RegionChangeCommand implements Command {
|
|||
case "us-south":
|
||||
setRegion(Region.US_SOUTH, "US South", e);
|
||||
break;
|
||||
/*case "south-korea":
|
||||
case "south-korea":
|
||||
setRegion(Region.SOUTH_KOREA, "South Korea", e);
|
||||
break;
|
||||
TODO: Publish when JDA v4.2.0 is released*/
|
||||
default:
|
||||
e.getTextChannel().sendMessage(
|
||||
e.getMessageEditor().getMessage(
|
||||
MessageEditor.MessageType.INFO,
|
||||
"commands.moderation.regionchange.regions.title",
|
||||
"")
|
||||
.setDescription("**LOCKED:**\n`amsterdam` `frankfurt` `eu-west` `eu-central` `london`\n\n**UNLOCKED:**\n`europe` `brazil` `hongkong` `india` `japan` `singapore` `south-africa` `sydney` `us-central` `us-east` `us-west` `us-south`")
|
||||
.setDescription("**LOCKED:**\n`amsterdam` `frankfurt` `eu-west` `eu-central` `london` `south korea`\n\n**UNLOCKED:**\n`europe` `brazil` `hongkong` `india` `japan` `singapore` `south-africa` `sydney` `us-central` `us-east` `us-west` `us-south`")
|
||||
.build()).queue();
|
||||
break;
|
||||
}
|
||||
|
|
@ -124,7 +123,7 @@ public class RegionChangeCommand implements Command {
|
|||
|
||||
@Override
|
||||
public String[] labels() {
|
||||
return new String[]{"changeregion", "cr", "change-region"};
|
||||
return new String[]{"changeregion", "cr", "change-region", "region"};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -0,0 +1,56 @@
|
|||
/*
|
||||
* Copyright 2019-2020 GregTCLTK and Schlauer-Hax
|
||||
*
|
||||
* Licensed under the GNU Affero General Public License, Version 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.gnu.org/licenses/agpl-3.0.en.html
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.bbn.hadder.commands.moderation;
|
||||
|
||||
import com.bbn.hadder.commands.Command;
|
||||
import com.bbn.hadder.commands.CommandEvent;
|
||||
import com.bbn.hadder.core.Perm;
|
||||
import com.bbn.hadder.core.Perms;
|
||||
import com.bbn.hadder.utils.MessageEditor;
|
||||
import net.dv8tion.jda.api.Permission;
|
||||
|
||||
@Perms(Perm.MANAGE_ROLES)
|
||||
public class RoleAssignmentCommand implements Command {
|
||||
|
||||
@Override
|
||||
public void executed(String[] args, CommandEvent e) {
|
||||
//TODO: THIS LOL
|
||||
if (e.getGuild().getSelfMember().hasPermission(Permission.MANAGE_ROLES)) {
|
||||
|
||||
} else e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.NO_SELF_PERMISSION).build()).queue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] labels() {
|
||||
return new String[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String usage() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String example() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -95,9 +95,7 @@ public class RoleCommand implements Command {
|
|||
} else {
|
||||
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.NO_SELF_PERMISSION).build()).queue();
|
||||
}
|
||||
} else {
|
||||
e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public class RulesCommand implements Command {
|
|||
try {
|
||||
TextChannel channel = e1.getGuild().getTextChannelsByName(e1.getMessage().getContentRaw(), true).get(0);
|
||||
createRules(e, e1, channel);
|
||||
} catch (NullPointerException ex) {
|
||||
} catch (NullPointerException | IndexOutOfBoundsException ex) {
|
||||
e.getTextChannel().sendMessage(
|
||||
e.getMessageEditor().getMessage(
|
||||
MessageEditor.MessageType.ERROR,
|
||||
|
|
|
|||
|
|
@ -39,12 +39,10 @@ public class StarboardCommand implements Command {
|
|||
if (channel!=null) {
|
||||
e.getRethinkServer().setStarboard(channel.getId());
|
||||
}
|
||||
} else {
|
||||
e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
|
||||
if (args.length==2) {
|
||||
if (args.length == 2) {
|
||||
e.getRethinkServer().setNeededStars(args[1]);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,68 +16,33 @@
|
|||
|
||||
package com.bbn.hadder.commands.music;
|
||||
|
||||
import com.bbn.hadder.audio.AudioPlayerSendHandler;
|
||||
import com.bbn.hadder.commands.Command;
|
||||
import com.bbn.hadder.commands.CommandEvent;
|
||||
import com.bbn.hadder.core.Perm;
|
||||
import com.bbn.hadder.core.Perms;
|
||||
import net.dv8tion.jda.api.audio.*;
|
||||
import com.bbn.hadder.utils.MessageEditor;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.managers.AudioManager;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.Queue;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
@Perms(Perm.BOT_OWNER)
|
||||
public class EchoCommand implements Command {
|
||||
|
||||
@Override
|
||||
public void executed(String[] args, CommandEvent event) {
|
||||
Guild guild = event.getMember().getVoiceState().getChannel().getGuild();
|
||||
public void executed(String[] args, CommandEvent e) {
|
||||
Guild guild = e.getMember().getVoiceState().getChannel().getGuild();
|
||||
AudioManager audioManager = guild.getAudioManager();
|
||||
EchoHandler handler = new EchoHandler();
|
||||
AudioPlayerSendHandler handler = new AudioPlayerSendHandler(e.getAudioManager().getPlayer(e.getGuild()));
|
||||
if (!audioManager.isConnected()) {
|
||||
audioManager.setSendingHandler(handler);
|
||||
audioManager.setReceivingHandler(handler);
|
||||
audioManager.openAudioConnection(event.getMember().getVoiceState().getChannel());
|
||||
audioManager.openAudioConnection(e.getMember().getVoiceState().getChannel());
|
||||
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
|
||||
"commands.music.echo.success.title",
|
||||
"commands.music.echo.success.description")
|
||||
.build()).queue();
|
||||
} else {
|
||||
audioManager.closeAudioConnection();
|
||||
}
|
||||
}
|
||||
|
||||
public static class EchoHandler implements AudioSendHandler, AudioReceiveHandler {
|
||||
|
||||
private final Queue<byte[]> queue = new ConcurrentLinkedQueue<>();
|
||||
|
||||
@Override
|
||||
public boolean canProvide() {
|
||||
return !queue.isEmpty();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ByteBuffer provide20MsAudio() {
|
||||
byte[] data = queue.poll();
|
||||
return data == null ? null : ByteBuffer.wrap(data); // Wrap this in a java.nio.ByteBuffer
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canReceiveCombined() {
|
||||
return queue.size() < 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleCombinedAudio(@Nonnull CombinedAudio combinedAudio) {
|
||||
if (combinedAudio.getUsers().isEmpty())
|
||||
return;
|
||||
|
||||
byte[] data = combinedAudio.getAudioData(1.0f); // volume at 100% = 1.0 (50% = 0.5 / 55% = 0.55)
|
||||
queue.add(data);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] labels() {
|
||||
return new String[]{"echo"};
|
||||
|
|
@ -85,7 +50,7 @@ public class EchoCommand implements Command {
|
|||
|
||||
@Override
|
||||
public String description() {
|
||||
return null;
|
||||
return "commands.music.echo.help.description";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -97,5 +62,4 @@ public class EchoCommand implements Command {
|
|||
public String example() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,17 @@
|
|||
/*
|
||||
* @author Hax / Hax6775 / Schlauer_Hax
|
||||
* Copyright 2019-2020 GregTCLTK and Schlauer-Hax
|
||||
*
|
||||
* Licensed under the GNU Affero General Public License, Version 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.gnu.org/licenses/agpl-3.0.en.html
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.bbn.hadder.commands.music;
|
||||
|
|
@ -83,7 +95,7 @@ public class RecordCommand implements Command {
|
|||
|
||||
@Override
|
||||
public String[] labels() {
|
||||
return new String[]{"echo"};
|
||||
return new String[]{"record"};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ public class SkipCommand implements Command {
|
|||
} else {
|
||||
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
|
||||
"commands.music.skip.error.connected.title",
|
||||
"commands.music.skip.error.connected.description ").build()).queue();
|
||||
"commands.music.skip.error.connected.description").build()).queue();
|
||||
}
|
||||
} else {
|
||||
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
package com.bbn.hadder.commands.owner;
|
||||
|
||||
import com.bbn.hadder.RethinkUser;
|
||||
import com.bbn.hadder.commands.Command;
|
||||
import com.bbn.hadder.commands.CommandEvent;
|
||||
import com.bbn.hadder.core.Perm;
|
||||
|
|
@ -38,7 +39,8 @@ public class BlacklistCommand implements Command {
|
|||
} else {
|
||||
switch (args[0].toLowerCase()) {
|
||||
case "add":
|
||||
if (args.length == 3) {
|
||||
if (args.length == 3 && e.getMessage().getMentionedUsers().size() == 1) {
|
||||
RethinkUser u = new RethinkUser(e.getRethink().getObjectByID("user", e.getMessage().getMentionedUsers().get(0).getId()), e.getRethink());
|
||||
String blacklisted = e.getRethinkUser().getBlacklisted();
|
||||
List<String> commands = new ArrayList<>();
|
||||
if (!"none".equals(blacklisted)) commands.addAll(Arrays.asList(blacklisted.split(",")));
|
||||
|
|
@ -47,18 +49,19 @@ public class BlacklistCommand implements Command {
|
|||
|
||||
ArrayList<String> commandsWithoutDuplicates = new ArrayList<>(hashSet);
|
||||
String newblacklisted = ((commandsWithoutDuplicates.size()!=0) ? String.join(",", commandsWithoutDuplicates) : "none");
|
||||
e.getRethinkUser().setBlacklisted(newblacklisted);
|
||||
u.setBlacklisted(newblacklisted);
|
||||
e.getTextChannel().sendMessage(
|
||||
e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
|
||||
"commands.owner.blacklist.success.add.title", "",
|
||||
"commands.owner.blacklist.success.add.description", newblacklisted)
|
||||
.build()).queue();
|
||||
e.getRethinkUser().push();
|
||||
}
|
||||
u.push();
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
break;
|
||||
|
||||
case "remove":
|
||||
if (args.length == 3) {
|
||||
if (args.length == 3 && e.getMessage().getMentionedUsers().size() == 1) {
|
||||
RethinkUser u = new RethinkUser(e.getRethink().getObjectByID("user", e.getMessage().getMentionedUsers().get(0).getId()), e.getRethink());
|
||||
String blacklisted = e.getRethinkUser().getBlacklisted();
|
||||
List<String> commands = new ArrayList<>();
|
||||
if (!"none".equals(blacklisted)) commands.addAll(Arrays.asList(blacklisted.split(",")));
|
||||
|
|
@ -67,21 +70,22 @@ public class BlacklistCommand implements Command {
|
|||
|
||||
ArrayList<String> commandsWithoutDuplicates = new ArrayList<>(hashSet);
|
||||
String newblacklisted = ((commandsWithoutDuplicates.size()!=0) ? String.join(",", commandsWithoutDuplicates) : "none");
|
||||
e.getRethinkUser().setBlacklisted(newblacklisted);
|
||||
u.setBlacklisted(newblacklisted);
|
||||
e.getTextChannel().sendMessage(
|
||||
e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
|
||||
"commands.owner.blacklist.success.remove.title", "",
|
||||
"commands.owner.blacklist.success.remove.description", newblacklisted)
|
||||
.build()).queue();
|
||||
e.getRethinkUser().push();
|
||||
}
|
||||
u.push();
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
break;
|
||||
|
||||
case "list":
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for (User user : e.getJDA().getUsers()) {
|
||||
if (!user.getId().equals(e.getJDA().getSelfUser().getId())) {
|
||||
String blacklisted = e.getRethinkUser().getBlacklisted();
|
||||
RethinkUser u = new RethinkUser(e.getRethink().getObjectByID("user", user.getId()), e.getRethink());
|
||||
String blacklisted = u.getBlacklisted();
|
||||
if (!"none".equals(blacklisted)) {
|
||||
stringBuilder.append(user.getAsTag()).append(" (").append(user.getId()).append(") - ").append(blacklisted).append("\n");
|
||||
}
|
||||
|
|
@ -89,7 +93,7 @@ public class BlacklistCommand implements Command {
|
|||
}
|
||||
e.getTextChannel().sendMessage(
|
||||
e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO)
|
||||
.setTitle("Blacklisted Users:")
|
||||
.setTitle("Blacklisted Users")
|
||||
.setDescription((stringBuilder.length()!=0) ? ("``" + stringBuilder.toString() + "``") : "No blacklisted Users")
|
||||
.build()).queue();
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ public class EvalCommand implements Command {
|
|||
} catch (ScriptException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
engine.put("msg".toLowerCase(), e.getMessage());
|
||||
engine.put("shardmanager".toLowerCase(), Hadder.shardManager);
|
||||
engine.put("rethink".toLowerCase(), e.getRethink());
|
||||
|
|
@ -97,9 +96,7 @@ public class EvalCommand implements Command {
|
|||
|
||||
}, 0, TimeUnit.MILLISECONDS);
|
||||
|
||||
} else {
|
||||
e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -41,9 +41,7 @@ public class GuildLeaveCommand implements Command {
|
|||
} catch (Exception ex) {
|
||||
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR, "commands.owner.guildleave.error.title", "", "commands.owner.guildleave.help.description", guild.getName()).build()).queue();
|
||||
}
|
||||
} else {
|
||||
e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -54,9 +54,7 @@ public class LanguageCommand implements Command {
|
|||
.build()).queue();
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
|
||||
public void setLanguage(String language_code, String language, CommandEvent e) {
|
||||
|
|
|
|||
|
|
@ -32,9 +32,7 @@ public class UserPrefixCommand implements Command {
|
|||
.build())
|
||||
.queue();
|
||||
e.getRethinkUser().push();
|
||||
} else {
|
||||
e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
} else e.getHelpCommand().sendHelp(this, e);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -76,8 +76,8 @@ public class CommandHandler {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (run)
|
||||
cmd.executed(args, commandEvent);
|
||||
if (run) cmd.executed(args, commandEvent);
|
||||
else event.getMessage().addReaction("❌").queue();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,17 +70,22 @@ public class Config {
|
|||
.key("Tokens").object()
|
||||
.key("BotToken").value(null)
|
||||
.key("Giphy").value(null)
|
||||
.key("GitHub").value(null)
|
||||
.key("MythicalBotList").value(null)
|
||||
.key("BotsForDiscord").value(null)
|
||||
.key("DiscordBotList").value(null)
|
||||
.key("DiscordBestBots").value(null)
|
||||
.key("DiscordBoats").value(null)
|
||||
.key("YetAnotherBotList").value(null)
|
||||
.value("DiscordExtremeList").value(null)
|
||||
.value("DiscordBotReviews").value(null)
|
||||
.value("DiscordBots").value(null)
|
||||
.value("BotListSpace").value(null)
|
||||
.endObject().endObject().toString();
|
||||
.key("DiscordExtremeList").value(null)
|
||||
.key("DiscordBotReviews").value(null)
|
||||
.key("DiscordBots").value(null)
|
||||
.key("BotListSpace").value(null)
|
||||
.key("DiscordBots2").value(null)
|
||||
.key("CloudList").value(null)
|
||||
.key("Arcane").value(null)
|
||||
.endObject()
|
||||
.key("Clyde").value("Clyde")
|
||||
.endObject().toString();
|
||||
}
|
||||
|
||||
public String getBotToken() {
|
||||
|
|
@ -143,10 +148,6 @@ public class Config {
|
|||
return config.getJSONObject("Tokens").getString("DiscordExtremeList");
|
||||
}
|
||||
|
||||
public String getDiscordBotReviewsToken() {
|
||||
return config.getJSONObject("Tokens").getString("DiscordBotReviews");
|
||||
}
|
||||
|
||||
public String getDiscordBotsToken() {
|
||||
return config.getJSONObject("Tokens").getString("DiscordBots");
|
||||
}
|
||||
|
|
@ -163,6 +164,10 @@ public class Config {
|
|||
return config.getJSONObject("Tokens").getString("CloudList");
|
||||
}
|
||||
|
||||
public String getArcaneToken() {
|
||||
return config.getJSONObject("Tokens").getString("Arcane");
|
||||
}
|
||||
|
||||
public String getClydeName() {
|
||||
return config.getString("Clyde");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,12 +33,6 @@ public enum Perm {
|
|||
return e.getMember().hasPermission(Permission.MESSAGE_MANAGE) || e.getConfig().getOwners().contains(e.getAuthor().getIdLong());
|
||||
}
|
||||
},
|
||||
EMBED_MESSAGES {
|
||||
@Override
|
||||
public boolean check(CommandEvent e) {
|
||||
return e.getMember().hasPermission(Permission.MESSAGE_EMBED_LINKS) || e.getConfig().getOwners().contains(e.getAuthor().getIdLong());
|
||||
}
|
||||
},
|
||||
BAN_MEMBERS {
|
||||
@Override
|
||||
public boolean check(CommandEvent e) {
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import net.dv8tion.jda.api.EmbedBuilder;
|
|||
import net.dv8tion.jda.api.Permission;
|
||||
import net.dv8tion.jda.api.entities.ChannelType;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.exceptions.ErrorResponseException;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
|
||||
import java.awt.*;
|
||||
|
|
@ -64,13 +65,17 @@ public class CommandListener extends ListenerAdapter {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
e.getAuthor().openPrivateChannel().complete().sendMessage(new EmbedBuilder()
|
||||
.setTitle("No permission")
|
||||
.setDescription("I need the `MESSAGE EMBED LINKS` permission in order to work!")
|
||||
.setColor(Color.RED)
|
||||
.setFooter("Hadder", "https://bigbotnetwork.com/images/Hadder.png")
|
||||
.setTimestamp(Instant.now())
|
||||
.build()).queue();
|
||||
try {
|
||||
e.getAuthor().openPrivateChannel().complete().sendMessage(new EmbedBuilder()
|
||||
.setTitle("No permission")
|
||||
.setDescription("I need the `MESSAGE EMBED LINKS` permission in order to work!")
|
||||
.setColor(Color.RED)
|
||||
.setFooter("Hadder", "https://bigbotnetwork.com/images/Hadder.png")
|
||||
.setTimestamp(Instant.now())
|
||||
.build()).queue();
|
||||
} catch (ErrorResponseException ex) {
|
||||
e.getTextChannel().sendMessage("I need the `MESSAGE EMBED LINKS` permission in order to work!").queue();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
e.getAuthor().openPrivateChannel().complete().sendMessage(new EmbedBuilder()
|
||||
|
|
|
|||
|
|
@ -41,11 +41,11 @@ public class InviteLinkListener extends ListenerAdapter {
|
|||
|
||||
@Override
|
||||
public void onMessageReceived(@Nonnull MessageReceivedEvent e) {
|
||||
RethinkServer rethinkServer = new RethinkServer(rethink.getObjectByID("server", e.getGuild().getId()), rethink);
|
||||
if (e.isFromType(ChannelType.TEXT)) {
|
||||
if (e.getMessage().getContentRaw().contains("discord.gg/") && (!e.getMember().hasPermission(Permission.ADMINISTRATOR) && rethinkServer.isInviteDetect())) {
|
||||
RethinkServer rethinkServer = new RethinkServer(rethink.getObjectByID("server", e.getGuild().getId()), rethink);
|
||||
if (e.getMessage().getContentRaw().contains("discord.gg/") && (!e.getMember().hasPermission(Permission.ADMINISTRATOR) && rethinkServer.hasInviteDetect())) {
|
||||
checkInvite(e.getMessage(), "discord.gg/");
|
||||
} else if (e.getMessage().getContentRaw().contains("discordapp.com/invite") && (!e.getMember().hasPermission(Permission.ADMINISTRATOR) && rethinkServer.isInviteDetect())) {
|
||||
} else if (e.getMessage().getContentRaw().contains("discordapp.com/invite") && !e.getMember().hasPermission(Permission.ADMINISTRATOR) && rethinkServer.hasInviteDetect()) {
|
||||
checkInvite(e.getMessage(), "discordapp.com/invite/");
|
||||
}
|
||||
}
|
||||
|
|
@ -69,11 +69,11 @@ public class InviteLinkListener extends ListenerAdapter {
|
|||
|
||||
@Override
|
||||
public void onMessageUpdate(@Nonnull MessageUpdateEvent e) {
|
||||
RethinkServer rethinkServer = new RethinkServer(rethink.getObjectByID("server", e.getGuild().getId()), rethink);
|
||||
if (e.isFromType(ChannelType.TEXT)) {
|
||||
if (e.getMessage().getContentRaw().contains("discord.gg/") && !e.getMember().hasPermission(Permission.ADMINISTRATOR) && rethinkServer.isInviteDetect()) {
|
||||
RethinkServer rethinkServer = new RethinkServer(rethink.getObjectByID("server", e.getGuild().getId()), rethink);
|
||||
if (e.getMessage().getContentRaw().contains("discord.gg/") && !e.getMember().hasPermission(Permission.ADMINISTRATOR) && rethinkServer.hasInviteDetect()) {
|
||||
checkInvite(e.getMessage(), "discord.gg/");
|
||||
} else if (e.getMessage().getContentRaw().contains("discordapp.com/invite") && !e.getMember().hasPermission(Permission.ADMINISTRATOR) && rethinkServer.isInviteDetect()) {
|
||||
} else if (e.getMessage().getContentRaw().contains("discordapp.com/invite") && !e.getMember().hasPermission(Permission.ADMINISTRATOR) && rethinkServer.hasInviteDetect()) {
|
||||
checkInvite(e.getMessage(), "discordapp.com/invite/");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ public class MentionListener extends ListenerAdapter {
|
|||
MavenXpp3Reader reader = new MavenXpp3Reader();
|
||||
Model model = null;
|
||||
try {
|
||||
model = reader.read(this.getClass().getClassLoader().getResourceAsStream("pom.xml"));
|
||||
model = reader.read(getClass().getResourceAsStream("pom.xml"));
|
||||
} catch (IOException | XmlPullParserException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ public class StarboardListener extends ListenerAdapter {
|
|||
if (e.getReaction().getReactionEmote().getName().equals("⭐")) {
|
||||
RethinkServer rethinkServer = new RethinkServer(rethink.getObjectByID("server", e.getGuild().getId()), rethink);
|
||||
if (!rethink.hasStarboardMessage(e.getMessageId())) {
|
||||
if (rethink.hasStarboardChannel(e.getGuild().getId())) {
|
||||
if (rethinkServer.hasStarboardChannel()) {
|
||||
e.getTextChannel().retrieveMessageById(e.getMessageId()).queue(
|
||||
msg -> {
|
||||
int stars = 0;
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ public class VoiceLeaveListener extends ListenerAdapter {
|
|||
|
||||
@Override
|
||||
public void onGuildVoiceLeave(GuildVoiceLeaveEvent e) {
|
||||
if (audioManager.hasPlayer(e.getGuild()) && e.getChannelLeft().getMembers().equals(e.getGuild().getSelfMember())) {
|
||||
if (!e.getMember().getUser().isBot() && audioManager.hasPlayer(e.getGuild()) && e.getChannelLeft().getMembers().size() == 1 && e.getChannelLeft().getMembers().get(0).equals(e.getGuild().getSelfMember())) {
|
||||
audioManager.players.remove(e.getGuild().getId());
|
||||
audioManager.getPlayer(e.getGuild()).destroy();
|
||||
audioManager.getTrackManager(e.getGuild()).purgeQueue();
|
||||
|
|
|
|||
|
|
@ -36,11 +36,11 @@ public class BotList {
|
|||
private static String DiscordBoats = "https://discord.boats/api/bot/637002314162372639";
|
||||
private static String YetAnotherBotList = "https://yabl.xyz/api/bot/637002314162372639/stats";
|
||||
private static String DiscordExtremeList = "https://api.discordextremelist.xyz/v1/bot/637002314162372639";
|
||||
private static String DiscordBotReviews = "https://discordbotreviews.xyz/api/bot/637002314162372639/stats";
|
||||
private static String DiscordBots = "https://top.gg/api/bots/637002314162372639/stats";
|
||||
private static String BotListSpace = "https://api.botlist.space/v1/bots/637002314162372639";
|
||||
private static String DiscordBots2 = "https://discord.bots.gg/api/v1/bots/637002314162372639/stats";
|
||||
private static String CloudList = "https://www.cloudlist.xyz/api/stats/637002314162372639";
|
||||
private static String ArcaneBotCenter = "https://arcane-botcenter.xyz/api/637002314162372639/stats";
|
||||
|
||||
private Config config;
|
||||
|
||||
|
|
@ -58,6 +58,7 @@ public class BotList {
|
|||
json.put("users", Hadder.shardManager.getUsers().size());
|
||||
json.put("shard_count", Hadder.shardManager.getShards().size());
|
||||
json.put("shardCount", Hadder.shardManager.getShards().size());
|
||||
json.put("member_count", Hadder.shardManager.getUsers().size());
|
||||
|
||||
RequestBody body = RequestBody.create(MediaType.parse("application/json"), json.toString());
|
||||
|
||||
|
|
@ -151,21 +152,6 @@ public class BotList {
|
|||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// Discord Bot Reviews
|
||||
|
||||
Request discordbotreviews = new Request.Builder()
|
||||
.url(DiscordBotReviews)
|
||||
.post(body)
|
||||
.addHeader("Authorization", config.getDiscordBotReviewsToken())
|
||||
.build();
|
||||
|
||||
try {
|
||||
new OkHttpClient().newCall(discordbotreviews).execute().close();
|
||||
System.out.println("Successfully posted count to Discord Bot Reviews!");
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// Discord Bots
|
||||
|
||||
Request discordbots = new Request.Builder()
|
||||
|
|
@ -225,6 +211,21 @@ public class BotList {
|
|||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// Arcane Bot Center
|
||||
|
||||
Request arcane = new Request.Builder()
|
||||
.url(ArcaneBotCenter)
|
||||
.post(body)
|
||||
.addHeader("Authorization", config.getArcaneToken())
|
||||
.build();
|
||||
|
||||
try {
|
||||
new OkHttpClient().newCall(arcane).execute().close();
|
||||
System.out.println("Successfully posted count to the Arcane Bot Center!");
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -133,6 +133,6 @@ public class MessageEditor {
|
|||
ResourceBundle resourceBundle = ResourceBundle.getBundle("Translations/Translations", locale);
|
||||
if (resourceBundle.containsKey(string))
|
||||
return resourceBundle.getString(string).replaceAll("%extra%", extra).replaceAll("%extra_two%", extra_two);
|
||||
else return "This key doesn't exist. Please report this to the Bot Developers. Key: " + string + " Language_code: " + language_code;
|
||||
else return "This key doesn't exist. Please report this to the Bot Developers. Key: `" + string + "` Language_code: `" + language_code + "`";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,12 +87,17 @@ commands.misc.screenshare.number.error.description = Dies ist keine Zahl.
|
|||
commands.misc.screenshare.channel.existing.error = Warte ma'
|
||||
commands.misc.screenshare.channel.existing.description = Es existiert kein Sprachkanal mit diesem Namen. \n\nHinweis\: Stelle sicher, dass der Sprachkanal auf diesem Server ist.
|
||||
commands.misc.screenshare.help.description = Zeigt dir den Link zum Teilen deines Bildschirms.
|
||||
commands.misc.serverstats.title = Serverstats
|
||||
commands.misc.serverstats.title = Serverstatistiken
|
||||
commands.misc.serverstats.description = This message contains some information about `%extra%`
|
||||
commands.misc.serverstats.help.description = Shows information about a server.
|
||||
commands.misc.profile.error.title = Not found
|
||||
commands.misc.profile.error.description = I can't find the specified user.
|
||||
commands.misc.profile.error.title = Nicht gefunden
|
||||
commands.misc.profile.error.description = Ich kann den angegebenen Benutzer nicht finden.
|
||||
commands.misc.profile.help.description = Shows some information about the specified user.
|
||||
commands.misc.code.success.title = Informationen zum Einladungscode
|
||||
commands.misc.code.success.description = Diese Nachricht enthält einige Informationen über den angegebenen Einladungscode.
|
||||
commands.misc.code.error.title = Code nicht gefunden
|
||||
commands.misc.code.error.description = Ich kann den angegebenen Einladungscode nicht finden.
|
||||
commands.misc.code.help.description = Shows information about a invite code.
|
||||
|
||||
commands.moderation.ban.success.title = Erfolgreich gebannt
|
||||
commands.moderation.ban.success.description = Ich habe %extra% erfolgreich gebannt
|
||||
|
|
@ -112,17 +117,17 @@ 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 = Erfolgreich festgelegt
|
||||
commands.moderation.prefix.success.description = Ich habe den neuen Prefix für die Guild erfolgreich zu `%extra% ` geändert.
|
||||
commands.moderation.prefix.success.description = I successfully set the new prefix for the server to `%extra%`.
|
||||
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 = Ich habe erfolgreich die Erkennung für Einladungslinks auf diesem Server aktiviert.
|
||||
commands.moderation.invitedetect.activate.success.description = I successfully activated the invite link detection for this server.
|
||||
commands.moderation.invitedetect.activate.error.title = Bereits aktiviert
|
||||
commands.moderation.invitedetect.activate.error.description = Die Erkennung für Einladungslinks ist bereits auf diesem Server aktiviert.
|
||||
commands.moderation.invitedetect.activate.error.description = The invite link detection is already activated on this server.
|
||||
commands.moderation.invitedetect.deactivate.success.title = Erfolgreich deaktiviert
|
||||
commands.moderation.invitedetect.deactivate.success.description = Ich habe erfolgreich die Erkennung für Einladungslinks auf diesem Server deaktiviert.
|
||||
commands.moderation.invitedetect.deactivate.success.description = I successfully deactivated the invite link detection for this server.
|
||||
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.deactivate.error.description = The invite link detection is already deactivated on this server.
|
||||
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.
|
||||
|
|
@ -152,15 +157,15 @@ commands.moderation.rules.channel.error.title = Kanal konnte nicht gefunden werd
|
|||
commands.moderation.rules.channel.error.description = Ich kann den angegebenen Kanal nicht finden. Bitte starte das Setup erneut.
|
||||
commands.moderation.rules.rules.title = Regelnachricht
|
||||
commands.moderation.rules.rules.description = Der Kanal wurde erfolgreich auf %extra% gesetzt. Bitte senden Sie mir jetzt die Regeln.
|
||||
commands.moderation.rules.role.title = Rolle zum Erhalten/Verlieren
|
||||
commands.moderation.rules.role.title = Rolle zum Hinzufügen
|
||||
commands.moderation.rules.role.description = Die Regeln wurden erfolgreich festgelegt. Bitte sende mir den Namen der Rolle, die der Benutzer erhalten soll nachdem er die Regeln akzeptiert hat.
|
||||
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.error.description = The specified role does not exist on this server.
|
||||
commands.moderation.rules.role.permission.error.title = Keine Berechtigung
|
||||
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 = Der erwähnte Kanal muss auf diesem Server sein\!
|
||||
commands.moderation.rules.emote.accept.title = Custom Accept Emote
|
||||
commands.moderation.rules.guild.error.description = The mentioned channel must be on this server\!
|
||||
commands.moderation.rules.emote.accept.title = Benutzerdefiniertes Zustimmungsemote
|
||||
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.
|
||||
commands.moderation.rules.emote.decline.title = Custom Decline Emote
|
||||
commands.moderation.rules.emote.decline.description = The first emote has been successfully set to %extra%. Please send me now the decline emote.
|
||||
|
|
@ -191,7 +196,7 @@ commands.moderation.editrules.message.description = Please send me the new rules
|
|||
commands.moderation.editrules.error.title = Keine Regeln
|
||||
commands.moderation.editrules.error.description = There is nor rules message in this server. Please setup the rules first with %extra%rules
|
||||
commands.moderation.editrules.success.title = Erfolgreich geändert
|
||||
commands.moderation.editrules.success.description = I successfully changed the rules
|
||||
commands.moderation.editrules.success.description = Ich habe erfolgreich die Regeln geändert
|
||||
commands.moderation.editrules.help.description = Bearbeitet die Regelnachricht.
|
||||
|
||||
commands.music.bass.error.connected.title = Kein Kanal
|
||||
|
|
@ -218,6 +223,7 @@ commands.music.leave.help.description = Verlässt einen Sprachkanal.
|
|||
commands.music.play.load.title = %extra% Now loading %extra%
|
||||
commands.music.play.load.description = Versuche das Lied zu laden...
|
||||
commands.music.play.success.loading.title = %extra% Jetzt läuft %extra%
|
||||
commands.music.play.success.queueing.title = %extra% Added to queue %extra%
|
||||
commands.music.play.success.title = Titel
|
||||
commands.music.play.success.author = Autor
|
||||
commands.music.play.success.length = Länge
|
||||
|
|
@ -227,7 +233,7 @@ commands.music.play.error.load.description = Leider kann ich das angegebene Lied
|
|||
commands.music.play.error.match.title = %extra% Keine Treffer %extra%
|
||||
commands.music.play.error.match.description = Ich kann keinen Song mit diesem Namen auf YouTube finden
|
||||
commands.music.play.success.unpause.title = Erfolgreich fortgesetzt
|
||||
commands.music.play.success.unpause.description = I successfully continued playing the song.
|
||||
commands.music.play.success.unpause.description = Ich habe erfolgreich den Song fortgesetzt.
|
||||
commands.music.play.error.connected.title = Kein Kanal
|
||||
commands.music.play.error.connected.description = Du musst im selben Sprachkanal wie der Bot sein, um den Song fortzusetzen.
|
||||
commands.music.play.help.description = Spielt den angegebenen Song ab.
|
||||
|
|
@ -271,6 +277,9 @@ commands.music.loop.success.unloop.description = Ich werde den gerade gespielten
|
|||
commands.music.loop.error.connected.title = Kein Kanal
|
||||
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 = Wiederholt ein Lied/Warteschlange.
|
||||
commands.music.echo.success.title = Erfolgreich aktiviert
|
||||
commands.music.echo.success.description = I will now repeat everything I can hear in your voice channel
|
||||
commands.music.echo.help.description = Sends your voice through Hadder.
|
||||
|
||||
commands.nsfw.gif.error.title = GIF wird nicht angezeigt? Klicke hier
|
||||
commands.nsfw.img.error.title = Bild wird nicht angezeigt? Klicke hier
|
||||
|
|
@ -298,8 +307,8 @@ commands.owner.eval.help.description = Führt den angegebenen Code aus
|
|||
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.guildleave.error.description = I can not leave from this server. Maybe this isn't a ID?
|
||||
commands.owner.guildleave.help.description = Quit from a server
|
||||
commands.owner.reboot.help.description = Startet den Bot neu.
|
||||
commands.owner.shutdown.success.title = Fährt herrunter
|
||||
commands.owner.shutdown.help.description = Schalte den Bot ab.
|
||||
|
|
@ -312,8 +321,8 @@ commands.owner.blacklist.success.remove.description = I successfully removed the
|
|||
commands.owner.blacklist.help.description = Blacklist a user for specific commands
|
||||
|
||||
commands.settings.language.success.title = Sprache festgelegt
|
||||
commands.settings.language.success.description = `%extra%` is your new language now.
|
||||
commands.settings.language.success.description = `%extra%` ist jetzt deine neue Sprache.
|
||||
commands.settings.language.help.description = Führt den angegebenen Code aus.
|
||||
commands.settings.prefix.success.title = Erfolgreich festgelegt
|
||||
commands.settings.prefix.success.title = Successfully set prefix
|
||||
commands.settings.prefix.success.description = Ich habe erfolgreich den neuen Prefix für dich auf `%extra% `gesetzt.
|
||||
commands.settings.prefix.help.description = Legt einen neuen Prefix fest.
|
||||
|
|
|
|||
|
|
@ -93,6 +93,11 @@ commands.misc.serverstats.help.description = Shows information about a server.
|
|||
commands.misc.profile.error.title = Not found
|
||||
commands.misc.profile.error.description = I can't find the specified user.
|
||||
commands.misc.profile.help.description = Shows some information about the specified user.
|
||||
commands.misc.code.success.title = Invite code information
|
||||
commands.misc.code.success.description = This message contains some information about the specified invite code.
|
||||
commands.misc.code.error.title = Code not found
|
||||
commands.misc.code.error.description = I can't find the specified invite code.
|
||||
commands.misc.code.help.description = Shows information about a invite code.
|
||||
|
||||
commands.moderation.ban.success.title = Successfully banned
|
||||
commands.moderation.ban.success.description = I successfully baned %extra%
|
||||
|
|
@ -112,17 +117,17 @@ 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.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.success.description = I successfully set the new prefix for the server 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.description = I successfully activated the invite link detection for this guild.
|
||||
commands.moderation.invitedetect.activate.success.description = I successfully activated the invite link detection for this server.
|
||||
commands.moderation.invitedetect.activate.error.title = Already activated
|
||||
commands.moderation.invitedetect.activate.error.description = The invite link detection is already activated on this guild.
|
||||
commands.moderation.invitedetect.activate.error.description = The invite link detection is already activated on this server.
|
||||
commands.moderation.invitedetect.deactivate.success.title = Successfully deactivated
|
||||
commands.moderation.invitedetect.deactivate.success.description = I successfully deactivated the invite link detection for this guild.
|
||||
commands.moderation.invitedetect.deactivate.success.description = I successfully deactivated the invite link detection for this server.
|
||||
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.deactivate.error.description = The invite link detection is already deactivated on this server.
|
||||
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%.
|
||||
|
|
@ -155,11 +160,11 @@ commands.moderation.rules.rules.description = The channel was successfully set t
|
|||
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.error.description = The specified role does not exist on this server.
|
||||
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.guild.error.description = The mentioned channel must be on this server\!
|
||||
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.
|
||||
commands.moderation.rules.emote.decline.title = Custom Decline Emote
|
||||
|
|
@ -218,6 +223,7 @@ 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.queueing.title = %extra% Added to queue %extra%
|
||||
commands.music.play.success.title = Title
|
||||
commands.music.play.success.author = Author
|
||||
commands.music.play.success.length = Length
|
||||
|
|
@ -271,6 +277,9 @@ commands.music.loop.success.unloop.description = I will no longer repeat the cur
|
|||
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.music.echo.success.title = Successfully activated
|
||||
commands.music.echo.success.description = I will now repeat everything I can hear in your voice channel
|
||||
commands.music.echo.help.description = Sends your voice through Hadder.
|
||||
|
||||
commands.nsfw.gif.error.title = GIF not showing? Click here
|
||||
commands.nsfw.img.error.title = Image not showing? Click here
|
||||
|
|
@ -298,8 +307,8 @@ commands.owner.eval.help.description = Execute the given code
|
|||
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.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.guildleave.error.description = I can not leave from this server. Maybe this isn't a ID?
|
||||
commands.owner.guildleave.help.description = Quit from a server
|
||||
commands.owner.reboot.help.description = Restart the bot
|
||||
commands.owner.shutdown.success.title = Shutdown
|
||||
commands.owner.shutdown.help.description = Shuts the Bot down
|
||||
|
|
@ -314,6 +323,6 @@ commands.owner.blacklist.help.description = Blacklist a user for specific comman
|
|||
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.prefix.success.title = %extra% Successfully set %extra%
|
||||
commands.settings.prefix.success.title = Successfully set prefix
|
||||
commands.settings.prefix.success.description = I successfully set the new prefix for you to `%extra%`.
|
||||
commands.settings.prefix.help.description = Sets a new prefix.
|
||||
|
|
|
|||
|
|
@ -93,6 +93,11 @@ commands.misc.serverstats.help.description = Shows information about a server.
|
|||
commands.misc.profile.error.title = Not found
|
||||
commands.misc.profile.error.description = I can't find the specified user.
|
||||
commands.misc.profile.help.description = Shows some information about the specified user.
|
||||
commands.misc.code.success.title = Invite code information
|
||||
commands.misc.code.success.description = This message contains some information about the specified invite code.
|
||||
commands.misc.code.error.title = Code not found
|
||||
commands.misc.code.error.description = I can't find the specified invite code.
|
||||
commands.misc.code.help.description = Shows information about a invite code.
|
||||
|
||||
commands.moderation.ban.success.title = Successfully banned
|
||||
commands.moderation.ban.success.description = I successfully baned %extra%
|
||||
|
|
@ -112,17 +117,17 @@ 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.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.success.description = I successfully set the new prefix for the server 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.description = I successfully activated the invite link detection for this guild.
|
||||
commands.moderation.invitedetect.activate.success.description = I successfully activated the invite link detection for this server.
|
||||
commands.moderation.invitedetect.activate.error.title = Already activated
|
||||
commands.moderation.invitedetect.activate.error.description = The invite link detection is already activated on this guild.
|
||||
commands.moderation.invitedetect.activate.error.description = The invite link detection is already activated on this server.
|
||||
commands.moderation.invitedetect.deactivate.success.title = Successfully deactivated
|
||||
commands.moderation.invitedetect.deactivate.success.description = I successfully deactivated the invite link detection for this guild.
|
||||
commands.moderation.invitedetect.deactivate.success.description = I successfully deactivated the invite link detection for this server.
|
||||
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.deactivate.error.description = The invite link detection is already deactivated on this server.
|
||||
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%.
|
||||
|
|
@ -155,11 +160,11 @@ commands.moderation.rules.rules.description = The channel was successfully set t
|
|||
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.error.description = The specified role does not exist on this server.
|
||||
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.guild.error.description = The mentioned channel must be on this server\!
|
||||
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.
|
||||
commands.moderation.rules.emote.decline.title = Custom Decline Emote
|
||||
|
|
@ -218,6 +223,7 @@ 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.queueing.title = %extra% Added to queue %extra%
|
||||
commands.music.play.success.title = Title
|
||||
commands.music.play.success.author = Author
|
||||
commands.music.play.success.length = Length
|
||||
|
|
@ -271,6 +277,9 @@ commands.music.loop.success.unloop.description = I will no longer repeat the cur
|
|||
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.music.echo.success.title = Successfully activated
|
||||
commands.music.echo.success.description = I will now repeat everything I can hear in your voice channel
|
||||
commands.music.echo.help.description = Sends your voice through Hadder.
|
||||
|
||||
commands.nsfw.gif.error.title = GIF not showing? Click here
|
||||
commands.nsfw.img.error.title = Image not showing? Click here
|
||||
|
|
@ -298,8 +307,8 @@ commands.owner.eval.help.description = Execute the given code
|
|||
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.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.guildleave.error.description = I can not leave from this server. Maybe this isn't a ID?
|
||||
commands.owner.guildleave.help.description = Quit from a server
|
||||
commands.owner.reboot.help.description = Restart the bot
|
||||
commands.owner.shutdown.success.title = Shutdown
|
||||
commands.owner.shutdown.help.description = Shuts the Bot down
|
||||
|
|
@ -314,6 +323,6 @@ commands.owner.blacklist.help.description = Blacklist a user for specific comman
|
|||
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.prefix.success.title = %extra% Successfully set %extra%
|
||||
commands.settings.prefix.success.title = Successfully set prefix
|
||||
commands.settings.prefix.success.description = I successfully set the new prefix for you to `%extra%`.
|
||||
commands.settings.prefix.help.description = Sets a new prefix.
|
||||
|
|
|
|||
|
|
@ -93,6 +93,11 @@ commands.misc.serverstats.help.description = Shows information about a server.
|
|||
commands.misc.profile.error.title = Not found
|
||||
commands.misc.profile.error.description = I can't find the specified user.
|
||||
commands.misc.profile.help.description = Shows some information about the specified user.
|
||||
commands.misc.code.success.title = Invite code information
|
||||
commands.misc.code.success.description = This message contains some information about the specified invite code.
|
||||
commands.misc.code.error.title = Code not found
|
||||
commands.misc.code.error.description = I can't find the specified invite code.
|
||||
commands.misc.code.help.description = Shows information about a invite code.
|
||||
|
||||
commands.moderation.ban.success.title = Successfully banned
|
||||
commands.moderation.ban.success.description = I successfully baned %extra%
|
||||
|
|
@ -112,17 +117,17 @@ 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.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.success.description = I successfully set the new prefix for the server 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.description = I successfully activated the invite link detection for this guild.
|
||||
commands.moderation.invitedetect.activate.success.description = I successfully activated the invite link detection for this server.
|
||||
commands.moderation.invitedetect.activate.error.title = Already activated
|
||||
commands.moderation.invitedetect.activate.error.description = The invite link detection is already activated on this guild.
|
||||
commands.moderation.invitedetect.activate.error.description = The invite link detection is already activated on this server.
|
||||
commands.moderation.invitedetect.deactivate.success.title = Successfully deactivated
|
||||
commands.moderation.invitedetect.deactivate.success.description = I successfully deactivated the invite link detection for this guild.
|
||||
commands.moderation.invitedetect.deactivate.success.description = I successfully deactivated the invite link detection for this server.
|
||||
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.deactivate.error.description = The invite link detection is already deactivated on this server.
|
||||
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%.
|
||||
|
|
@ -155,11 +160,11 @@ commands.moderation.rules.rules.description = The channel was successfully set t
|
|||
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.error.description = The specified role does not exist on this server.
|
||||
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.guild.error.description = The mentioned channel must be on this server\!
|
||||
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.
|
||||
commands.moderation.rules.emote.decline.title = Custom Decline Emote
|
||||
|
|
@ -218,6 +223,7 @@ 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.queueing.title = %extra% Added to queue %extra%
|
||||
commands.music.play.success.title = Title
|
||||
commands.music.play.success.author = Author
|
||||
commands.music.play.success.length = Length
|
||||
|
|
@ -271,6 +277,9 @@ commands.music.loop.success.unloop.description = I will no longer repeat the cur
|
|||
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.music.echo.success.title = Successfully activated
|
||||
commands.music.echo.success.description = I will now repeat everything I can hear in your voice channel
|
||||
commands.music.echo.help.description = Sends your voice through Hadder.
|
||||
|
||||
commands.nsfw.gif.error.title = GIF not showing? Click here
|
||||
commands.nsfw.img.error.title = Image not showing? Click here
|
||||
|
|
@ -298,8 +307,8 @@ commands.owner.eval.help.description = Execute the given code
|
|||
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.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.guildleave.error.description = I can not leave from this server. Maybe this isn't a ID?
|
||||
commands.owner.guildleave.help.description = Quit from a server
|
||||
commands.owner.reboot.help.description = Restart the bot
|
||||
commands.owner.shutdown.success.title = Shutdown
|
||||
commands.owner.shutdown.help.description = Shuts the Bot down
|
||||
|
|
@ -314,6 +323,6 @@ commands.owner.blacklist.help.description = Blacklist a user for specific comman
|
|||
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.prefix.success.title = %extra% Successfully set %extra%
|
||||
commands.settings.prefix.success.title = Successfully set prefix
|
||||
commands.settings.prefix.success.description = I successfully set the new prefix for you to `%extra%`.
|
||||
commands.settings.prefix.help.description = Sets a new prefix.
|
||||
|
|
|
|||
|
|
@ -93,6 +93,11 @@ commands.misc.serverstats.help.description = Shows information about a server.
|
|||
commands.misc.profile.error.title = Not found
|
||||
commands.misc.profile.error.description = I can't find the specified user.
|
||||
commands.misc.profile.help.description = Shows some information about the specified user.
|
||||
commands.misc.code.success.title = Invite code information
|
||||
commands.misc.code.success.description = This message contains some information about the specified invite code.
|
||||
commands.misc.code.error.title = Code not found
|
||||
commands.misc.code.error.description = I can't find the specified invite code.
|
||||
commands.misc.code.help.description = Shows information about a invite code.
|
||||
|
||||
commands.moderation.ban.success.title = Successfully banned
|
||||
commands.moderation.ban.success.description = I successfully baned %extra%
|
||||
|
|
@ -112,17 +117,17 @@ 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.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.success.description = I successfully set the new prefix for the server 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.description = I successfully activated the invite link detection for this guild.
|
||||
commands.moderation.invitedetect.activate.success.description = I successfully activated the invite link detection for this server.
|
||||
commands.moderation.invitedetect.activate.error.title = Already activated
|
||||
commands.moderation.invitedetect.activate.error.description = The invite link detection is already activated on this guild.
|
||||
commands.moderation.invitedetect.activate.error.description = The invite link detection is already activated on this server.
|
||||
commands.moderation.invitedetect.deactivate.success.title = Successfully deactivated
|
||||
commands.moderation.invitedetect.deactivate.success.description = I successfully deactivated the invite link detection for this guild.
|
||||
commands.moderation.invitedetect.deactivate.success.description = I successfully deactivated the invite link detection for this server.
|
||||
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.deactivate.error.description = The invite link detection is already deactivated on this server.
|
||||
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%.
|
||||
|
|
@ -155,11 +160,11 @@ commands.moderation.rules.rules.description = The channel was successfully set t
|
|||
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.error.description = The specified role does not exist on this server.
|
||||
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.guild.error.description = The mentioned channel must be on this server\!
|
||||
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.
|
||||
commands.moderation.rules.emote.decline.title = Custom Decline Emote
|
||||
|
|
@ -218,6 +223,7 @@ 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.queueing.title = %extra% Added to queue %extra%
|
||||
commands.music.play.success.title = Title
|
||||
commands.music.play.success.author = Author
|
||||
commands.music.play.success.length = Length
|
||||
|
|
@ -271,6 +277,9 @@ commands.music.loop.success.unloop.description = I will no longer repeat the cur
|
|||
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.music.echo.success.title = Successfully activated
|
||||
commands.music.echo.success.description = I will now repeat everything I can hear in your voice channel
|
||||
commands.music.echo.help.description = Sends your voice through Hadder.
|
||||
|
||||
commands.nsfw.gif.error.title = GIF not showing? Click here
|
||||
commands.nsfw.img.error.title = Image not showing? Click here
|
||||
|
|
@ -298,8 +307,8 @@ commands.owner.eval.help.description = Execute the given code
|
|||
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.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.guildleave.error.description = I can not leave from this server. Maybe this isn't a ID?
|
||||
commands.owner.guildleave.help.description = Quit from a server
|
||||
commands.owner.reboot.help.description = Restart the bot
|
||||
commands.owner.shutdown.success.title = Shutdown
|
||||
commands.owner.shutdown.help.description = Shuts the Bot down
|
||||
|
|
@ -314,6 +323,6 @@ commands.owner.blacklist.help.description = Blacklist a user for specific comman
|
|||
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.prefix.success.title = %extra% Successfully set %extra%
|
||||
commands.settings.prefix.success.title = Successfully set prefix
|
||||
commands.settings.prefix.success.description = I successfully set the new prefix for you to `%extra%`.
|
||||
commands.settings.prefix.help.description = Sets a new prefix.
|
||||
|
|
|
|||
|
|
@ -93,6 +93,11 @@ commands.misc.serverstats.help.description = Shows information about a server.
|
|||
commands.misc.profile.error.title = Not found
|
||||
commands.misc.profile.error.description = I can't find the specified user.
|
||||
commands.misc.profile.help.description = Shows some information about the specified user.
|
||||
commands.misc.code.success.title = Invite code information
|
||||
commands.misc.code.success.description = This message contains some information about the specified invite code.
|
||||
commands.misc.code.error.title = Code not found
|
||||
commands.misc.code.error.description = I can't find the specified invite code.
|
||||
commands.misc.code.help.description = Shows information about a invite code.
|
||||
|
||||
commands.moderation.ban.success.title = Successfully banned
|
||||
commands.moderation.ban.success.description = I successfully baned %extra%
|
||||
|
|
@ -112,17 +117,17 @@ 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.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.success.description = I successfully set the new prefix for the server 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.description = I successfully activated the invite link detection for this guild.
|
||||
commands.moderation.invitedetect.activate.success.description = I successfully activated the invite link detection for this server.
|
||||
commands.moderation.invitedetect.activate.error.title = Already activated
|
||||
commands.moderation.invitedetect.activate.error.description = The invite link detection is already activated on this guild.
|
||||
commands.moderation.invitedetect.activate.error.description = The invite link detection is already activated on this server.
|
||||
commands.moderation.invitedetect.deactivate.success.title = Successfully deactivated
|
||||
commands.moderation.invitedetect.deactivate.success.description = I successfully deactivated the invite link detection for this guild.
|
||||
commands.moderation.invitedetect.deactivate.success.description = I successfully deactivated the invite link detection for this server.
|
||||
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.deactivate.error.description = The invite link detection is already deactivated on this server.
|
||||
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%.
|
||||
|
|
@ -155,11 +160,11 @@ commands.moderation.rules.rules.description = The channel was successfully set t
|
|||
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.error.description = The specified role does not exist on this server.
|
||||
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.guild.error.description = The mentioned channel must be on this server\!
|
||||
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.
|
||||
commands.moderation.rules.emote.decline.title = Custom Decline Emote
|
||||
|
|
@ -218,6 +223,7 @@ 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.queueing.title = %extra% Added to queue %extra%
|
||||
commands.music.play.success.title = Title
|
||||
commands.music.play.success.author = Author
|
||||
commands.music.play.success.length = Length
|
||||
|
|
@ -271,6 +277,9 @@ commands.music.loop.success.unloop.description = I will no longer repeat the cur
|
|||
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.music.echo.success.title = Successfully activated
|
||||
commands.music.echo.success.description = I will now repeat everything I can hear in your voice channel
|
||||
commands.music.echo.help.description = Sends your voice through Hadder.
|
||||
|
||||
commands.nsfw.gif.error.title = GIF not showing? Click here
|
||||
commands.nsfw.img.error.title = Image not showing? Click here
|
||||
|
|
@ -298,8 +307,8 @@ commands.owner.eval.help.description = Execute the given code
|
|||
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.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.guildleave.error.description = I can not leave from this server. Maybe this isn't a ID?
|
||||
commands.owner.guildleave.help.description = Quit from a server
|
||||
commands.owner.reboot.help.description = Restart the bot
|
||||
commands.owner.shutdown.success.title = Shutdown
|
||||
commands.owner.shutdown.help.description = Shuts the Bot down
|
||||
|
|
@ -314,6 +323,6 @@ commands.owner.blacklist.help.description = Blacklist a user for specific comman
|
|||
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.prefix.success.title = %extra% Successfully set %extra%
|
||||
commands.settings.prefix.success.title = Successfully set prefix
|
||||
commands.settings.prefix.success.description = I successfully set the new prefix for you to `%extra%`.
|
||||
commands.settings.prefix.help.description = Sets a new prefix.
|
||||
|
|
|
|||
|
|
@ -93,6 +93,11 @@ commands.misc.serverstats.help.description = Shows information about a server.
|
|||
commands.misc.profile.error.title = Not found
|
||||
commands.misc.profile.error.description = I can't find the specified user.
|
||||
commands.misc.profile.help.description = Shows some information about the specified user.
|
||||
commands.misc.code.success.title = Invite code information
|
||||
commands.misc.code.success.description = This message contains some information about the specified invite code.
|
||||
commands.misc.code.error.title = Code not found
|
||||
commands.misc.code.error.description = I can't find the specified invite code.
|
||||
commands.misc.code.help.description = Shows information about a invite code.
|
||||
|
||||
commands.moderation.ban.success.title = Successfully banned
|
||||
commands.moderation.ban.success.description = I successfully baned %extra%
|
||||
|
|
@ -112,17 +117,17 @@ 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.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.success.description = I successfully set the new prefix for the server 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.description = I successfully activated the invite link detection for this guild.
|
||||
commands.moderation.invitedetect.activate.success.description = I successfully activated the invite link detection for this server.
|
||||
commands.moderation.invitedetect.activate.error.title = Already activated
|
||||
commands.moderation.invitedetect.activate.error.description = The invite link detection is already activated on this guild.
|
||||
commands.moderation.invitedetect.activate.error.description = The invite link detection is already activated on this server.
|
||||
commands.moderation.invitedetect.deactivate.success.title = Successfully deactivated
|
||||
commands.moderation.invitedetect.deactivate.success.description = I successfully deactivated the invite link detection for this guild.
|
||||
commands.moderation.invitedetect.deactivate.success.description = I successfully deactivated the invite link detection for this server.
|
||||
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.deactivate.error.description = The invite link detection is already deactivated on this server.
|
||||
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%.
|
||||
|
|
@ -155,11 +160,11 @@ commands.moderation.rules.rules.description = The channel was successfully set t
|
|||
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.error.description = The specified role does not exist on this server.
|
||||
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.guild.error.description = The mentioned channel must be on this server\!
|
||||
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.
|
||||
commands.moderation.rules.emote.decline.title = Custom Decline Emote
|
||||
|
|
@ -218,6 +223,7 @@ 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.queueing.title = %extra% Added to queue %extra%
|
||||
commands.music.play.success.title = Title
|
||||
commands.music.play.success.author = Author
|
||||
commands.music.play.success.length = Length
|
||||
|
|
@ -271,6 +277,9 @@ commands.music.loop.success.unloop.description = I will no longer repeat the cur
|
|||
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.music.echo.success.title = Successfully activated
|
||||
commands.music.echo.success.description = I will now repeat everything I can hear in your voice channel
|
||||
commands.music.echo.help.description = Sends your voice through Hadder.
|
||||
|
||||
commands.nsfw.gif.error.title = GIF not showing? Click here
|
||||
commands.nsfw.img.error.title = Image not showing? Click here
|
||||
|
|
@ -298,8 +307,8 @@ commands.owner.eval.help.description = Execute the given code
|
|||
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.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.guildleave.error.description = I can not leave from this server. Maybe this isn't a ID?
|
||||
commands.owner.guildleave.help.description = Quit from a server
|
||||
commands.owner.reboot.help.description = Restart the bot
|
||||
commands.owner.shutdown.success.title = Shutdown
|
||||
commands.owner.shutdown.help.description = Shuts the Bot down
|
||||
|
|
@ -314,6 +323,6 @@ commands.owner.blacklist.help.description = Blacklist a user for specific comman
|
|||
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.prefix.success.title = %extra% Successfully set %extra%
|
||||
commands.settings.prefix.success.title = Successfully set prefix
|
||||
commands.settings.prefix.success.description = I successfully set the new prefix for you to `%extra%`.
|
||||
commands.settings.prefix.help.description = Sets a new prefix.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue