diff --git a/pom.xml b/pom.xml index 6839a25..fcd89b3 100644 --- a/pom.xml +++ b/pom.xml @@ -57,6 +57,12 @@ discord-webhooks 0.1.8 + + org.kohsuke + github-api + 1.99 + + diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index f44cf0e..dcb566e 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -68,6 +68,7 @@ public class Hadder { new EroticCommand(), new RoleCommand(), new RulesCommand(), + new FeedbackCommand(), new LinkCommand()), config); builder.addEventListeners( diff --git a/src/main/java/com/bbn/hadder/commands/misc/FeedbackCommand.java b/src/main/java/com/bbn/hadder/commands/misc/FeedbackCommand.java new file mode 100644 index 0000000..6fc8e9a --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/misc/FeedbackCommand.java @@ -0,0 +1,64 @@ +package com.bbn.hadder.commands.misc; + +/* + * @author Skidder / GregTCLTK + */ + +import com.bbn.hadder.commands.Command; +import com.bbn.hadder.commands.CommandEvent; +import com.bbn.hadder.utils.EventWaiter; +import com.bbn.hadder.utils.MessageEditor; +import net.dv8tion.jda.api.EmbedBuilder; +import org.kohsuke.github.GHIssue; +import org.kohsuke.github.GHRepository; +import org.kohsuke.github.GitHub; + +import java.io.IOException; + +public class FeedbackCommand implements Command { + + @Override + public void executed(String[] args, CommandEvent event) { + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder() + .setTitle("Feedback Topic") + .setDescription("Please send me the feedback topic.")) + .build()).queue(); + new EventWaiter().newOnMessageEventWaiter(event1 -> { + String title = event1.getMessage().getContentDisplay(); + event1.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder() + .setTitle("Feedback Description") + .setDescription("Please send me the feedback description now.")) + .build()).queue(); + new EventWaiter().newOnMessageEventWaiter(event2 -> { + String description = event2.getMessage().getContentDisplay(); + try { + GitHub connection = GitHub.connectUsingOAuth(event.getConfig().getGitHubToken()); + GHRepository Hadder = connection.getOrganization("BigBotNetwork").getRepository("Hadder"); + GHIssue issue = Hadder.createIssue(title).body("Feedback by " + event.getAuthor().getAsTag() + "
" + description).create(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder() + .setTitle("Feedback successfully sent")) + .setDescription(issue.getHtmlUrl().toString()) + .build()).queue(); + } catch (IOException e) { + e.printStackTrace(); + } + }, event.getJDA(), event.getAuthor()); + }, event.getJDA(), event.getAuthor()); + + } + + @Override + public String[] labels() { + return new String[]{"feedback"}; + } + + @Override + public String description() { + return "Sends feedback directly to the developers."; + } + + @Override + public String usage() { + return ""; + } +} diff --git a/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java index 468d8a6..67d4622 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java @@ -27,17 +27,18 @@ public class RulesCommand implements Command { new EventWaiter().newOnMessageEventWaiter(event1 -> { if (event1.getMessage().getMentionedChannels().size() > 0) { TextChannel channel = event1.getMessage().getMentionedChannels().get(0); - event1.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder() - .setTitle("Rules") - .setDescription("The channel was successfully set to " + channel.getName() + ". Please send me the rules now.")) - .build()).queue(); - new EventWaiter().newOnMessageEventWaiter(event2 -> { - String message = event2.getMessage().getContentDisplay(); - event2.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder() - .setTitle("Role to assign")) - .setDescription("The rules were successfully set. Please send me the name of the role which the user receives after he accepted the rules.") + if (channel.getGuild().getId().equals(event1.getGuild().getId())) { + event1.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder() + .setTitle("Rules") + .setDescription("The channel was successfully set to " + channel.getName() + ". Please send me the rules now.")) .build()).queue(); - new EventWaiter().newOnMessageEventWaiter(event3 -> { + new EventWaiter().newOnMessageEventWaiter(event2 -> { + String message = event2.getMessage().getContentDisplay(); + event2.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder() + .setTitle("Role to assign")) + .setDescription("The rules were successfully set. Please send me the name of the role which the user receives after he accepted the rules.") + .build()).queue(); + new EventWaiter().newOnMessageEventWaiter(event3 -> { Role role = event3.getGuild().getRolesByName(event3.getMessage().getContentRaw(), true).get(0); if (event3.getGuild().getSelfMember().canInteract(role)) { event3.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder() @@ -54,8 +55,14 @@ public class RulesCommand implements Command { EmbedBuilder builder = new EmbedBuilder(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_SELF_PERMISSION, builder).build()).queue(); } + }, event.getJDA(), event.getAuthor()); }, event.getJDA(), event.getAuthor()); - }, event.getJDA(), event.getAuthor()); + } else { + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, new EmbedBuilder() + .setTitle("Wrong Guild") + .setDescription("The mentioned channel must be on this guid!")) + .build()).queue(); + } } else { event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, new EmbedBuilder() .setTitle("No Channel mentioned")) diff --git a/src/main/java/com/bbn/hadder/core/Config.java b/src/main/java/com/bbn/hadder/core/Config.java index d418dce..69ca2aa 100644 --- a/src/main/java/com/bbn/hadder/core/Config.java +++ b/src/main/java/com/bbn/hadder/core/Config.java @@ -94,6 +94,10 @@ public class Config { return config.getJSONObject("Tokens").getString("Giphy"); } + public String getGitHubToken() { + return config.getJSONObject("Tokens").getString("GitHub"); + } + public String getMythicalBotListToken() { return config.getJSONObject("Tokens").getString("MythicalBotList"); }