Greg dev #74

Merged
greg6775 merged 8 commits from greg-dev into master 2019-11-17 01:33:22 +01:00
23 changed files with 384 additions and 142 deletions
Showing only changes of commit 48c582da29 - Show all commits

55
.github/workflows/maven.yml vendored Normal file
View file

@ -0,0 +1,55 @@
name: Hadder
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up JDK 1.13
uses: actions/setup-java@v1
with:
java-version: 1.13
- name: Build with Maven
run: mvn -B package --file pom.xml
deploy:
runs-on: ubuntu-latest
needs: test
if: github.ref == 'refs/heads/master'
steps:
- uses: actions/checkout@v1
- name: Set up JDK 1.13
uses: actions/setup-java@v1
with:
java-version: 1.13
- name: Build Final Jar
run: mvn clean compile assembly:single
- name: Copy folder content recursively to remote
uses: garygrossgarten/github-action-scp@release
with:
local: ./target/Hadder-Build.jar
remote: /home/Bots/Hadder-Build.jar
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
- name: executing remote ssh commands using password
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
script: /home/Bots/deploy.sh
- name: Send Webhook Notification
if: always()
env:
JOB_STATUS: ${{ job.status }}
WEBHOOK_URL: ${{ secrets.WEBHOOK_URL }}
HOOK_OS_NAME: ${{ runner.os }}
WORKFLOW_NAME: ${{ github.workflow }}
run: |
git clone https://github.com/DiscordHooks/github-actions-discord-webhook.git webhook
bash webhook/send.sh $JOB_STATUS $WEBHOOK_URL
shell: bash

View file

@ -1,24 +0,0 @@
language: java
jdk:
- openjdk12
addons:
apt:
packages:
- sshpass
after_success:
- wget https://raw.githubusercontent.com/DiscordHooks/travis-ci-discord-webhook/master/send.sh
- chmod +x send.sh
- ./send.sh success $WEBHOOK_URL
- mvn clean compile assembly:single
- cd target
- sshpass -p $SFTP_PASSWORD scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r Hadder-Build.jar $SFTP_USER@$SFTP_IP:/home/Bots/Hadder-Build.jar
- echo $?
- sshpass -p $SFTP_PASSWORD ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $SFTP_IP /home/Bots/deploy.sh
- echo $?
after_failure:
- wget https://raw.githubusercontent.com/DiscordHooks/travis-ci-discord-webhook/master/send.sh
- chmod +x send.sh
- ./send.sh failure $WEBHOOK_URL

View file

