Rules Command feature

This commit is contained in:
GregTCLTK 2019-12-02 18:38:43 +01:00
parent 03b5c332a5
commit e7e55e44ba
No known key found for this signature in database
GPG key ID: A91BADE5C070FF67
6 changed files with 153 additions and 137 deletions

View file

@ -2,22 +2,23 @@
"Owners": "Owners":
[], [],
"Database":{"IP":"", "Database":{"IP":"",
"Port":6775, "Port": 6775,
"DBName":"", "DBName": "",
"Username":"", "Username": "",
"Password":""}, "Password": ""},
"Tokens":{ "Tokens": {
"BotToken":"", "BotToken": "",
"Giphy":"", "Giphy": "",
"GitHub": "", "GitHub": "",
"MythicalBotList":"", "MythicalBotList": "",
"BotsForDiscord":"", "BotsForDiscord": "",
"DiscordBotList":"", "DiscordBotList": "",
"DiscordBestBots":"", "DiscordBestBots": "",
"DiscordBoats": "", "DiscordBoats": "",
"YetAnotherBotList": "", "YetAnotherBotList": "",
"DiscordExtremeList": "", "DiscordExtremeList": "",
"DiscordBotReviews": "", "DiscordBotReviews": "",
"DiscordBots": "" "DiscordBots": "",
"BotListSpace": ""
} }
} }

View file

