Skip to content

Commit 7085710

Browse files
committed
Added check for author for message deletion.
1 parent 4ec0691 commit 7085710

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

src/main/java/net/javadiscord/javabot/util/InteractionUtils.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
package net.javadiscord.javabot.util;
22

33
import net.dv8tion.jda.api.entities.Guild;
4+
import net.dv8tion.jda.api.entities.Member;
5+
import net.dv8tion.jda.api.entities.Message;
6+
import net.dv8tion.jda.api.entities.User;
47
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
58
import net.dv8tion.jda.api.interactions.components.buttons.ButtonInteraction;
9+
import net.javadiscord.javabot.Bot;
610
import net.javadiscord.javabot.command.Responses;
11+
import net.javadiscord.javabot.data.config.GuildConfig;
712
import net.javadiscord.javabot.systems.moderation.ModerationService;
813

914
/**
@@ -52,13 +57,37 @@ public static void handleButton(ButtonInteractionEvent event, String[] id) {
5257
return;
5358
}
5459
switch (id[1]) {
55-
case "delete" -> event.getHook().deleteOriginal().queue();
60+
case "delete" -> InteractionUtils.delete(event.getInteraction());
5661
case "kick" -> InteractionUtils.kick(event.getInteraction(), event.getGuild(), id[2]);
5762
case "ban" -> InteractionUtils.ban(event.getInteraction(), event.getGuild(), id[2]);
5863
case "unban" -> InteractionUtils.unban(event.getInteraction(), Long.parseLong(id[2]));
5964
}
6065
}
6166

67+
/**
68+
* Deletes a message, only if the person deleting the message is the author
69+
* of the message, a staff member, or the owner.
70+
* @param interaction The button interaction.
71+
*/
72+
private static void delete(ButtonInteraction interaction) {
73+
Member member = interaction.getMember();
74+
if (member == null) {
75+
Responses.warning(interaction.getHook(), "Could not get member.").queue();
76+
return;
77+
}
78+
GuildConfig config = Bot.config.get(interaction.getGuild());
79+
Message msg = interaction.getMessage();
80+
if (
81+
member.getUser().getIdLong() == msg.getAuthor().getIdLong() ||
82+
member.getRoles().contains(config.getModeration().getStaffRole()) ||
83+
member.isOwner()
84+
) {
85+
msg.delete().queue();
86+
} else {
87+
Responses.warning(interaction.getHook(), "You don't have permission to delete this message.").queue();
88+
}
89+
}
90+
6291
private static void kick(ButtonInteraction interaction, Guild guild, String memberId) {
6392
ModerationService service = new ModerationService(interaction);
6493
guild.retrieveMemberById(memberId).queue(

0 commit comments

Comments
 (0)