@ -1,3 +1,8 @@
# Hadder # Hadder
[![Build Status](https://travis-ci.com/BigBotNetwork/Hadder.svg?branch=master)](https://travis-ci.com/BigBotNetwork/Hadder) The Hadder Discord bot is a multi-purpose Discord Bot.
<a href="https://discord.gg/58My2dM"><img src="https://discordapp.com/api/guilds/448554629282922527/embed.png"/></a>
[![Build Status](https://github.com/BigBotNetwork/Hadder/workflows/Hadder/badge.svg)](https://github.com/BigBotNetwork/Hadder)
<a href="https://discordextremelist.xyz/bots/Hadder"><img src="https://discordextremelist.xyz/api/bot/637002314162372639/widget"/></a>

View file

@ -5,7 +5,7 @@
<groupId>Hadder</groupId> <groupId>Hadder</groupId>
<artifactId>Hadder</artifactId> <artifactId>Hadder</artifactId>
<version>0.7-ALPHA</version> <version>0.7.1-ALPHA</version>
<name>Hadder</name> <name>Hadder</name>
@ -25,7 +25,7 @@
<dependency> <dependency>
<groupId>net.dv8tion</groupId> <groupId>net.dv8tion</groupId>
<artifactId>JDA</artifactId> <artifactId>JDA</artifactId>
<version>4.0.0_56</version> <version>4.0.0_61</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.json</groupId> <groupId>org.json</groupId>

View file

@ -23,7 +23,7 @@ public class Hadder {
startBot(); startBot();
} }
public static void startBot() { private static void startBot() {
Config config = new Config("./config.json"); Config config = new Config("./config.json");
if (!config.fileExists()) config.create(); if (!config.fileExists()) config.create();
config.load(); config.load();
@ -47,12 +47,14 @@ public class Hadder {
new ShutdownCommand(), new ShutdownCommand(),
new KickCommand(), new KickCommand(),
new PingCommand(), new PingCommand(),
new GifCommand(config), new GifCommand(),
new ClearCommand(), new ClearCommand(),
new GitHubCommand(), new GitHubCommand(),
new ScreenshareCommand(), new ScreenshareCommand(),
new RebootCommand(), new RebootCommand(),
new EqualsCommand(), new EqualsCommand(),
new InviteCommand(),
new NickCommand(),
new GuildPrefixCommand()), config); new GuildPrefixCommand()), config);
builder.addEventListeners( builder.addEventListeners(

View file

@ -18,11 +18,11 @@ public class Rethink {
private Connection conn; private Connection conn;
private Config config; private Config config;
public Rethink(Config config) { Rethink(Config config) {
this.config = config; this.config = config;
} }
public boolean connect() { public void connect() {
try { try {
conn = r.connection() conn = r.connection()
.hostname(config.getDatabaseIP()) .hostname(config.getDatabaseIP())
@ -35,7 +35,6 @@ public class Rethink {
System.out.println(e.toString()); System.out.println(e.toString());
System.out.println("DB CONNECTION FAILED"); System.out.println("DB CONNECTION FAILED");
} }
return true;
} }
public void disconnect() { public void disconnect() {
@ -46,8 +45,7 @@ public class Rethink {
private JSONArray getAsArray(String table, String where, String value) { private JSONArray getAsArray(String table, String where, String value) {
try { try {
String string = r.table(table).filter(row -> row.g(where.toLowerCase()).eq(value)).coerceTo("array").toJson().run(conn); String string = r.table(table).filter(row -> row.g(where.toLowerCase()).eq(value)).coerceTo("array").toJson().run(conn);
JSONArray jsonArray = new JSONArray(string); return new JSONArray(string);
return jsonArray;
} catch (NoSuchElementException e) { } catch (NoSuchElementException e) {
return null; return null;
} catch (Exception e) { } catch (Exception e) {
@ -105,15 +103,15 @@ public class Rethink {
return this.get("user", "id", id, "prefix"); return this.get("user", "id", id, "prefix");
} }
public String setServerPrefix(String prefix, String guildid) { public String setGuildPrefix(String prefix, String guildid) {
return this.update("server", guildid, "prefix", prefix); return this.update("server", guildid, "prefix", prefix);
} }
public String getServerPrefix(String id) { public String getGuildPrefix(String id) {
return this.get("server", "id", id, "prefix"); return this.get("server", "id", id, "prefix");
} }
public String insertServer(String id) { public String insertGuild(String id) {
return this.insert("server", r.hashMap("id", id).with("prefix", "h.")); return this.insert("server", r.hashMap("id", id).with("prefix", "h."));
} }

View file

@ -19,12 +19,6 @@ import java.util.Random;
public class GifCommand implements Command { public class GifCommand implements Command {
private Config config;
public GifCommand(Config config) {
this.config = config;
}
@Override @Override
public void executed(String[] args, CommandEvent event) { public void executed(String[] args, CommandEvent event) {
if (args.length > 0) { if (args.length > 0) {
@ -35,7 +29,7 @@ public class GifCommand implements Command {
} }
OkHttpClient caller = new OkHttpClient(); OkHttpClient caller = new OkHttpClient();
Request request = new Request.Builder().url("http://api.giphy.com/v1/gifs/search?q=" + query + "&api_key=" + config.getGiphyToken()).build(); Request request = new Request.Builder().url("http://api.giphy.com/v1/gifs/search?q=" + query + "&api_key=" + event.getConfig().getGiphyToken()).build();
try { try {
Random rand = new Random(); Random rand = new Random();
Response response = caller.newCall(request).execute(); Response response = caller.newCall(request).execute();

View file

@ -4,6 +4,7 @@ import com.bbn.hadder.commands.Command;
import com.bbn.hadder.commands.CommandEvent; import com.bbn.hadder.commands.CommandEvent;
import com.bbn.hadder.utils.MessageEditor; import com.bbn.hadder.utils.MessageEditor;
import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.Permission;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -13,47 +14,51 @@ public class HelpCommand implements Command {
@Override @Override
public void executed(String[] args, CommandEvent event) { public void executed(String[] args, CommandEvent event) {
if (args.length == 0) { if (event.getGuild().getSelfMember().hasPermission(Permission.MESSAGE_EMBED_LINKS)) {
HashMap<String, ArrayList<Command>> hashMap = new HashMap<>(); if (args.length == 0) {
for (Command cmd : event.getCommandHandler().getCommandList()) { HashMap<String, ArrayList<Command>> hashMap = new HashMap<>();
if (!hashMap.containsKey(cmd.getClass().getPackageName())) { for (Command cmd : event.getCommandHandler().getCommandList()) {
ArrayList<Command> cmdlist = new ArrayList<>(); if (!hashMap.containsKey(cmd.getClass().getPackageName())) {
cmdlist.add(cmd); ArrayList<Command> cmdlist = new ArrayList<>();
hashMap.put(cmd.getClass().getPackageName(), cmdlist); cmdlist.add(cmd);
} else { hashMap.put(cmd.getClass().getPackageName(), cmdlist);
hashMap.get(cmd.getClass().getPackageName()).add(cmd); } else {
} hashMap.get(cmd.getClass().getPackageName()).add(cmd);
}
EmbedBuilder eb = new EmbedBuilder();
for (Map.Entry<String, ArrayList<Command>> entry : hashMap.entrySet()) {
if (!entry.getKey().endsWith("owner") || (entry.getKey().endsWith("owner") && (event.getAuthor().getId().equals("477141528981012511") || event.getAuthor().getId().equals("261083609148948488")))) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < entry.getValue().size(); i++) {
Command cmd = entry.getValue().get(i);
sb.append("`" + cmd.labels()[0] + "`");
if (i < entry.getValue().size() - 1) sb.append(", ");
} }
String[] packagesplit = entry.getKey().split("\\.");
eb.addField(packagesplit[packagesplit.length - 1], sb.toString(), false);
} }
} EmbedBuilder eb = new EmbedBuilder();
new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, eb); for (Map.Entry<String, ArrayList<Command>> entry : hashMap.entrySet()) {
event.getChannel().sendMessage(eb.build()).queue(); if (!entry.getKey().endsWith("owner") || (entry.getKey().endsWith("owner") && (event.getAuthor().getId().equals("477141528981012511") || event.getAuthor().getId().equals("261083609148948488")))) {
} else { StringBuilder sb = new StringBuilder();
for (Command cmd : event.getCommandHandler().getCommandList()) { for (int i = 0; i < entry.getValue().size(); i++) {
for (String label : cmd.labels()) { Command cmd = entry.getValue().get(i);
if (label.toLowerCase().equals(args[0])) { sb.append("`").append(cmd.labels()[0]).append("`");
if (!cmd.getClass().getPackageName().endsWith("owner") || (cmd.getClass().getPackageName().endsWith("owner") && (event.getAuthor().getId().equals("477141528981012511") || event.getAuthor().getId().equals("261083609148948488")))) { if (i < entry.getValue().size() - 1) sb.append(", ");
EmbedBuilder eb = new EmbedBuilder(); }
String name = cmd.labels()[0]; String[] packagesplit = entry.getKey().split("\\.");
eb.setDescription(cmd.description()).setTitle(name.replaceFirst(String.valueOf(name.charAt(0)), String.valueOf(name.charAt(0)).toUpperCase())); eb.addField(packagesplit[packagesplit.length - 1], sb.toString(), false);
eb.addField("Usage", event.getRethink().getUserPrefix(event.getAuthor().getId()) + cmd.labels()[0] + " " + cmd.usage(), false); }
new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, eb); }
event.getChannel().sendMessage(eb.build()).queue(); new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, eb);
event.getChannel().sendMessage(eb.build()).queue();
} else {
for (Command cmd : event.getCommandHandler().getCommandList()) {
for (String label : cmd.labels()) {
if (label.toLowerCase().equals(args[0])) {
if (!cmd.getClass().getPackageName().endsWith("owner") || (cmd.getClass().getPackageName().endsWith("owner") && (event.getAuthor().getId().equals("477141528981012511") || event.getAuthor().getId().equals("261083609148948488")))) {
EmbedBuilder eb = new EmbedBuilder();
String name = cmd.labels()[0];
eb.setDescription(cmd.description()).setTitle(name.replaceFirst(String.valueOf(name.charAt(0)), String.valueOf(name.charAt(0)).toUpperCase()));
eb.addField("Usage", event.getRethink().getUserPrefix(event.getAuthor().getId()) + cmd.labels()[0] + " " + cmd.usage(), false);
new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, eb);
event.getChannel().sendMessage(eb.build()).queue();
}
} }
} }
} }
} }
} else {
event.getTextChannel().sendMessage("I need the Embed Links Permission to send the Help Menu!").queue();
} }
} }

View file

@ -21,52 +21,54 @@ public class GitHubCommand implements Command {
@Override @Override
public void executed(String[] args, CommandEvent event) { public void executed(String[] args, CommandEvent event) {
if (args.length > 0) { if (args.length > 0) {
Request request = new Request.Builder().url("https://api.github.com/users/" + args[0]).build(); if (args[0].equals("link")) {
try { EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("Link your GitHub Account").setDescription("https://github.com/login/oauth/authorize?client_id=25321f690bb1b6952942").build()).queue();
Response response = new OkHttpClient().newCall(request).execute(); } else {
JSONObject json = new JSONObject(response.body().string()); Request request = new Request.Builder().url("https://api.github.com/users/" + args[0]).build();
String nickname = json.getString("name");
String bio = "None";
String location = "Unknown";
String website = "None";
try { try {
bio = json.getString("bio");
Response response = new OkHttpClient().newCall(request).execute();
JSONObject json = new JSONObject(response.body().string());
String nickname = json.getString("name");
String bio = "None";
String location = "Unknown";
String website = "None";
try {
bio = json.getString("bio");
} catch (JSONException ignored) {
}
try {
location = json.getString("location");
} catch (JSONException ignored) {
}
if (!json.getString("blog").equals("")) website = json.getString("blog");
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder)
.setAuthor("Information about " + nickname + " (" + args[0] + ")", "https://github.com/" + args[0] + "", "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png")
.setThumbnail(json.getString("avatar_url"))
.addField("User bio", bio, false)
.addField("Location", location, true)
.addField("Website", website, true)
.addField("Public repositories", String.valueOf(json.getInt("public_repos")), true)
.addField("Public gists", String.valueOf(json.getInt("public_gists")), true)
.addField("Followers", String.valueOf(json.getInt("followers")), true)
.addField("Following", String.valueOf(json.getInt("following")), true)
.build()).queue();
} catch (IOException | NullPointerException e) {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.ERROR, builder).setDescription("The GitHub API might be down at the moment!").build()).queue();
} catch (JSONException e) { } catch (JSONException e) {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("This user does not exist!").build()).queue();
} }
try {
location = json.getString("location");
} catch (JSONException e) {
}
if(!json.getString("blog").equals("")) website = json.getString("blog");
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder)
.setAuthor("Information about " + nickname + " (" + args[0] + ")", "https://github.com/" + args[0] + "", "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png")
.setThumbnail(json.getString("avatar_url"))
.addField("User bio", bio, false)
.addField("Location", location, true)
.addField("Website", website, true)
.addField("Public repositories", String.valueOf(json.getInt("public_repos")), true)
.addField("Public gists", String.valueOf(json.getInt("public_gists")), true)
.addField("Followers", String.valueOf(json.getInt("followers")), true)
.addField("Following", String.valueOf(json.getInt("following")), true)
.build()).queue();
} catch (IOException | NullPointerException e) {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.ERROR, builder).setDescription("The GitHub API might be down at the moment!").build()).queue();
} catch (JSONException e) {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("This user does not exist!").build()).queue();
} }
} else { } else {
EmbedBuilder builder = new EmbedBuilder(); event.getTextChannel().sendMessage("SOON").queue();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You have to specify a user!").build()).queue();
} }
} }

View file

@ -0,0 +1,35 @@
package com.bbn.hadder.commands.misc;
/*
* @author Skidder / GregTCLTK
*/
import com.bbn.hadder.Hadder;
import com.bbn.hadder.commands.Command;
import com.bbn.hadder.commands.CommandEvent;
import com.bbn.hadder.utils.MessageEditor;
import net.dv8tion.jda.api.EmbedBuilder;
public class InviteCommand implements Command {
@Override
public void executed(String[] args, CommandEvent event) {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("Invite me!").setDescription("[Invite me here!](discordapp.com/oauth2/authorize?client_id=" + Hadder.shardManager.getGuilds().get(0).getSelfMember().getId() + "&scope=bot&permissions=470133879)").build()).queue();
}
@Override
public String[] labels() {
return new String[]{"invite"};
}
@Override
public String description() {
return "Hadder Bot Invite";
}
@Override
public String usage() {
return "";
}
}

View file

@ -33,7 +33,7 @@ public class ScreenshareCommand implements Command {
List<VoiceChannel> vcs = event.getGuild().getVoiceChannelsByName(String.join(" ", args), true); List<VoiceChannel> vcs = event.getGuild().getVoiceChannelsByName(String.join(" ", args), true);
if (vcs.size() > 1) { if (vcs.size() > 1) {
EmbedBuilder eb = new EmbedBuilder() EmbedBuilder eb = new EmbedBuilder()
.setTitle("Please Choose a Voicechannel") .setTitle("Please Choose a Voice Channel")
.setDescription("There is more than one channel with this name"); .setDescription("There is more than one channel with this name");
for (int i = 0; i < vcs.size(); i++) { for (int i = 0; i < vcs.size(); i++) {
VoiceChannel voiceChannel = vcs.get(i); VoiceChannel voiceChannel = vcs.get(i);
@ -54,14 +54,14 @@ public class ScreenshareCommand implements Command {
} }
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.ERROR, new EmbedBuilder() event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.ERROR, new EmbedBuilder()
.setTitle("Wait, thats illegal") .setTitle("Wait, that's illegal")
.setDescription("This isn't a Number.")).build()).queue(); .setDescription("This isn't a Number.")).build()).queue();
} }
}, event.getJDA(), event.getAuthor()); }, event.getJDA(), event.getAuthor());
} else if (vcs.size()==0) { } else if (vcs.size()==0) {
event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.ERROR, new EmbedBuilder() event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.ERROR, new EmbedBuilder()
.setTitle("Hol' up") .setTitle("Hol' up")
.setDescription("There is no Voicechannel named like this. \n\nNote: Make sure the Voicechannel is on this Guild.")).build()).queue(); .setDescription("There is no Voice Channel named like this. \n\nNote: Make sure the Voice Channel is on this Guild.")).build()).queue();
} else { } else {
event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, new EmbedBuilder() event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, new EmbedBuilder()
.setTitle("Here's your Url to share your Screen") .setTitle("Here's your Url to share your Screen")

View file

@ -38,10 +38,29 @@ public class BanCommand implements Command {
} }
} else if (event.getMessage().getMentionedMembers().size() == 0) { } else if (event.getMessage().getMentionedMembers().size() == 0) {
EmbedBuilder builder = new EmbedBuilder(); EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You have to mention a user!").build()).queue(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You have to mention at least one user!").build()).queue();
} else { } else if (event.getMessage().getMentionedMembers().size() > 1) {
for (int i = 0; i < event.getMessage().getMentionedMembers().size(); i++) {
Member member = event.getMessage().getMentionedMembers().get(i);
if (!event.getAuthor().getId().equals(member.getId())) {
if (!event.getJDA().getSelfUser().getId().equals(member.getId())) {
if (event.getGuild().getSelfMember().canInteract(member)) {
event.getGuild().ban(member, 0).reason("Mass Ban by " + event.getAuthor().getAsTag()).queue();
} else {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_SELF_PERMISSION, builder).build()).queue();
}
} else {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("I can not ban myself!").build()).queue();
}
} else {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You can't ban yourself.").build()).queue();
}
}
EmbedBuilder builder = new EmbedBuilder(); EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("We will be adding multiple banning within a command in the future.").build()).queue(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully banned ✅").setDescription("I successfully banned " + event.getMessage().getMentionedMembers().size() + " Members!").build()).queue();
} }
} else { } else {
EmbedBuilder builder = new EmbedBuilder(); EmbedBuilder builder = new EmbedBuilder();

View file

@ -14,7 +14,7 @@ public class GuildPrefixCommand implements Command {
if (args.length == 1) { if (args.length == 1) {
if (!args[0].contains("\"")) { if (!args[0].contains("\"")) {
event.getRethink().setServerPrefix(args[0], event.getGuild().getId()); event.getRethink().setGuildPrefix(args[0], event.getGuild().getId());
EmbedBuilder builder = new EmbedBuilder(); EmbedBuilder builder = new EmbedBuilder();

View file

@ -11,6 +11,7 @@ import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Member;
public class KickCommand implements Command { public class KickCommand implements Command {
@Override @Override
@ -30,18 +31,37 @@ public class KickCommand implements Command {
} }
} else { } else {
EmbedBuilder builder = new EmbedBuilder(); EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("I can not kick myself").build()).queue(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("I can not kick myself!").build()).queue();
} }
} else { } else {
EmbedBuilder builder = new EmbedBuilder(); EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You can't kick yourself.").build()).queue(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You can't kick yourself.").build()).queue();
} }
} else if (event.getMessage().getMentionedMembers().size() == 0) { } else if (event.getMessage().getMentionedMembers().size() == 0) {
EmbedBuilder builder = new EmbedBuilder(); EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You have to mention a user!").build()).queue(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You have to mention at least one user!").build()).queue();
} else { } else if (event.getMessage().getMentionedMembers().size() > 1) {
EmbedBuilder builder = new EmbedBuilder(); for (int i = 0; i < event.getMessage().getMentionedMembers().size(); i++) {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("We will be adding multiple kicking within a command in the future.").build()).queue(); Member member = event.getMessage().getMentionedMembers().get(i);
if (!event.getAuthor().getId().equals(member.getId())) {
if (!event.getJDA().getSelfUser().getId().equals(member.getId())) {
if (event.getGuild().getSelfMember().canInteract(member)) {
event.getGuild().kick(member).reason("Mass Kicked by " + event.getAuthor().getAsTag()).queue();
} else {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_SELF_PERMISSION, builder).build()).queue();
}
} else {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("I can not kick myself!").build()).queue();
}
} else {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You can't kick yourself.").build()).queue();
}
}
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully kicked ✅").setDescription("I successfully kicked " + event.getMessage().getMentionedMembers().size() + " Members!").build()).queue();
} }
} }
} }

