-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
The costume channel is now taken into account by the command. [#126]
- Loading branch information
1 parent
337bf7c
commit 3634bf2
Showing
4 changed files
with
331 additions
and
0 deletions.
There are no files selected for viewing
83 changes: 83 additions & 0 deletions
83
src/main/java/de/progen_bot/commands/moderator/CommandWarn.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} | ||
} |
80 changes: 80 additions & 0 deletions
80
src/main/java/de/progen_bot/commands/moderator/CommandWarnDelete.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} | ||
} |
93 changes: 93 additions & 0 deletions
93
src/main/java/de/progen_bot/commands/moderator/blacklist/CommandBan.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} | ||
} |
75 changes: 75 additions & 0 deletions
75
src/main/java/de/progen_bot/commands/moderator/blacklist/CommandKick.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} | ||
} |