Skip to content

Commit

Permalink
The costume channel is now taken into account by the command. [#126]
Browse files Browse the repository at this point in the history
  • Loading branch information
ShowMeYourSkil committed Jun 29, 2021
1 parent 337bf7c commit 3634bf2
Show file tree
Hide file tree
Showing 4 changed files with 331 additions and 0 deletions.
83 changes: 83 additions & 0 deletions src/main/java/de/progen_bot/commands/moderator/CommandWarn.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package de.progen_bot.commands.moderator;

import java.awt.Color;
import java.time.Instant;
import java.util.List;
import java.util.Arrays;

import de.progen_bot.command.CommandHandler;
import de.progen_bot.command.CommandManager.ParsedCommandString;
import de.progen_bot.core.Main;
import de.progen_bot.db.dao.warnlist.WarnListDaoImpl;
import de.progen_bot.db.entities.config.GuildConfiguration;
import de.progen_bot.permissions.AccessLevel;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.MessageEmbed;
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import org.w3c.dom.Text;


public class CommandWarn extends CommandHandler {
private static final String WARN = "WARN";
private static final String EXECUTOR = "Executor";
private static final String VICTIM = "Victim";
private static final String REASON = "Reason";
private static final String CHANNEL = "Channel";

public CommandWarn() {
super("warn", "warn <user> <reason>", "Warn a user");
}

private MessageEmbed getWarnEmbed(MessageReceivedEvent event, String reason){
return new EmbedBuilder()
.setColor(Color.ORANGE)
.setTitle(WARN)
.addField(VICTIM, event.getMessage().getMentionedUsers().get(0).getAsMention(), true)
.addField(EXECUTOR, event.getMember().getAsMention(), true)
.setDescription(event.getMessageId())
.addField(REASON, reason, false)
.addField(CHANNEL, event.getTextChannel().getAsMention(), false)
.setTimestamp(Instant.now()).build();
}

@Override
public void execute(ParsedCommandString parsedCommand, MessageReceivedEvent event, GuildConfiguration configuration) {

JDA jda = Main.getJda();

TextChannel warnChannel = jda.getTextChannelById(configuration.getLogChannelID());
Member warned;
if (event.getMessage().getMentionedUsers().size() == 1) {
warned = event.getMessage().getMentionedMembers().get(0);
} else {
event.getChannel().sendMessage(new EmbedBuilder().setColor(Color.red).setDescription("No user found").build())
.queue();
return;
}

if (parsedCommand.getArgs().length <= 1) {
event.getChannel().sendMessage(new EmbedBuilder().setColor(Color.red).setDescription("No reason found").build())
.queue();
return;
}

String reason = String.join(" ", Arrays.copyOfRange(parsedCommand.getArgs(), 1, parsedCommand.getArgs().length));

final MessageEmbed eb = getWarnEmbed(event, reason);
if(eb == null)
return;

warnChannel.sendMessage(eb).queue();

WarnListDaoImpl dao = new WarnListDaoImpl();
dao.insertWarn(warned, reason);
}

@Override
public AccessLevel getAccessLevel() {
return AccessLevel.MODERATOR;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
package de.progen_bot.commands.moderator;

import de.progen_bot.command.CommandHandler;
import de.progen_bot.command.CommandManager;
import de.progen_bot.core.Main;
import de.progen_bot.db.dao.warnlist.WarnListDaoImpl;
import de.progen_bot.db.entities.config.GuildConfiguration;
import de.progen_bot.permissions.AccessLevel;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.MessageEmbed;
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;

import java.awt.Color;
import java.time.Instant;
import java.util.Arrays;
import java.util.List;

public class CommandWarnDelete extends CommandHandler {
private static final String DELETE = "Warn Delete";
private static final String EXECUTOR = "Executor";
private static final String PARDON = "Member";
private static final String WARN = "Warn";
public CommandWarnDelete() {
super("warndelete", "warndelete <user> <reason>", "Delete warn of a user");
}

private MessageEmbed getDeleteEmbed(MessageReceivedEvent event, String reason){
return new EmbedBuilder()
.setColor(Color.green)
.setTitle(DELETE)
.addField(PARDON, event.getMessage().getMentionedUsers().get(0).getAsMention(), true)
.addField(EXECUTOR, event.getMember().getAsMention(), true)
.setDescription(event.getMessageId())
.addField(WARN, reason, false)
.setTimestamp(Instant.now())
.build();
}


@Override
public void execute(CommandManager.ParsedCommandString parsedCommand, MessageReceivedEvent event,
GuildConfiguration configuration) {


JDA jda = Main.getJda();
TextChannel warnDeleteChannel = jda.getTextChannelById(configuration.getLogChannelID());

if (event.getMember() == null)
return;

if (event.getMessage().getMentionedMembers().isEmpty()) {
event.getTextChannel().sendMessage(super.messageGenerators.generateErrorMsg("No user found")).queue();
return;
}

if (parsedCommand.getArgs().length <= 1) {
event.getChannel()
.sendMessage(new EmbedBuilder().setColor(Color.red).setDescription("No reason found").build())
.queue();
return;
}

String reason = String.join(" ", Arrays.copyOfRange(parsedCommand.getArgs(), 1, parsedCommand.getArgs().length));

new WarnListDaoImpl().deleteWarn(event.getMember(), reason);

final MessageEmbed eb = getDeleteEmbed(event, reason);
if(eb == null)
return;

warnDeleteChannel.sendMessage(eb).queue();
}

@Override
public AccessLevel getAccessLevel() {
return AccessLevel.MODERATOR;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package de.progen_bot.commands.moderator.blacklist;

import de.progen_bot.command.CommandHandler;
import de.progen_bot.command.CommandManager;
import de.progen_bot.core.Main;
import de.progen_bot.db.entities.config.GuildConfiguration;
import de.progen_bot.permissions.AccessLevel;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.MessageEmbed;
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.exceptions.InsufficientPermissionException;

import java.awt.*;
import java.time.Instant;
import java.util.List;

public class CommandBan extends CommandHandler {
private static final String BAN = "BAN";
private static final String EXECUTOR = "Executor";
private static final String VICTIM = "Victim";
private static final String REASON = "Reason";
private static final String CHANNEL = "Channel";

public CommandBan() {
super("ban", "ban <user> <reason>", "Ban a user from this Server");
}

private static MessageEmbed getBanEmbed(MessageReceivedEvent event, String reason) {
return new EmbedBuilder().setColor(Color.red).setTitle(BAN)
.addField(VICTIM, event.getMessage().getMentionedUsers().get(0).getAsMention(), true)
.addField(EXECUTOR, event.getMember().getAsMention(), true).setDescription(event.getMessageId())
.addField(CHANNEL, event.getTextChannel().getAsMention(), false)
.addField(REASON, reason, false).setTimestamp(Instant.now()).build();
}

@Override
public void execute(CommandManager.ParsedCommandString parsedCommand, MessageReceivedEvent event, GuildConfiguration configuration) {

JDA jda = Main.getJda();
TextChannel banChannel = jda.getTextChannelById(configuration.getLogChannelID());

Member selfMember = event.getMember();

if (selfMember == null)
return;

final List<String> argsWithoutMention = parsedCommand.getArgsAsList().subList(1,
parsedCommand.getArgsAsList().size());

String reason;
if (argsWithoutMention.isEmpty())
reason = "No reason";
else
reason = String.join(" ", argsWithoutMention);

final MessageEmbed eb = getBanEmbed(event, reason);
if (eb == null)
return;

if (parsedCommand.getArgs().length > 0) {
User user = event.getJDA().retrieveUserById(event.getMessage().getMentionedUsers().get(0).getId())
.complete();

if (user == null) {
System.out.println("unknown user");
return;
}

if (user == null){
user.openPrivateChannel().queue(privateChannel -> privateChannel.sendMessage(eb).queue());
}else {
System.out.println("Cannot deliver message to user. The direct message function seems to be deactivated,");
}

try {
event.getGuild().ban(user, 7, reason).queue(v -> {
banChannel.sendMessage(eb);
});
} catch (InsufficientPermissionException e) {
event.getTextChannel().sendMessage(super.messageGenerators.generateErrorMsg("Failed to ban user " + event.getMember().getAsMention()));
}
}
}

@Override
public AccessLevel getAccessLevel() {
return AccessLevel.MODERATOR;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package de.progen_bot.commands.moderator.blacklist;

import de.progen_bot.command.CommandHandler;
import de.progen_bot.command.CommandManager;
import de.progen_bot.core.Main;
import de.progen_bot.db.entities.config.GuildConfiguration;
import de.progen_bot.permissions.AccessLevel;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.*;
import net.dv8tion.jda.api.events.guild.invite.GuildInviteCreateEvent;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.requests.restaction.InviteAction;

import javax.annotation.Nonnull;
import java.awt.*;
import java.time.Instant;
import java.util.List;


public class CommandKick extends CommandHandler {
private static final String KICK = "KICK";
private static final String EXECUTOR = "Executor";
private static final String VICTIM = "Victim";
private static final String REASON = "Reason";
private static final String CHANNEL = "Channel";

public CommandKick() {
super("kick" , "kick <@user> <reason>" , "Kick a user from this server");
}

private MessageEmbed getKickEmbed(MessageReceivedEvent event, String reason) {
if (event.getMember() == null)
return null;

return new EmbedBuilder()
.setColor(Color.MAGENTA)
.setTitle(KICK)
.addField(VICTIM, event.getMessage().getMentionedMembers().get(0).getAsMention(), true)
.addField(EXECUTOR, event.getMember().getAsMention(),true)
.setDescription(event.getMessageId())
.addField(CHANNEL, event.getTextChannel().getAsMention(), false)
.addField(REASON, reason, false)
.setTimestamp(Instant.now()).build();
}

@Override
public void execute(CommandManager.ParsedCommandString parsedCommand , MessageReceivedEvent event , GuildConfiguration configuration) {
final List<String> argsWithoutMention = parsedCommand.getArgsAsList().subList(1, parsedCommand.getArgsAsList().size());

JDA jda = Main.getJda();
TextChannel kickChannel = jda.getTextChannelById(configuration.getLogChannelID());

String reason;
if (argsWithoutMention.isEmpty())
reason = "No reason";
else
reason = String.join(" ", argsWithoutMention);

final MessageEmbed eb = this.getKickEmbed(event, reason);
if (eb == null)
return;
kickChannel.sendMessage(eb);
event.getMessage().getMentionedUsers().get(0).openPrivateChannel().queue(
privateChannel -> privateChannel.sendMessage(eb).queue()
);
final Member target = event.getMessage().getMentionedMembers().get(0);
event.getGuild().kick(target).queue();
}

@Override
public AccessLevel getAccessLevel() {
return AccessLevel.MODERATOR;
}
}

0 comments on commit 3634bf2

Please sign in to comment.