View file

@ -0,0 +1,91 @@
package com.bbn.hadder.commands.moderation;
/*
* @author Skidder / GregTCLTK
*/
import com.bbn.hadder.commands.Command;
import com.bbn.hadder.commands.CommandEvent;
import com.bbn.hadder.utils.MessageEditor;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.Member;
public class NickCommand implements Command {
@Override
public void executed(String[] args, CommandEvent event) {
if (event.getMember().hasPermission(Permission.NICKNAME_MANAGE) || event.getGuild().getOwnerId().equals(event.getMember().getId())) {
if (event.getGuild().getSelfMember().hasPermission(Permission.NICKNAME_MANAGE)) {
if (event.getMessage().getMentionedMembers().size() == 1) {
if (!event.getMessage().getMentionedMembers().get(0).getId().equals(event.getGuild().getSelfMember().getId())) {
if (event.getGuild().getSelfMember().canInteract(event.getMessage().getMentionedMembers().get(0))) {
if (args.length > 1) {
if (event.getMessage().getContentRaw().startsWith(event.getRethink().getUserPrefix(event.getMember().getId()))) {
event.getGuild().modifyNickname(event.getMessage().getMentionedMembers().get(0), event.getMessage().getContentRaw().replaceFirst(event.getRethink().getUserPrefix(event.getMember().getId()) + "nick " + args[0], "")).reason("Nicked by " + event.getAuthor().getAsTag()).queue();
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully nicked ✅").setDescription("I successfully nicked " + event.getMessage().getMentionedMembers().get(0).getUser().getAsTag() + ".").build()).queue();
} else if (event.getMessage().getContentRaw().startsWith(event.getRethink().getGuildPrefix(event.getGuild().getId()))) {
event.getGuild().modifyNickname(event.getMessage().getMentionedMembers().get(0), event.getMessage().getContentRaw().replaceFirst(event.getRethink().getGuildPrefix(event.getGuild().getId()) + "nick " + args[0], "")).reason("Nicked by " + event.getAuthor().getAsTag()).queue();
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully nicked ✅").setDescription("I successfully nicked " + event.getMessage().getMentionedMembers().get(0).getUser().getAsTag() + ".").build()).queue();
}
} else {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setTitle("Missing arguments").setDescription("You have to specify a new nickname for the user(s).").build()).queue();
}
} else {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_SELF_PERMISSION, builder).build()).queue();
}
} else {
if (event.getMessage().getContentRaw().startsWith(event.getRethink().getUserPrefix(event.getMember().getId()))) {
event.getGuild().getSelfMember().modifyNickname(event.getMessage().getContentRaw().replaceFirst(event.getRethink().getUserPrefix(event.getMember().getId()) + "nick " + args[0], "")).reason("Nicked by " + event.getAuthor().getAsTag()).queue();
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully nicked ✅").setDescription("I successfully changed my nickname.").build()).queue();
} else if (event.getMessage().getContentRaw().startsWith(event.getRethink().getGuildPrefix(event.getGuild().getId()))) {
event.getGuild().getSelfMember().modifyNickname(event.getMessage().getContentRaw().replaceFirst(event.getRethink().getGuildPrefix(event.getGuild().getId()) + "nick " + args[0], "")).reason("Nicked by " + event.getAuthor().getAsTag()).queue();
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully nicked ✅").setDescription("I successfully changed my nickname.").build()).queue();
}
}
} else if (event.getMessage().getMentionedMembers().size() == 0) {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You have to mention at least one user!").build()).queue();
} else {
for (int i = 0; i < event.getMessage().getMentionedMembers().size(); i++) {
Member member = event.getMessage().getMentionedMembers().get(i);
if (!event.getJDA().getSelfUser().getId().equals(member.getId())) {
event.getGuild().modifyNickname(member, args[args.length - 1]).reason("Mass Nicked by " + event.getAuthor().getAsTag()).queue();
} else {
event.getGuild().getSelfMember().modifyNickname(args[args.length - 1]).reason("Mass Nicked by " + event.getAuthor().getAsTag()).queue();
}
}
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully nicked ✅").setDescription("I successfully nicked " + event.getMessage().getMentionedMembers().size() + " Members!").build()).queue();
}
} else {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_SELF_PERMISSION, builder).build()).queue();
}
} else {
EmbedBuilder builder = new EmbedBuilder();
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_PERMISSION, builder).build()).queue();
}
}
@Override
public String[] labels() {
return new String[]{"nick"};
}
@Override
public String description() {
return "Rename a user";
}
@Override
public String usage() {
return "<@user> <New Nickname>";
}
}

