@@ -5,6 +5,7 @@ import dev.kord.core.event.message.ReactionAddEvent
55import dev.kord.x.emoji.Emojis
66import dev.kord.x.emoji.addReaction
77import me.ddivad.judgebot.dataclasses.Configuration
8+ import me.ddivad.judgebot.dataclasses.Permissions
89import me.ddivad.judgebot.embeds.createMessageDeleteEmbed
910import me.ddivad.judgebot.embeds.createCondensedHistoryEmbed
1011import me.ddivad.judgebot.services.DatabaseService
@@ -23,64 +24,64 @@ fun onStaffReactionAdd(
2324 configuration : Configuration
2425) = listeners {
2526 on<ReactionAddEvent > {
26- println ( " listener " )
27- // val guild = guild?.asGuildOrNull() ?: return@on
28- // val guildConfiguration = configuration[guild.asGuild().id.value]
29- // if (!guildConfiguration?.reactions!!.enabled) return@on
30- // val staffMember = user.asMemberOrNull(guild.id) ?: return@on
31- // val messageAuthor = message.asMessage() .author?.asMemberOrNull(guild.id) ?: return@on
32- // val msg = message.asMessage( )
33- // println( discord.permissions.isHigherLevel(discord, staffMember, messageAuthor) )
34- // if (discord.permissions.isHigherLevel(discord, staffMember, messageAuthor) ) {
35- // when (this.emoji.name) {
36- // guildConfiguration.reactions.gagReaction -> {
37- // msg.deleteReaction(this.emoji)
38- // if (muteService.checkRoleState(guild, messageAuthor) == RoleState.Tracked) {
39- // staffMember.sendPrivateMessage("${messageAuthor.mention} is already muted.")
40- // return@on
41- // }
42- // muteService.gag(guild, messageAuthor, staffMember)
43- // staffMember.sendPrivateMessage("${messageAuthor.mention} gagged.")
44- // loggingService.staffReactionUsed(guild, staffMember, messageAuthor, this.emoji)
45- // }
46- // guildConfiguration.reactions.historyReaction -> {
47- // msg.deleteReaction(this.emoji)
48- // staffMember.sendPrivateMessage {
49- // createCondensedHistoryEmbed(
50- // messageAuthor,
51- // databaseService.users.getOrCreateUser(messageAuthor, guild.asGuild()),
52- // guild.asGuild(),
53- // configuration
54- // )
55- // }
56- // loggingService.staffReactionUsed(guild, staffMember, messageAuthor, this.emoji)
57- // }
58- // guildConfiguration.reactions.deleteMessageReaction -> {
59- // msg.deleteReaction(this.emoji)
60- // msg.delete()
61- // databaseService.users.addMessageDelete(
62- // guild,
63- // databaseService.users.getOrCreateUser(messageAuthor, guild.asGuild()),
64- // true
65- // )
66- // try {
67- // messageAuthor.sendPrivateMessage {
68- // createMessageDeleteEmbed(guild, msg)
69- // }
70- // } catch (ex: RequestException) {
71- // staffMember.sendPrivateMessage(
72- // "User ${messageAuthor.mention} has DM's disabled." +
73- // " Message deleted without notification."
74- // )
75- // }
76- // loggingService.staffReactionUsed(guild, staffMember, messageAuthor, this.emoji)
77- // }
78- // Emojis.question.unicode -> {
79- // if (this.user.isSelf() || msg.author != this.message.kord.getSelf()) return@on
80- // msg.deleteReaction(this.emoji)
81- // msg.addReaction(Emojis.whiteCheckMark)
82- // }
83- // }
84- // }
27+ val guild = guild?.asGuildOrNull() ? : return @on
28+ val guildConfiguration = configuration[ guild.asGuild().id.value]
29+ if ( ! guildConfiguration?.reactions !! .enabled) return @on
30+ val staffMember = user.asMemberOrNull(guild.id) ? : return @on
31+ val msg = message.asMessage()
32+ val messageAuthor = msg .author?.asMemberOrNull(guild.id) ? : return @on
33+ if (discord.permissions.hasPermission(discord, staffMember, Permissions . MODERATOR )
34+ && discord.permissions.isHigherLevel(discord, staffMember, messageAuthor)
35+ ) {
36+ when (this .emoji.name) {
37+ guildConfiguration.reactions.gagReaction -> {
38+ msg.deleteReaction(this .emoji)
39+ if (muteService.checkRoleState(guild, messageAuthor) == RoleState .Tracked ) {
40+ staffMember.sendPrivateMessage(" ${messageAuthor.mention} is already muted." )
41+ return @on
42+ }
43+ muteService.gag(guild, messageAuthor, staffMember)
44+ staffMember.sendPrivateMessage(" ${messageAuthor.mention} gagged." )
45+ loggingService.staffReactionUsed(guild, staffMember, messageAuthor, this .emoji)
46+ }
47+ guildConfiguration.reactions.historyReaction -> {
48+ msg.deleteReaction(this .emoji)
49+ staffMember.sendPrivateMessage {
50+ createCondensedHistoryEmbed(
51+ messageAuthor,
52+ databaseService.users.getOrCreateUser(messageAuthor, guild.asGuild()),
53+ guild.asGuild(),
54+ configuration
55+ )
56+ }
57+ loggingService.staffReactionUsed(guild, staffMember, messageAuthor, this .emoji)
58+ }
59+ guildConfiguration.reactions.deleteMessageReaction -> {
60+ msg.deleteReaction(this .emoji)
61+ msg.delete()
62+ databaseService.users.addMessageDelete(
63+ guild,
64+ databaseService.users.getOrCreateUser(messageAuthor, guild.asGuild()),
65+ true
66+ )
67+ try {
68+ messageAuthor.sendPrivateMessage {
69+ createMessageDeleteEmbed(guild, msg)
70+ }
71+ } catch (ex: RequestException ) {
72+ staffMember.sendPrivateMessage(
73+ " User ${messageAuthor.mention} has DM's disabled." +
74+ " Message deleted without notification."
75+ )
76+ }
77+ loggingService.staffReactionUsed(guild, staffMember, messageAuthor, this .emoji)
78+ }
79+ Emojis .question.unicode -> {
80+ if (this .user.isSelf() || msg.author != this .message.kord.getSelf()) return @on
81+ msg.deleteReaction(this .emoji)
82+ msg.addReaction(Emojis .whiteCheckMark)
83+ }
84+ }
85+ }
8586 }
8687}
0 commit comments