Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,6 @@ open class LowerMemberArg(override val name: String = "LowerMemberArg") : Argume
override fun formatData(data: Member) = "@${data.tag}"
}

private suspend fun Member.isHigherRankedThan(permissions: PermissionsService, targetMember: Member) =
suspend fun Member.isHigherRankedThan(permissions: PermissionsService, targetMember: Member) =
permissions.getPermissionRank(this) < permissions.getPermissionRank(targetMember)

Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package me.ddivad.judgebot.listeners
import com.gitlab.kordlib.core.behavior.getChannelOf
import com.gitlab.kordlib.core.entity.channel.TextChannel
import com.gitlab.kordlib.core.event.message.ReactionAddEvent
import com.gitlab.kordlib.kordx.emoji.Emojis
import com.gitlab.kordlib.kordx.emoji.addReaction
import me.ddivad.judgebot.dataclasses.Configuration
import me.ddivad.judgebot.extensions.jumpLink
import me.jakejmattson.discordkt.api.dsl.listeners
Expand All @@ -15,11 +17,13 @@ fun onMemberReactionAdd(configuration: Configuration) = listeners {
val guildConfiguration = configuration[guild.asGuild().id.longValue]
if (!guildConfiguration?.reactions!!.enabled) return@on

if(this.emoji.name == guildConfiguration.reactions.flagMessageReaction) {
message.deleteReaction(this.emoji)
guild.asGuild().getChannelOf<TextChannel>(guildConfiguration.loggingConfiguration.alertChannel.toSnowflake())
.asChannel().createMessage("User ${user.mention} flagged the message: " +
"${this.message.asMessage().jumpLink(guild.id.value)} in: ${this.channel.mention}")
when (this.emoji.name) {
guildConfiguration.reactions.flagMessageReaction -> {
message.deleteReaction(this.emoji)
guild.asGuild().getChannelOf<TextChannel>(guildConfiguration.loggingConfiguration.alertChannel.toSnowflake()).asChannel()
.createMessage("User ${user.mention} flagged the message: ${this.message.asMessage().jumpLink(guild.id.value)} in: ${this.channel.mention}")
.addReaction(Emojis.whiteCheckMark)
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package me.ddivad.judgebot.listeners

import com.gitlab.kordlib.common.exception.RequestException
import com.gitlab.kordlib.core.event.message.ReactionAddEvent
import me.ddivad.judgebot.arguments.isHigherRankedThan
import me.ddivad.judgebot.dataclasses.Configuration
import me.ddivad.judgebot.embeds.createMessageDeleteEmbed
import me.ddivad.judgebot.embeds.createSelfHistoryEmbed
Expand All @@ -21,36 +22,34 @@ fun onStaffReactionAdd(muteService: MuteService,
val guild = guild?.asGuildOrNull() ?: return@on
val guildConfiguration = configuration[guild.asGuild().id.longValue]
if (!guildConfiguration?.reactions!!.enabled) return@on

user.asMemberOrNull(guild.id)?.let {
if (permissionsService.hasPermission(it, PermissionLevel.Moderator)) {
val messageAuthor = message.asMessage().author ?: return@on

when (this.emoji.name) {
guildConfiguration.reactions.gagReaction -> {
message.deleteReaction(this.emoji)
muteService.gag(messageAuthor.asMember(guild.id))
it.sendPrivateMessage("${messageAuthor.mention} gagged.")
}
guildConfiguration.reactions.historyReaction -> {
message.deleteReaction(this.emoji)
val target = databaseService.users.getOrCreateUser(messageAuthor, guild.asGuild())
it.sendPrivateMessage { createSelfHistoryEmbed(messageAuthor, target, guild.asGuild(), configuration) }
}
guildConfiguration.reactions.deleteMessageReaction -> {
val content = message.asMessage()
message.deleteReaction(this.emoji)
message.delete()
try {
messageAuthor.sendPrivateMessage {
createMessageDeleteEmbed(guild, content)
}
} catch (ex: RequestException) {
this.user.sendPrivateMessage("User ${messageAuthor.mention} has DM's disabled." +
" Message deleted without notification.")
val member = user.asMemberOrNull(guild.id) ?: return@on
val messageAuthor = message.asMessage().author?.asMemberOrNull(guild.id) ?: return@on

if (permissionsService.hasPermission(member, PermissionLevel.Moderator) && !member.isHigherRankedThan(permissionsService, messageAuthor)) {
when (this.emoji.name) {
guildConfiguration.reactions.gagReaction -> {
message.deleteReaction(this.emoji)
muteService.gag(messageAuthor.asMember(guild.id))
member.sendPrivateMessage("${messageAuthor.mention} gagged.")
}
guildConfiguration.reactions.historyReaction -> {
message.deleteReaction(this.emoji)
val target = databaseService.users.getOrCreateUser(messageAuthor, guild.asGuild())
member.sendPrivateMessage { createSelfHistoryEmbed(messageAuthor, target, guild.asGuild(), configuration) }
}
guildConfiguration.reactions.deleteMessageReaction -> {
val content = message.asMessage()
message.deleteReaction(this.emoji)
message.delete()
try {
messageAuthor.sendPrivateMessage {
createMessageDeleteEmbed(guild, content)
}

} catch (ex: RequestException) {
this.user.sendPrivateMessage("User ${messageAuthor.mention} has DM's disabled." +
" Message deleted without notification.")
}

}
}
}
Expand Down