View file

@ -12,6 +12,7 @@ import net.dv8tion.jda.api.EmbedBuilder;
public class RebootCommand implements Command { public class RebootCommand implements Command {
@Override @Override
public void executed(String[] args, CommandEvent event) { public void executed(String[] args, CommandEvent event) {
if (event.getAuthor().getId().equals("477141528981012511") || event.getAuthor().getId().equals("261083609148948488")) { if (event.getAuthor().getId().equals("477141528981012511") || event.getAuthor().getId().equals("261083609148948488")) {

View file

@ -9,8 +9,8 @@ import java.util.List;
public class CommandHandler { public class CommandHandler {
List<Command> commandList; private List<Command> commandList;
Config config; private Config config;
public CommandHandler(List<Command> commandList, Config config) { public CommandHandler(List<Command> commandList, Config config) {
this.commandList = commandList; this.commandList = commandList;
@ -18,7 +18,6 @@ public class CommandHandler {
} }
public void handle(MessageReceivedEvent event, Rethink rethink, String prefix) { public void handle(MessageReceivedEvent event, Rethink rethink, String prefix) {
StringBuilder regexBuilder = new StringBuilder().append("\\").append(prefix);
String invoke = event.getMessage().getContentRaw().replaceFirst(prefix, "").split(" ")[0]; String invoke = event.getMessage().getContentRaw().replaceFirst(prefix, "").split(" ")[0];
for (Command cmd : commandList) { for (Command cmd : commandList) {
for (String label : cmd.labels()) { for (String label : cmd.labels()) {

View file

@ -33,7 +33,7 @@ public class Config {
public void create() { public void create() {
try { try {
if (Files.notExists(file)) { if (Files.notExists(file)) {
file = Files.createFile(file); Files.createFile(file);
} }
Files.write(file, defaultConfigContent().getBytes()); Files.write(file, defaultConfigContent().getBytes());
} catch (IOException e) { } catch (IOException e) {
@ -113,4 +113,12 @@ public class Config {
public String getDiscordBoatsToken() { public String getDiscordBoatsToken() {
return config.getJSONObject("Tokens").getString("DiscordBoats"); return config.getJSONObject("Tokens").getString("DiscordBoats");
} }
public String getYetAnotherBotListToken() {
return config.getJSONObject("Tokens").getString("YetAnotherBotList");
}
public String getDiscordExtremeListToken() {
return config.getJSONObject("Tokens").getString("DiscordExtremeList");
}
} }

View file

@ -24,7 +24,7 @@ public class CommandListener extends ListenerAdapter {
public void onMessageReceived(MessageReceivedEvent event) { public void onMessageReceived(MessageReceivedEvent event) {
if (event.isFromType(ChannelType.TEXT)) { if (event.isFromType(ChannelType.TEXT)) {
if (!event.getAuthor().isBot()) { if (!event.getAuthor().isBot()) {
String[] prefixes = {rethink.getUserPrefix(event.getAuthor().getId()), rethink.getServerPrefix(event.getGuild().getId()), event.getGuild().getSelfMember().getAsMention()+" ", event.getGuild().getSelfMember().getAsMention()}; String[] prefixes = {rethink.getUserPrefix(event.getAuthor().getId()), rethink.getGuildPrefix(event.getGuild().getId()), event.getGuild().getSelfMember().getAsMention()+" ", event.getGuild().getSelfMember().getAsMention()};
for (String prefix : prefixes) { for (String prefix : prefixes) {
if (event.getMessage().getContentRaw().startsWith(prefix)) { if (event.getMessage().getContentRaw().startsWith(prefix)) {
handler.handle(event, rethink, prefix); handler.handle(event, rethink, prefix);

View file

@ -34,7 +34,7 @@ public class GuildListener extends ListenerAdapter {
} }
} }
rethink.insertServer(event.getGuild().getId()); rethink.insertGuild(event.getGuild().getId());
EmbedBuilder builder = new EmbedBuilder(); EmbedBuilder builder = new EmbedBuilder();
event.getJDA().getTextChannelById("475722540140986369").sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder) event.getJDA().getTextChannelById("475722540140986369").sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder)
.setTitle("Joined Server") .setTitle("Joined Server")

View file

@ -27,7 +27,7 @@ public class MentionListener extends ListenerAdapter {
.addField("Users", String.valueOf(event.getJDA().getUsers().size()), false) .addField("Users", String.valueOf(event.getJDA().getUsers().size()), false)
.addField("Guilds", String.valueOf(event.getJDA().getGuilds().size()), false) .addField("Guilds", String.valueOf(event.getJDA().getGuilds().size()), false)
.addField("Prefix (User)", rethink.getUserPrefix(event.getAuthor().getId()), false) .addField("Prefix (User)", rethink.getUserPrefix(event.getAuthor().getId()), false)
.addField("Prefix (Guild)", rethink.getServerPrefix(event.getGuild().getId()), false); .addField("Prefix (Guild)", rethink.getGuildPrefix(event.getGuild().getId()), false);
event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).build()).queue(); event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).build()).queue();
} }
} }

View file

@ -29,7 +29,7 @@ public class ReadyListener extends ListenerAdapter {
} }
} }
for (Guild g : event.getJDA().getGuilds()) { for (Guild g : event.getJDA().getGuilds()) {
rethink.insertServer(g.getId()); rethink.insertGuild(g.getId());
} }
new BotList(config).post(); new BotList(config).post();

View file

@ -23,6 +23,8 @@ public class BotList {
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 DiscordBestBots = "https://discordsbestbots.xyz/api/bots/637002314162372639/stats"; private static String DiscordBestBots = "https://discordsbestbots.xyz/api/bots/637002314162372639/stats";
private static String DiscordBoats = "https://discord.boats/api/bot/637002314162372639"; 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://discordextremelist.xyz/api/bot/637002314162372639";
private Config config; private Config config;
@ -34,6 +36,7 @@ public class BotList {
if (Files.notExists(Paths.get("./DEBUG"))) { if (Files.notExists(Paths.get("./DEBUG"))) {
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
json.put("server_count", Hadder.shardManager.getGuilds().size()); json.put("server_count", Hadder.shardManager.getGuilds().size());
json.put("guildCount", Hadder.shardManager.getGuilds().size());
json.put("guilds", Hadder.shardManager.getGuilds().size()); json.put("guilds", Hadder.shardManager.getGuilds().size());
json.put("users", Hadder.shardManager.getUsers().size()); json.put("users", Hadder.shardManager.getUsers().size());
@ -113,6 +116,35 @@ public class BotList {
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
// Yet Another Bot List
Request yetanotherbotlist = new Request.Builder()
.url(YetAnotherBotList)
.post(body)
.addHeader("Authorization", config.getYetAnotherBotListToken())
.build();
try {
new OkHttpClient().newCall(yetanotherbotlist).execute().close();
System.out.println("Successfully posted count to Yet Another Bot List!");
} catch (IOException e) {
e.printStackTrace();
}
// Discord Extreme List
Request discordextremelist = new Request.Builder()
.url(DiscordExtremeList)
.post(body)
.addHeader("Authorizaion", config.getDiscordExtremeListToken())
.build();
try {
new OkHttpClient().newCall(discordextremelist).execute().close();
} catch (IOException e) {
e.printStackTrace();
}
} }
} }