Merge remote-tracking branch 'origin/greg-dev' into hax-dev

This commit is contained in:
Schlauer-Hax 2020-05-13 15:36:25 +02:00
commit 4c926f8610
29 changed files with 200 additions and 73 deletions

View file

@ -15,6 +15,7 @@ Hadder Discord is a multi-purpose Discord bot with 100% uptime.
[![Discord Bots](https://top.gg/api/widget/637002314162372639.svg)](https://top.gg/bot/637002314162372639) [![Discord Bots](https://top.gg/api/widget/637002314162372639.svg)](https://top.gg/bot/637002314162372639)
[![Hadder's Widget](https://api.botlist.space/widget/637002314162372639/2 "Hadder's Widget")](https://botlist.space/bot/637002314162372639?utm_source=bls&utm_medium=widget&utm_campaign=637002314162372639) [![Hadder's Widget](https://api.botlist.space/widget/637002314162372639/2 "Hadder's Widget")](https://botlist.space/bot/637002314162372639?utm_source=bls&utm_medium=widget&utm_campaign=637002314162372639)
[![Discord Bots](https://discordbotlist.com/bots/637002314162372639/widget)](https://discordbotlist.com/bots/637002314162372639) [![Discord Bots](https://discordbotlist.com/bots/637002314162372639/widget)](https://discordbotlist.com/bots/637002314162372639)
[![Arcane Bot Center](https://arcane-botcenter.xyz/api/widget/637002314162372639.svg)](https://arcane-botcenter.xyz/bot/637002314162372639)
## Hadder Team ## Hadder Team
### Developer ### Developer

14
pom.xml
View file

@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>Hadder</groupId> <groupId>Hadder</groupId>
<artifactId>Hadder</artifactId> <artifactId>Hadder</artifactId>
<version>1.1.3</version> <version>1.3.3</version>
<name>Hadder</name> <name>Hadder</name>
<inceptionYear>2019</inceptionYear> <inceptionYear>2019</inceptionYear>
<description>Hadder is a multi-purpose Discord bot.</description> <description>Hadder is a multi-purpose Discord bot.</description>
@ -66,7 +66,7 @@
<dependency> <dependency>
<groupId>net.dv8tion</groupId> <groupId>net.dv8tion</groupId>
<artifactId>JDA</artifactId> <artifactId>JDA</artifactId>
<version>4.1.1_113</version> <version>4.1.1_149</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.json</groupId> <groupId>org.json</groupId>
@ -76,7 +76,7 @@
<dependency> <dependency>
<groupId>com.rethinkdb</groupId> <groupId>com.rethinkdb</groupId>
<artifactId>rethinkdb-driver</artifactId> <artifactId>rethinkdb-driver</artifactId>
<version>2.4.0</version> <version>2.4.2</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>
@ -86,22 +86,22 @@
<dependency> <dependency>
<groupId>club.minnced</groupId> <groupId>club.minnced</groupId>
<artifactId>discord-webhooks</artifactId> <artifactId>discord-webhooks</artifactId>
<version>0.2.0</version> <version>0.3.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.kohsuke</groupId> <groupId>org.kohsuke</groupId>
<artifactId>github-api</artifactId> <artifactId>github-api</artifactId>
<version>1.108</version> <version>1.111</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.sedmelluq</groupId> <groupId>com.sedmelluq</groupId>
<artifactId>lavaplayer</artifactId> <artifactId>lavaplayer</artifactId>
<version>1.3.34</version> <version>1.3.48</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId> <artifactId>jackson-annotations</artifactId>
<version>2.10.3</version> <version>2.11.0</version>
</dependency> </dependency>
</dependencies> </dependencies>

View file

@ -29,6 +29,7 @@ import com.bbn.hadder.core.*;
import com.bbn.hadder.listener.*; import com.bbn.hadder.listener.*;
import net.dv8tion.jda.api.OnlineStatus; import net.dv8tion.jda.api.OnlineStatus;
import net.dv8tion.jda.api.entities.Activity; import net.dv8tion.jda.api.entities.Activity;
import net.dv8tion.jda.api.requests.GatewayIntent;
import net.dv8tion.jda.api.sharding.DefaultShardManagerBuilder; import net.dv8tion.jda.api.sharding.DefaultShardManagerBuilder;
import net.dv8tion.jda.api.sharding.ShardManager; import net.dv8tion.jda.api.sharding.ShardManager;
import net.dv8tion.jda.api.utils.ChunkingFilter; import net.dv8tion.jda.api.utils.ChunkingFilter;
@ -51,11 +52,11 @@ public class Hadder {
Rethink rethink = new Rethink(config); Rethink rethink = new Rethink(config);
rethink.connect(); rethink.connect();
DefaultShardManagerBuilder builder = new DefaultShardManagerBuilder(); DefaultShardManagerBuilder builder = DefaultShardManagerBuilder.create(GatewayIntent.getIntents(GatewayIntent.ALL_INTENTS));
builder.setAutoReconnect(true); builder.setAutoReconnect(true);
builder.setShardsTotal(1); builder.setShardsTotal(1);
builder.setChunkingFilter(ChunkingFilter.ALL); builder.setChunkingFilter(ChunkingFilter.NONE);
builder.setBulkDeleteSplittingEnabled(true); builder.setBulkDeleteSplittingEnabled(true);
builder.setActivity(Activity.listening("to h.help")); builder.setActivity(Activity.listening("to h.help"));
builder.setStatus(OnlineStatus.DO_NOT_DISTURB); builder.setStatus(OnlineStatus.DO_NOT_DISTURB);
@ -127,7 +128,8 @@ public class Hadder {
new ServerStatsCommand(), new ServerStatsCommand(),
new ProfileCommand(), new ProfileCommand(),
new CodeCommand(), new CodeCommand(),
new MoveAllCommand()), config, helpCommand); new MoveAllCommand(),
new CoronaCommand()), config, helpCommand);
builder.addEventListeners( builder.addEventListeners(
new MentionListener(rethink), new MentionListener(rethink),

View file

@ -22,6 +22,7 @@ import com.rethinkdb.gen.exc.ReqlNonExistenceError;
import com.rethinkdb.gen.exc.ReqlOpFailedError; import com.rethinkdb.gen.exc.ReqlOpFailedError;
import com.rethinkdb.net.Connection; import com.rethinkdb.net.Connection;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.lang.reflect.Field; import java.lang.reflect.Field;
@ -72,13 +73,18 @@ public class Rethink {
else return null; else return null;
} }
public Object getByID(String table, String wherevalue, String column) { public Object getByID(String table, String where, String column) {
return r.table(table).get(wherevalue).getField(column).run(conn); return r.table(table).get(where).getField(column).run(conn);
} }
public JSONObject getObjectByID(String table, String id) { public JSONObject getObjectByID(String table, String id) {
String response = r.table(table).get(id).toJson().run(conn); String response = r.table(table).get(id).toJson().run(conn);
return new JSONObject(response); try {
return new JSONObject(response);
} catch (JSONException e) {
System.out.println(response);
return null;
}
} }
public void insert(String table, Object object) { public void insert(String table, Object object) {

View file

@ -31,7 +31,7 @@ public class CodeCommand implements Command {
public void executed(String[] args, CommandEvent e) { public void executed(String[] args, CommandEvent e) {
if (args.length > 0) { if (args.length > 0) {
OkHttpClient client = new OkHttpClient(); 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(); Request request = new Request.Builder().url("https://canary.discordapp.com/api/v6/invite/" + args[0] + "?with_counts=true").addHeader("Authorization", "Bot " + e.getConfig().getBotToken()).build();
try { try {
Response response = client.newCall(request).execute(); Response response = client.newCall(request).execute();
@ -45,6 +45,9 @@ public class CodeCommand implements Command {
.addField("Verification Level", String.valueOf(json.getJSONObject("guild").getInt("verification_level")), true) .addField("Verification Level", String.valueOf(json.getJSONObject("guild").getInt("verification_level")), true)
.addField("Guild ID", json.getJSONObject("guild").getString("id"), true) .addField("Guild ID", json.getJSONObject("guild").getString("id"), true)
.addBlankField(true) .addBlankField(true)
.addField("Members", String.valueOf(json.get("approximate_member_count")), true)
.addBlankField(true)
.addBlankField(true)
.setThumbnail("https://cdn.discordapp.com/icons/" + json.getJSONObject("guild").getString("id") + "/" + json.getJSONObject("guild").getString("icon") + ".png") .setThumbnail("https://cdn.discordapp.com/icons/" + json.getJSONObject("guild").getString("id") + "/" + json.getJSONObject("guild").getString("icon") + ".png")
.build()).queue(); .build()).queue();
} catch (JSONException ex) { } catch (JSONException ex) {

View file

@ -0,0 +1,76 @@
/*
* 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.JSONObject;
import java.io.IOException;
public class CoronaCommand implements Command {
@Override
public void executed(String[] args, CommandEvent e) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url("https://corona.lmao.ninja/v2/all").build();
try {
Response response = client.newCall(request).execute();
JSONObject json = new JSONObject(response.body().string());
StringBuilder stringBuilder = new StringBuilder();
stringBuilder
.append("`Confirmed cases:` **").append(json.get("cases")).append("**\n")
.append("`Deaths:` **").append(json.get("deaths")).append("** \n")
.append("`Recovered:` **").append(json.get("recovered")).append("** \n")
.append("`Active cases:` **").append(json.get("active")).append("**");
e.getTextChannel().sendMessage(e.getMessageEditor()
.getMessage(MessageEditor.MessageType.INFO)
.setDescription(stringBuilder)
.build()).queue();
} catch (IOException ex) {
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR)
.setTitle("API Error")
.setDescription("Try again later!")
.build()).queue();
}
}
@Override
public String[] labels() {
return new String[]{"corona"};
}
@Override
public String description() {
return "commands.misc.corona.help.description";
}
@Override
public String usage() {
return null;
}
@Override
public String example() {
return null;
}
}

View file

@ -1,52 +1,76 @@
/* /*
* @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.misc; package com.bbn.hadder.commands.misc;
import com.bbn.hadder.commands.Command; import com.bbn.hadder.commands.Command;
import com.bbn.hadder.commands.CommandEvent; import com.bbn.hadder.commands.CommandEvent;
import com.bbn.hadder.core.Perm; import com.bbn.hadder.core.Perm;
import com.bbn.hadder.core.Perms; import com.bbn.hadder.core.Perms;
import net.dv8tion.jda.api.EmbedBuilder; import com.bbn.hadder.utils.MessageEditor;
import net.dv8tion.jda.api.Permission; import org.apache.commons.lang3.StringUtils;
import net.dv8tion.jda.api.entities.Member;
import java.util.ArrayList;
import java.util.Objects;
@Perms(Perm.VOICE_MOVE_OTHERS)
public class MoveAllCommand implements Command { public class MoveAllCommand implements Command {
@Perms(Perm.VOICE_MOVE_OTHERS)
@Override @Override
public void executed(String[] args, CommandEvent e) { public void executed(String[] args, CommandEvent e) {
if (args.length == 2) { if (args.length == 2) {
int count = Objects.requireNonNull(e.getGuild().getVoiceChannelById(args[0])).getMembers().size(); if (StringUtils.isNumeric(args[0]) && args[0].length() == 18) {
Objects.requireNonNull(e.getGuild().getVoiceChannelById(args[0])).getMembers().forEach( if (StringUtils.isNumeric(args[1]) && args[1].length() == 18) {
member -> { if (!args[0].equals(args[1])) {
e.getGuild().moveVoiceMember(member, e.getGuild().getVoiceChannelById(args[1])).queue(); int count = e.getGuild().getVoiceChannelById(args[0]).getMembers().size();
e.getGuild().getVoiceChannelById(args[0]).getMembers().forEach(
member -> e.getGuild().moveVoiceMember(member, e.getGuild().getVoiceChannelById(args[1])).queue()
);
e.getChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
"commands.misc.moveall.success.title", "",
"commands.misc.moveall.success.description", String.valueOf(count))
.build()).queue();
} else {
e.getChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
"commands.misc.moveall.error.equals.title",
"commands.misc.moveall.error.equals.description")
.build()).queue();
} }
); } else {
e.getChannel().sendMessage(new EmbedBuilder().setTitle("Successfully Moved!").setDescription("I moved " + e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
count + " Members. Have fun!").build()).queue(); "commands.misc.moveall.error.target.int.title",
} else { "commands.misc.moveall.error.target.int.description").build()).queue();
e.getHelpCommand().sendHelp(this, e); }
} } else {
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
"commands.misc.moveall.error.source.int.title",
"commands.misc.moveall.error.source.int.description").build()).queue();
}
} else e.getHelpCommand().sendHelp(this, e);
} }
@Override @Override
public String[] labels() { public String[] labels() {
return new String[]{"moveall", "move-all"}; return new String[]{"moveall", "move-all", "ma"};
} }
@Override @Override
public String description() { public String description() {
return "Moves All users in channel1 to channel2"; return "commands.misc.moveall.help.description";
} }
@Override @Override
public String usage() { public String usage() {
return "[channel1] [channel2]"; return "[source-channel] [target-channel]";
} }
@Override @Override

View file

@ -86,16 +86,13 @@ public class RegionChangeCommand implements Command {
case "us-south": case "us-south":
setRegion(Region.US_SOUTH, "US South", e); setRegion(Region.US_SOUTH, "US South", e);
break; break;
case "south-korea":
setRegion(Region.SOUTH_KOREA, "South Korea", e);
break;
default: default:
e.getTextChannel().sendMessage( e.getTextChannel().sendMessage(
e.getMessageEditor().getMessage( e.getMessageEditor().getMessage(
MessageEditor.MessageType.INFO, MessageEditor.MessageType.INFO,
"commands.moderation.regionchange.regions.title", "commands.moderation.regionchange.regions.title",
"") "")
.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`") .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`")
.build()).queue(); .build()).queue();
break; break;
} }

View file

@ -34,8 +34,8 @@ public class PauseCommand implements Command {
.build()).queue(); .build()).queue();
} else { } else {
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR, e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.ERROR,
"commands.music.pause.error.paused.title", "commands.music.pause.error.paused.title", "",
"commands.music.pause.error.paused.description") "commands.music.pause.error.paused.description", e.getRethinkServer().getPrefix())
.build()).queue(); .build()).queue();
} }
} else { } else {

View file

@ -26,7 +26,7 @@ public class AnalCommand implements Command {
@Override @Override
public void executed(String[] args, CommandEvent e) { public void executed(String[] args, CommandEvent e) {
if (e.getTextChannel().isNSFW()) { if (e.getTextChannel().isNSFW()) {
String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/anal/"); String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/anal");
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO)
.setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url) .setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url)
.setImage(url) .setImage(url)

View file

@ -27,7 +27,7 @@ public class BoobsCommand implements Command {
public void executed(String[] args, CommandEvent e) { public void executed(String[] args, CommandEvent e) {
if (e.getTextChannel().isNSFW()) { if (e.getTextChannel().isNSFW()) {
String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/tits/"); String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/tits");
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO)
.setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url) .setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url)

View file

@ -27,7 +27,7 @@ public class CumCommand implements Command {
public void executed(String[] args, CommandEvent e) { public void executed(String[] args, CommandEvent e) {
if (e.getTextChannel().isNSFW()) { if (e.getTextChannel().isNSFW()) {
String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/cum/"); String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/cum");
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO)
.setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url) .setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url)

View file

@ -27,7 +27,7 @@ public class FeetCommand implements Command {
public void executed(String[] args, CommandEvent e) { public void executed(String[] args, CommandEvent e) {
if (e.getTextChannel().isNSFW()) { if (e.getTextChannel().isNSFW()) {
String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/feet/"); String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/feet");
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO)
.setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url) .setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url)

View file

@ -27,7 +27,7 @@ public class FingeringCommand implements Command {
public void executed(String[] args, CommandEvent e) { public void executed(String[] args, CommandEvent e) {
if (e.getTextChannel().isNSFW()) { if (e.getTextChannel().isNSFW()) {
String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/pussy_wank/"); String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/pussy_wank");
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO)
.setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url) .setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url)

View file

@ -27,7 +27,7 @@ public class LickingCommand implements Command {
public void executed(String[] args, CommandEvent e) { public void executed(String[] args, CommandEvent e) {
if (e.getTextChannel().isNSFW()) { if (e.getTextChannel().isNSFW()) {
String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/kuni/"); String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/kuni");
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO)
.setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url) .setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url)

View file

@ -27,7 +27,7 @@ public class PornCommand implements Command {
public void executed(String[] args, CommandEvent e) { public void executed(String[] args, CommandEvent e) {
if (e.getTextChannel().isNSFW()) { if (e.getTextChannel().isNSFW()) {
String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/classic/"); String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/classic");
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO)
.setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url) .setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url)

View file

@ -27,7 +27,7 @@ public class PussyCommand implements Command {
public void executed(String[] args, CommandEvent e) { public void executed(String[] args, CommandEvent e) {
if (e.getTextChannel().isNSFW()) { if (e.getTextChannel().isNSFW()) {
String url = Http.getNSFW("https://nekos.life/api/v2/img/pussy/"); String url = Http.getNSFW("https://nekos.life/api/v2/img/pussy");
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO)
.setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url) .setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url)

View file

@ -27,7 +27,7 @@ public class RandomPornCommand implements Command {
public void executed(String[] args, CommandEvent e) { public void executed(String[] args, CommandEvent e) {
if (e.getTextChannel().isNSFW()) { if (e.getTextChannel().isNSFW()) {
String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/all_tags/"); String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/all_tags");
e.getTextChannel() e.getTextChannel()
.sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) .sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO)

View file

@ -27,7 +27,7 @@ public class SoloCommand implements Command {
public void executed(String[] args, CommandEvent e) { public void executed(String[] args, CommandEvent e) {
if (e.getTextChannel().isNSFW()) { if (e.getTextChannel().isNSFW()) {
String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/girls_solo/"); String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/girls_solo");
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO)
.setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url) .setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url)

View file

@ -27,7 +27,7 @@ public class SpankCommand implements Command {
public void executed(String[] args, CommandEvent e) { public void executed(String[] args, CommandEvent e) {
if (e.getTextChannel().isNSFW()) { if (e.getTextChannel().isNSFW()) {
String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/spank/"); String url = Http.getNSFW("https://api.nekos.dev/api/v3/images/nsfw/gif/spank");
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO)
.setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url) .setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url)

View file

@ -27,7 +27,7 @@ public class TransCommand implements Command {
public void executed(String[] args, CommandEvent e) { public void executed(String[] args, CommandEvent e) {
if (e.getTextChannel().isNSFW()) { if (e.getTextChannel().isNSFW()) {
String url = Http.getNSFW("https://nekos.life/api/v2/img/trap/"); String url = Http.getNSFW("https://nekos.life/api/v2/img/trap");
e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) e.getTextChannel().sendMessage(e.getMessageEditor().getMessage(MessageEditor.MessageType.INFO)
.setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url) .setAuthor(e.getMessageEditor().getTerm("commands.nsfw.gif.error.title"), url)

View file

@ -33,14 +33,13 @@ public class BotList {
private static String MythicalBotList = "https://mythicalbots.xyz/api/bot/637002314162372639"; private static String MythicalBotList = "https://mythicalbots.xyz/api/bot/637002314162372639";
private static String BotsForDiscord = "https://botsfordiscord.com/api/bot/637002314162372639"; private static String BotsForDiscord = "https://botsfordiscord.com/api/bot/637002314162372639";
private static String DiscordBotList = "https://discordbotlist.com/api/bots/637002314162372639/stats"; private static String DiscordBotList = "https://discordbotlist.com/api/bots/637002314162372639/stats";
private static String DiscordBoats = "https://discord.boats/api/bot/637002314162372639"; private static String DiscordBoats = "https://discord.boats/api/v2/bot/637002314162372639";
private static String YetAnotherBotList = "https://yabl.xyz/api/bot/637002314162372639/stats"; 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 DiscordExtremeList = "https://api.discordextremelist.xyz/v1/bot/637002314162372639";
private static String DiscordBots = "https://top.gg/api/bots/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 BotListSpace = "https://api.botlist.space/v1/bots/637002314162372639";
private static String DiscordBots2 = "https://discord.bots.gg/api/v1/bots/637002314162372639/stats"; 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-center.xyz/api/637002314162372639/stats";
private static String ArcaneBotCenter = "https://arcane-botcenter.xyz/api/637002314162372639/stats";
private Config config; private Config config;
@ -197,21 +196,6 @@ public class BotList {
e.printStackTrace(); e.printStackTrace();
} }
// CloudList
Request cloudlist = new Request.Builder()
.url(CloudList)
.post(body)
.addHeader("Authorization", config.getCloudListToken())
.build();
try {
new OkHttpClient().newCall(cloudlist).execute().close();
System.out.println("Successfully posted count to the CloudList!");
} catch (IOException e) {
e.printStackTrace();
}
// Arcane Bot Center // Arcane Bot Center
Request arcane = new Request.Builder() Request arcane = new Request.Builder()

View file

@ -98,6 +98,10 @@ commands.misc.code.success.description = Diese Nachricht enthält einige Informa
commands.misc.code.error.title = Code nicht gefunden commands.misc.code.error.title = Code nicht gefunden
commands.misc.code.error.description = Ich kann den angegebenen Einladungscode nicht finden. commands.misc.code.error.description = Ich kann den angegebenen Einladungscode nicht finden.
commands.misc.code.help.description = Shows information about a invite code. commands.misc.code.help.description = Shows information about a invite code.
commands.misc.moveall.success.title = Successfully moved
commands.misc.moveall.success.description = I successfully moved %extra% members. Have fun\!
commands.misc.moveall.help.description = Moves all users in the source channel to the target channel.
commands.misc.corona.help.description = Show the newest stats about COVID-19
commands.moderation.ban.success.title = Erfolgreich gebannt commands.moderation.ban.success.title = Erfolgreich gebannt
commands.moderation.ban.success.description = Ich habe %extra% erfolgreich gebannt commands.moderation.ban.success.description = Ich habe %extra% erfolgreich gebannt

View file

@ -98,6 +98,16 @@ commands.misc.code.success.description = This message contains some information
commands.misc.code.error.title = Code not found commands.misc.code.error.title = Code not found
commands.misc.code.error.description = I can't find the specified invite code. 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.misc.code.help.description = Shows information about a invite code.
commands.misc.moveall.success.title = Successfully moved
commands.misc.moveall.success.description = I successfully moved %extra% members. Have fun\!
commands.misc.moveall.error.equals.title = Not twice
commands.misc.moveall.error.equals.description = The first voice channel equals the second. You have to specify two different voice channels.
commands.misc.moveall.error.source.int.title = Invalid ID
commands.misc.moveall.error.source.int.description = You didn't specified a ID as the source channel.
commands.misc.moveall.error.target.int.title = Invalid ID
commands.misc.moveall.error.target.int.description = You didn't specified a ID as the target channel.
commands.misc.moveall.help.description = Moves all users in the source channel to the target channel.
commands.misc.corona.help.description = Show the newest stats about COVID-19
commands.moderation.ban.success.title = Successfully banned commands.moderation.ban.success.title = Successfully banned
commands.moderation.ban.success.description = I successfully baned %extra% commands.moderation.ban.success.description = I successfully baned %extra%
@ -266,7 +276,7 @@ commands.music.volume.help.description = Change the volume of the music.
commands.music.pause.success.title = Successfully paused commands.music.pause.success.title = Successfully paused
commands.music.pause.success.description = I successfully paused the played song. commands.music.pause.success.description = I successfully paused the played song.
commands.music.pause.error.paused.title = Already paused commands.music.pause.error.paused.title = Already paused
commands.music.pause.error.paused.description = The song is already paused. commands.music.pause.error.paused.description = The song is already paused. You can continue playing it with %extra%play
commands.music.pause.error.connected.title = No channel commands.music.pause.error.connected.title = No channel
commands.music.pause.error.connected.description = You have to be in the same voice channel as the bot to pause the song. commands.music.pause.error.connected.description = You have to be in the same voice channel as the bot to pause the song.
commands.music.pause.help.description = Pause the playing song. commands.music.pause.help.description = Pause the playing song.

View file

@ -98,6 +98,10 @@ commands.misc.code.success.description = This message contains some information
commands.misc.code.error.title = Code not found commands.misc.code.error.title = Code not found
commands.misc.code.error.description = I can't find the specified invite code. 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.misc.code.help.description = Shows information about a invite code.
commands.misc.moveall.success.title = Successfully moved
commands.misc.moveall.success.description = I successfully moved %extra% members. Have fun\!
commands.misc.moveall.help.description = Moves all users in the source channel to the target channel.
commands.misc.corona.help.description = Show the newest stats about COVID-19
commands.moderation.ban.success.title = Successfully banned commands.moderation.ban.success.title = Successfully banned
commands.moderation.ban.success.description = I successfully baned %extra% commands.moderation.ban.success.description = I successfully baned %extra%

View file

@ -98,6 +98,10 @@ commands.misc.code.success.description = This message contains some information
commands.misc.code.error.title = Code not found commands.misc.code.error.title = Code not found
commands.misc.code.error.description = I can't find the specified invite code. 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.misc.code.help.description = Shows information about a invite code.
commands.misc.moveall.success.title = Successfully moved
commands.misc.moveall.success.description = I successfully moved %extra% members. Have fun\!
commands.misc.moveall.help.description = Moves all users in the source channel to the target channel.
commands.misc.corona.help.description = Show the newest stats about COVID-19
commands.moderation.ban.success.title = Successfully banned commands.moderation.ban.success.title = Successfully banned
commands.moderation.ban.success.description = I successfully baned %extra% commands.moderation.ban.success.description = I successfully baned %extra%

View file

@ -98,6 +98,10 @@ commands.misc.code.success.description = This message contains some information
commands.misc.code.error.title = Code not found commands.misc.code.error.title = Code not found
commands.misc.code.error.description = I can't find the specified invite code. 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.misc.code.help.description = Shows information about a invite code.
commands.misc.moveall.success.title = Successfully moved
commands.misc.moveall.success.description = I successfully moved %extra% members. Have fun\!
commands.misc.moveall.help.description = Moves all users in the source channel to the target channel.
commands.misc.corona.help.description = Show the newest stats about COVID-19
commands.moderation.ban.success.title = Successfully banned commands.moderation.ban.success.title = Successfully banned
commands.moderation.ban.success.description = I successfully baned %extra% commands.moderation.ban.success.description = I successfully baned %extra%

View file

@ -98,6 +98,10 @@ commands.misc.code.success.description = This message contains some information
commands.misc.code.error.title = Code not found commands.misc.code.error.title = Code not found
commands.misc.code.error.description = I can't find the specified invite code. 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.misc.code.help.description = Shows information about a invite code.
commands.misc.moveall.success.title = Successfully moved
commands.misc.moveall.success.description = I successfully moved %extra% members. Have fun\!
commands.misc.moveall.help.description = Moves all users in the source channel to the target channel.
commands.misc.corona.help.description = Show the newest stats about COVID-19
commands.moderation.ban.success.title = Successfully banned commands.moderation.ban.success.title = Successfully banned
commands.moderation.ban.success.description = I successfully baned %extra% commands.moderation.ban.success.description = I successfully baned %extra%

View file

@ -98,6 +98,10 @@ commands.misc.code.success.description = This message contains some information
commands.misc.code.error.title = Code not found commands.misc.code.error.title = Code not found
commands.misc.code.error.description = I can't find the specified invite code. 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.misc.code.help.description = Shows information about a invite code.
commands.misc.moveall.success.title = Successfully moved
commands.misc.moveall.success.description = I successfully moved %extra% members. Have fun\!
commands.misc.moveall.help.description = Moves all users in the source channel to the target channel.
commands.misc.corona.help.description = Show the newest stats about COVID-19
commands.moderation.ban.success.title = Successfully banned commands.moderation.ban.success.title = Successfully banned
commands.moderation.ban.success.description = I successfully baned %extra% commands.moderation.ban.success.description = I successfully baned %extra%