diff --git a/pom.xml b/pom.xml index 365a5b9..b6536b8 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ Hadder Hadder - 1.0-SNAPSHOT + 0.3-ALPHA Hadder diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index fad99a7..6f315ed 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -3,8 +3,7 @@ package com.bbn.hadder; import com.bbn.hadder.commands.TestCommand; import com.bbn.hadder.commands.fun.GifCommand; import com.bbn.hadder.commands.general.PingCommand; -import com.bbn.hadder.commands.moderation.BanCommand; -import com.bbn.hadder.commands.moderation.KickCommand; +import com.bbn.hadder.commands.moderation.*; import com.bbn.hadder.commands.owner.ShutdownCommand; import com.bbn.hadder.commands.settings.PrefixCommand; import com.bbn.hadder.core.CommandHandler; @@ -38,8 +37,7 @@ public class Hadder { e.printStackTrace(); } - Rethink.connect(); - + Rethink.connect(); DefaultShardManagerBuilder builder = new DefaultShardManagerBuilder(); @@ -48,14 +46,12 @@ public class Hadder { builder.setToken(config.getString("Token")); - CommandHandler.cmdlist.addAll(List.of(new TestCommand(), new BanCommand(), new PrefixCommand(), new ShutdownCommand(), new KickCommand(), new PingCommand(), new GifCommand())); + CommandHandler.cmdlist.addAll(List.of(new TestCommand(), new BanCommand(), new PrefixCommand(), new ShutdownCommand(), new KickCommand(), new PingCommand(), new GifCommand(), new ClearCommand())); builder.addEventListeners( new MentionListener(), new PrivateMessageListener(), new CommandListener(), - new GuildJoinListener(), - new GuildLeaveListener(), new GuildListener(), new ReadyListener()); diff --git a/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java b/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java index e9ae1a6..cbcd8fe 100644 --- a/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java +++ b/src/main/java/com/bbn/hadder/commands/fun/GifCommand.java @@ -5,6 +5,8 @@ package com.bbn.hadder.commands.fun; */ import com.bbn.hadder.commands.Command; +import com.bbn.hadder.utils.MessageEditor; +import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import okhttp3.OkHttpClient; import okhttp3.Request; @@ -19,36 +21,41 @@ import java.nio.file.Paths; import java.util.Random; public class GifCommand implements Command { + @Override public void executed(String[] args, MessageReceivedEvent event) { - String url; - JSONArray array; - String query = ""; - for(String arg : args) { - query += arg.toLowerCase() + "+"; - query = query.substring(0, query.length()-1); - } + if (args.length > 0) { + StringBuilder query = new StringBuilder(); + for (String arg : args) { + query.append(arg.toLowerCase()).append("+"); + query = new StringBuilder(query.substring(0, query.length() - 1)); + } - File configfile = new File("./config.json"); + File configfile = new File("./config.json"); - JSONObject config = null; - try { - config = new JSONObject(new String(Files.readAllBytes(Paths.get(configfile.toURI())))); - } catch (IOException e) { - e.printStackTrace(); - } - OkHttpClient caller = new OkHttpClient(); - Request request = new Request.Builder().url("http://api.giphy.com/v1/gifs/search?q=" + query + "&api_key=" + config.getString("Giphy")).build(); - try { - Random rand = new Random(); - Response response = caller.newCall(request).execute(); - JSONObject json = new JSONObject(response.body().string()); - array = json.getJSONArray("data"); - int gifIndex = rand.nextInt(array.length()); - url = (String) array.getJSONObject(gifIndex).get("url"); - event.getTextChannel().sendMessage(url).queue(); - } catch (Exception e) { - event.getTextChannel().sendMessage("Meddl Bruder. Ich hab heut leider kein gif für dich").queue(); + JSONObject config = null; + try { + config = new JSONObject(new String(Files.readAllBytes(Paths.get(configfile.toURI())))); + } catch (IOException e) { + e.printStackTrace(); + } + OkHttpClient caller = new OkHttpClient(); + Request request = new Request.Builder().url("http://api.giphy.com/v1/gifs/search?q=" + query + "&api_key=" + config.getString("Giphy")).build(); + try { + Random rand = new Random(); + Response response = caller.newCall(request).execute(); + JSONObject json = new JSONObject(response.body().string()); + JSONArray array = json.getJSONArray("data"); + int gifIndex = rand.nextInt(array.length()); + String url = array.getJSONObject(gifIndex).get("url").toString(); + event.getTextChannel().sendMessage(url).queue(); + } catch (Exception e) { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.ERROR, builder).setTitle("Error").setDescription("Please try again with another term.").build()).queue(); + } + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You have to write at least one search term!").build()).queue(); } } diff --git a/src/main/java/com/bbn/hadder/commands/moderation/ClearCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/ClearCommand.java new file mode 100644 index 0000000..58059e7 --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/moderation/ClearCommand.java @@ -0,0 +1,62 @@ +package com.bbn.hadder.commands.moderation; + +/* + * @author Skidder / GregTCLTK + */ + +import com.bbn.hadder.commands.Command; +import com.bbn.hadder.utils.MessageEditor; +import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.Permission; +import net.dv8tion.jda.api.entities.Message; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +import static java.time.temporal.ChronoUnit.DAYS; + +public class ClearCommand implements Command { + + @Override + public void executed(String[] args, MessageReceivedEvent event) { + if (args.length > 0) { + if (event.getGuild().getMemberById(event.getAuthor().getId()).hasPermission(Permission.MESSAGE_MANAGE) || event.getGuild().getOwnerId().equals(event.getAuthor().getId())) { + if (event.getGuild().getMemberById(event.getJDA().getSelfUser().getId()).hasPermission(Permission.MESSAGE_MANAGE)) { + try { + int nbToDelete = Integer.parseInt(args[0]); + if(nbToDelete < 1 || nbToDelete > 200) { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You have to choose a number between 1 and 200!").build()).queue(); + return; + } + List history = event.getTextChannel().getHistory().retrievePast(nbToDelete +1).complete(); + List msgToDelete = new ArrayList<>(); + msgToDelete.addAll(history); + event.getTextChannel().deleteMessages(msgToDelete).queue(); + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setDescription("Successfully deleted " + nbToDelete + " messages.").build()).queue(); + } catch (NumberFormatException e) { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You have to specify a number!").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(); + } + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You have to specify a number!").build()).queue(); + } + } + + @Override + public String[] labels() { + return new String[]{"clear"}; + } +} diff --git a/src/main/java/com/bbn/hadder/commands/owner/ShutdownCommand.java b/src/main/java/com/bbn/hadder/commands/owner/ShutdownCommand.java index 6c40c8c..926ad15 100644 --- a/src/main/java/com/bbn/hadder/commands/owner/ShutdownCommand.java +++ b/src/main/java/com/bbn/hadder/commands/owner/ShutdownCommand.java @@ -4,25 +4,11 @@ package com.bbn.hadder.commands.owner; * @author Skidder / GregTCLTK */ -import com.bbn.hadder.Hadder; -import com.bbn.hadder.Rethink; import com.bbn.hadder.commands.Command; import com.bbn.hadder.utils.MessageEditor; import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.JDA; -import net.dv8tion.jda.api.JDABuilder; -import net.dv8tion.jda.api.OnlineStatus; -import net.dv8tion.jda.api.entities.Activity; -import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.hooks.ListenerAdapter; -import org.json.JSONObject; -import javax.annotation.Nonnull; -import javax.security.auth.login.LoginException; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; public class ShutdownCommand implements Command { @Override