Hadder/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java
2019-12-02 21:13:20 +01:00

185 lines
14 KiB
Java

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.EventWaiter;
import com.bbn.hadder.utils.MessageEditor;
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.entities.TextChannel;
public class RulesCommand implements Command {
@Override
public void executed(String[] args, CommandEvent event) {
if (event.getMember().hasPermission(Permission.MANAGE_SERVER) || event.getConfig().getOwners().toString().contains(event.getAuthor().getId())) {
if (event.getGuild().getSelfMember().hasPermission(Permission.MANAGE_ROLES)) {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO)
.setTitle("Set up rules")
.setDescription("Welcome to the Hadder rules setup. Please mention the channel in which I should send the rules. Your message should look like: #rules or #verify.")
.build()).queue();
new EventWaiter().newOnMessageEventWaiter(event1 -> {
if (event1.getMessage().getMentionedChannels().size() == 1) {
try {
TextChannel channel = event1.getMessage().getMentionedChannels().get(0);
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);
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) {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR)
.setTitle("Channel not found")
.setDescription("I can't find the specified channel. Please start the setup again.")
.build()).queue();
}
} else {
try {
TextChannel channel = event1.getGuild().getTextChannelsByName(event1.getMessage().getContentRaw(), true).get(0);
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);
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) {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR)
.setTitle("Channel not found")
.setDescription("I can't find the specified channel. Please start the setup again.")
.build()).queue();
}
}
}, event.getJDA(), event.getAuthor());
} else {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_SELF_PERMISSION).build()).queue();
}
} else {
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_PERMISSION).build()).queue();
}
}
@Override
public String[] labels() {
return new String[]{"rules", "rule", "setup"};
}
@Override
public String description() {
return "Setup the rules on your Discord server";
}
@Override
public String usage() {
return "";
}
}