Skip to content

Commit e5e70fd

Browse files
authored
Merge pull request #299 from andrewlalis/andrew/message_link_delete
Added checks for deleting messages via interaction
2 parents 14cdffb + ac6f2e7 commit e5e70fd

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

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

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
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;
46
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
57
import net.dv8tion.jda.api.interactions.components.buttons.ButtonInteraction;
8+
import net.javadiscord.javabot.Bot;
69
import net.javadiscord.javabot.command.Responses;
10+
import net.javadiscord.javabot.data.config.GuildConfig;
711
import net.javadiscord.javabot.systems.moderation.ModerationService;
812

913
/**
@@ -52,13 +56,37 @@ public static void handleButton(ButtonInteractionEvent event, String[] id) {
5256
return;
5357
}
5458
switch (id[1]) {
55-
case "delete" -> event.getHook().deleteOriginal().queue();
59+
case "delete" -> InteractionUtils.delete(event.getInteraction());
5660
case "kick" -> InteractionUtils.kick(event.getInteraction(), event.getGuild(), id[2]);
5761
case "ban" -> InteractionUtils.ban(event.getInteraction(), event.getGuild(), id[2]);
5862
case "unban" -> InteractionUtils.unban(event.getInteraction(), Long.parseLong(id[2]));
5963
}
6064
}
6165

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

0 commit comments

Comments
 (0)