@ -150,9 +150,11 @@ public class Rethink {
this.insert("user", r.hashMap("id", id).with("prefix", "h.")); this.insert("user", r.hashMap("id", id).with("prefix", "h."));
} }
public void updateRules(String guild_id, String message_id, String role_id) { public void updateRules(String guild_id, String message_id, String role_id, String accept_emote, String decline_emote) {
this.update("server", guild_id, "message_id", message_id); this.update("server", guild_id, "message_id", message_id);
this.update("server", guild_id, "role_id", role_id); this.update("server", guild_id, "role_id", role_id);
this.update("server", guild_id, "accept_emote", accept_emote);
this.update("server", guild_id, "decline_emote", decline_emote);
} }
public String getRulesMID(String guild_id) { public String getRulesMID(String guild_id) {
@ -163,6 +165,14 @@ public class Rethink {
return (String) this.get("server", "id", guild_id, "role_id"); return (String) this.get("server", "id", guild_id, "role_id");
} }
public String getRulesAEmote(String guild_id) {
return (String) this.get("server", "id", guild_id, "accept_emote");
}
public String getRulesDEmote(String guild_id) {
return (String) this.get("server", "id", guild_id, "decline_emote");
}
public void setInviteDetection(String guild_id, boolean b) { public void setInviteDetection(String guild_id, boolean b) {
try { try {
r.table("server").get(guild_id).update(r.hashMap("invite_detect", b)).run(conn); r.table("server").get(guild_id).update(r.hashMap("invite_detect", b)).run(conn);

View file

@ -14,7 +14,7 @@ public class InviteDetectCommand implements Command {
@Override @Override
public void executed(String[] args, CommandEvent event) { public void executed(String[] args, CommandEvent event) {
if (args.length == 1) { if (args.length == 1) {
if (event.getMember().hasPermission(Permission.MANAGE_SERVER)) { if (event.getMember().hasPermission(Permission.MANAGE_SERVER) || event.getConfig().getOwners().toString().contains(event.getAuthor().getId())) {
String opinion = args[0].toLowerCase(); String opinion = args[0].toLowerCase();
switch (opinion) { switch (opinion) {
case "on": case "on":

View file

@ -9,9 +9,11 @@ import com.bbn.hadder.commands.CommandEvent;
import com.bbn.hadder.utils.EventWaiter; import com.bbn.hadder.utils.EventWaiter;
import com.bbn.hadder.utils.MessageEditor; import com.bbn.hadder.utils.MessageEditor;
import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.Emote;
import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.Role; import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.entities.TextChannel; import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
public class RulesCommand implements Command { public class RulesCommand implements Command {
@ -27,64 +29,7 @@ public class RulesCommand implements Command {
if (event1.getMessage().getMentionedChannels().size() == 1) { if (event1.getMessage().getMentionedChannels().size() == 1) {
try { try {
TextChannel channel = event1.getMessage().getMentionedChannels().get(0); TextChannel channel = event1.getMessage().getMentionedChannels().get(0);
if (channel.getGuild().getId().equals(event1.getGuild().getId())) { createRules(event, event1, channel);
if (event.getGuild().getSelfMember().hasPermission(channel, Permission.MESSAGE_WRITE)) {
event1.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.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)
.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 -> {
if (event.getMessage().getMentionedRoles().size() == 1) {
Role role = event.getMessage().getMentionedRoles().get(0);
if (event3.getGuild().getSelfMember().canInteract(role)) {
event3.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.setTitle("The role has been successfully set to " + role.getName() + ".")
.build()).queue();
Message rules = channel.sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.setTitle("Rules")
.setDescription(message)
.build()).complete();
rules.addReaction("").queue();
rules.addReaction("").queue();
event.getRethink().updateRules(event.getGuild().getId(), rules.getId(), role.getId());
} else {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_SELF_PERMISSION).build()).queue();
}
} else {
Role role = event3.getGuild().getRolesByName(event3.getMessage().getContentStripped(), true).get(0);
if (event3.getGuild().getSelfMember().canInteract(role)) {
event3.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.setTitle("The role has been successfully set to " + role.getName() + ".")
.build()).queue();
Message rules = channel.sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.setTitle("Rules")
.setDescription(message)
.build()).complete();
rules.addReaction("").queue();
rules.addReaction("").queue();
event.getRethink().updateRules(event.getGuild().getId(), rules.getId(), role.getId());
} else {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_SELF_PERMISSION).build()).queue();
}
}
}, event.getJDA(), event.getAuthor());
}, event.getJDA(), event.getAuthor());
} else {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_PERMISSION)
.build()).queue();
}
} else {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING)
.setTitle("Wrong Guild")
.setDescription("The mentioned channel must be on this guid!")
.build()).queue();
}
} catch (Exception e) { } catch (Exception e) {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR) event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR)
.setTitle("Channel not found") .setTitle("Channel not found")
@ -94,64 +39,7 @@ public class RulesCommand implements Command {
} else { } else {
try { try {
TextChannel channel = event1.getGuild().getTextChannelsByName(event1.getMessage().getContentRaw(), true).get(0); TextChannel channel = event1.getGuild().getTextChannelsByName(event1.getMessage().getContentRaw(), true).get(0);
if (channel.getGuild().getId().equals(event1.getGuild().getId())) { createRules(event, event1, channel);
if (event.getGuild().getSelfMember().hasPermission(channel, Permission.MESSAGE_WRITE)) {
event1.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.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)
.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 -> {
if (event.getMessage().getMentionedRoles().size() == 1) {
Role role = event.getMessage().getMentionedRoles().get(0);
if (event3.getGuild().getSelfMember().canInteract(role)) {
event3.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.setTitle("The role has been successfully set to " + role.getName() + ".")
.build()).queue();
Message rules = channel.sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.setTitle("Rules")
.setDescription(message)
.build()).complete();
rules.addReaction("").queue();
rules.addReaction("").queue();
event.getRethink().updateRules(event.getGuild().getId(), rules.getId(), role.getId());
} else {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_SELF_PERMISSION).build()).queue();
}
} else {
Role role = event3.getGuild().getRolesByName(event3.getMessage().getContentStripped(), true).get(0);
if (event3.getGuild().getSelfMember().canInteract(role)) {
event3.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.setTitle("The role has been successfully set to " + role.getName() + ".")
.build()).queue();
Message rules = channel.sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.setTitle("Rules")
.setDescription(message)
.build()).complete();
rules.addReaction("").queue();
rules.addReaction("").queue();
event.getRethink().updateRules(event.getGuild().getId(), rules.getId(), role.getId());
} else {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_SELF_PERMISSION).build()).queue();
}
}
}, event.getJDA(), event.getAuthor());
}, event.getJDA(), event.getAuthor());
} else {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_PERMISSION)
.build()).queue();
}
} else {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING)
.setTitle("Wrong Guild")
.setDescription("The mentioned channel must be on this guid!")
.build()).queue();
}
} catch (Exception e) { } catch (Exception e) {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR) event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR)
.setTitle("Channel not found") .setTitle("Channel not found")
@ -168,6 +56,111 @@ public class RulesCommand implements Command {
} }
} }
public void createRules(CommandEvent event, GuildMessageReceivedEvent event1, TextChannel channel) {
if (channel.getGuild().getId().equals(event1.getGuild().getId())) {
if (event.getGuild().getSelfMember().hasPermission(channel, Permission.MESSAGE_WRITE)) {
event1.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.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)
.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 -> {
if (event.getMessage().getMentionedRoles().size() == 1) {
Role role = event.getMessage().getMentionedRoles().get(0);
setRole(event, channel, message, event3, role);
} else {
Role role = event3.getGuild().getRolesByName(event3.getMessage().getContentStripped(), true).get(0);
setRole(event, channel, message, event3, role);
}
}, event.getJDA(), event.getAuthor());
}, event.getJDA(), event.getAuthor());
} else {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_PERMISSION)
.build()).queue();
}
} else {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING)
.setTitle("Wrong Guild")
.setDescription("The mentioned channel must be on this guid!")
.build()).queue();
}
}
public void setRole(CommandEvent event, TextChannel channel, String message, GuildMessageReceivedEvent event3, Role role) {
if (event3.getGuild().getSelfMember().canInteract(role)) {
event3.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.setTitle("Custom Accept Emote")
.setDescription("The role has been successfully set to " + role.getName() + ". Now send me the emote on which your user should react to to get verified.")
.build()).queue();
new EventWaiter().newOnMessageEventWaiter(event4 -> {
if (event4.getMessage().getEmotes().size() == 1) {
Emote aemote = event4.getMessage().getEmotes().get(0);
event4.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.setTitle("Custom Decline Emote")
.setDescription("The first emote has been successfully set to " + aemote + ". Please send me now the decline emote.")
.build()).queue();
new EventWaiter().newOnMessageEventWaiter(event5 -> {
Emote demote = event5.getMessage().getEmotes().get(0);
Message rules = channel.sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.setTitle("Rules")
.setDescription(message)
.build()).complete();
try {
rules.addReaction(aemote).queue();
rules.addReaction(demote).queue();
event5.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.setTitle("Successfully set the rules")
.setDescription("I successfully send the rules in " + channel.getAsMention() + ".")
.build()).queue();
} catch (Exception e) {
event5.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR)
.setTitle("Error")
.setDescription("I can not access the custom emote(s),")
.build()).queue();
e.printStackTrace();
}
event.getRethink().updateRules(event.getGuild().getId(), rules.getId(), role.getId(), aemote.toString(), demote.toString());
}, event.getJDA(), event.getAuthor());
} else {
String aemote = event4.getMessage().getContentRaw();
event4.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.setTitle("Custom Decline Emote")
.setDescription("The first emote has been successfully set. Please send me now the decline emote.")
.build()).queue();
new EventWaiter().newOnMessageEventWaiter(event5 -> {
String demote = event5.getMessage().getContentRaw();
Message rules = channel.sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.setTitle("Rules")
.setDescription(message)
.build()).complete();
try {
rules.addReaction(aemote).queue();
rules.addReaction(demote).queue();
event5.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.setTitle("Successfully set the rules")
.setDescription("I successfully send the rules in " + channel.getAsMention() + ".")
.build()).queue();
} catch (Exception e) {
event5.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR)
.setTitle("Error")
.setDescription("The given emote can't be used.")
.build()).queue();
e.printStackTrace();
}
event.getRethink().updateRules(event.getGuild().getId(), rules.getId(), role.getId(), aemote, demote);
}, event.getJDA(), event.getAuthor());
}
}, event.getJDA(), event.getAuthor());
} else {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_SELF_PERMISSION).build()).queue();
}
}
@Override @Override
public String[] labels() { public String[] labels() {
return new String[]{"rules", "rule", "setup"}; return new String[]{"rules", "rule", "setup"};

View file

@ -5,7 +5,6 @@ package com.bbn.hadder.listener;
*/ */
import com.bbn.hadder.Rethink; import com.bbn.hadder.Rethink;
import com.bbn.hadder.utils.MessageEditor;
import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.ChannelType; import net.dv8tion.jda.api.entities.ChannelType;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.events.message.MessageReceivedEvent;

View file

@ -20,18 +20,31 @@ public class RulesListener extends ListenerAdapter {
@Override @Override
public void onMessageReactionAdd(MessageReactionAddEvent event) { public void onMessageReactionAdd(MessageReactionAddEvent event) {
if (event.getMessageId().equals(rethink.getRulesMID(event.getGuild().getId())) && !event.getMember().getUser().isBot()) { if (event.getMessageId().equals(rethink.getRulesMID(event.getGuild().getId())) && !event.getMember().getUser().isBot()) {
if (event.getReactionEmote().getEmoji().equals("")) { if (event.getReactionEmote().isEmote()) {
event.getGuild().addRoleToMember(event.getMember(), event.getGuild().getRoleById(rethink.getRulesRID(event.getGuild().getId()))).reason("Accepted rules").queue(); if (rethink.getRulesAEmote(event.getGuild().getId()).contains(event.getReactionEmote().getId())) {
} else if (event.getReactionEmote().getEmoji().equals("") && event.getGuild().getSelfMember().canInteract(event.getMember())) { event.getGuild().addRoleToMember(event.getMember(), event.getGuild().getRoleById(rethink.getRulesRID(event.getGuild().getId()))).reason("Accepted rules").queue();
event.getReaction().removeReaction().queue(); } else if (rethink.getRulesDEmote(event.getGuild().getId()).contains(event.getReactionEmote().getId())) {
event.getMember().kick().reason("Declined the rules"); event.getReaction().removeReaction(event.getUser()).queue();
if (event.getGuild().getSelfMember().canInteract(event.getMember())) {
event.getMember().kick().reason("Declined the rules");
}
}
} else {
if (event.getReactionEmote().getEmoji().equals(rethink.getRulesAEmote(event.getGuild().getId()))) {
event.getGuild().addRoleToMember(event.getMember(), event.getGuild().getRoleById(rethink.getRulesRID(event.getGuild().getId()))).reason("Accepted rules").queue();
} else if (event.getReactionEmote().getEmoji().equals(rethink.getRulesDEmote(event.getGuild().getId()))) {
event.getReaction().removeReaction(event.getUser()).queue();
if (event.getGuild().getSelfMember().canInteract(event.getMember())) {
event.getMember().kick().reason("Declined the rules");
}
}
} }
} }
} }
@Override @Override
public void onMessageReactionRemove(MessageReactionRemoveEvent event) { public void onMessageReactionRemove(MessageReactionRemoveEvent event) {
if (event.getMessageId().equals(rethink.getRulesMID(event.getGuild().getId())) && !event.getMember().getUser().isBot() && event.getReactionEmote().getEmoji().equals("")) { if (event.getMessageId().equals(rethink.getRulesMID(event.getGuild().getId())) && !event.getMember().getUser().isBot()) {
event.getGuild().removeRoleFromMember(event.getMember(), event.getGuild().getRoleById(rethink.getRulesRID(event.getGuild().getId()))).reason("Withdrawal of the acceptance of the rules").queue(); event.getGuild().removeRoleFromMember(event.getMember(), event.getGuild().getRoleById(rethink.getRulesRID(event.getGuild().getId()))).reason("Withdrawal of the acceptance of the rules").queue();
} }
} }