Skip to content

Commit b931248

Browse files
committed
feat: miscellaneous updates
- Update logging for gags. - Add edit note command. - Update text in rule embeds for infractions. - Cleanup of staff reaction listeners.
1 parent dcea01f commit b931248

File tree

10 files changed

+54
-22
lines changed

10 files changed

+54
-22
lines changed

commands.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,12 @@
3434
| unmute | LowerMemberArg | Unmute a user. |
3535

3636
## Notes
37-
| Commands | Arguments | Description |
38-
| ------------ | ----------------------- | ------------------------------------------------- |
39-
| cleansenotes | LowerMemberArg | Use this to delete (permanently) as user's notes. |
40-
| deleteNote | LowerMemberArg, Note ID | Use this to add a delete a note from a user. |
41-
| note | User, Note Content | Use this to add a note to a user. |
37+
| Commands | Arguments | Description |
38+
| ------------ | -------------------------------- | ------------------------------------------------- |
39+
| cleansenotes | LowerMemberArg | Use this to delete (permanently) as user's notes. |
40+
| deleteNote | LowerMemberArg, Note ID | Use this to add a delete a note from a user. |
41+
| editNote | User, Note to edit, Note Content | Use this to edit a note. |
42+
| note | User, Note Content | Use this to add a note to a user. |
4243

4344
## Rules
4445
| Commands | Arguments | Description |

src/main/kotlin/me/ddivad/judgebot/commands/MuteCommands.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ fun createMuteCommands(muteService: MuteService) = commands("Mute") {
5858
return@execute
5959
}
6060
val time = 1000L * 60 * 5
61-
muteService.gag(targetMember)
61+
muteService.gag(guild, targetMember, author)
6262

6363
respond("${targetMember.mention} has been muted for ${timeToString(time)}")
6464
}

src/main/kotlin/me/ddivad/judgebot/commands/NoteCommands.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,21 @@ fun noteCommands(databaseService: DatabaseService) = commands("Notes") {
2222
}
2323
}
2424

25+
guildCommand("editNote") {
26+
description = "Use this to edit a note."
27+
requiredPermissionLevel = PermissionLevel.Moderator
28+
execute(UserArg, IntegerArg("Note to edit"), EveryArg("Note Content")) {
29+
val (target, noteId, note) = args
30+
val user = databaseService.users.getOrCreateUser(target, guild)
31+
if (user.getGuildInfo(guild.id.value).notes.none{ it.id == noteId }) {
32+
respond("User has no note with ID $noteId.")
33+
return@execute
34+
}
35+
databaseService.users.editNote(guild, user, noteId, note, author.id.value)
36+
respond("Note edited.")
37+
}
38+
}
39+
2540
guildCommand("deleteNote") {
2641
description = "Use this to add a delete a note from a user."
2742
requiredPermissionLevel = PermissionLevel.Staff

src/main/kotlin/me/ddivad/judgebot/dataclasses/GuildMember.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ data class GuildMember(
3030
this.notes.add(Note(note, moderator, DateTime().millis, nextId))
3131
}
3232

33+
fun editNote(guild: Guild, noteId: Int, newNote: String, moderator: String) = with(this.getGuildInfo(guild.id.value)) {
34+
this.notes.find { it.id == noteId }?.let{
35+
it.note = newNote
36+
it.moderator = moderator
37+
}
38+
}
39+
3340
fun deleteNote(noteId: Int, guild: Guild) = with(this.getGuildInfo(guild.id.value)) {
3441
this.notes.removeIf { it.id == noteId }
3542
}

src/main/kotlin/me/ddivad/judgebot/dataclasses/Note.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ package me.ddivad.judgebot.dataclasses
22

33
import org.joda.time.DateTime
44

5-
data class Note(val note: String,
6-
val moderator: String,
7-
val dateTime: Long,
8-
val id: Int)
5+
data class Note(
6+
var note: String,
7+
var moderator: String,
8+
val dateTime: Long,
9+
val id: Int)
910

1011
data class Info(val message: String,
1112
val moderator: String,

src/main/kotlin/me/ddivad/judgebot/embeds/RuleEmbeds.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ fun EmbedBuilder.createInfractionRuleEmbed(guild: Guild, rules: List<Rule>) {
5454
text = guild.name
5555
}
5656
addField("","")
57-
addField("Rule Choice:", "Reply with **rule id**, or **0** for no rule.")
57+
addField("Rule Choice:", "Reply with **rule id**, or **0** for no rule.\nYou can also type **cancel** to stop this process.")
5858
}
5959

6060
fun EmbedBuilder.createRulesEmbedDetailed(guild: Guild, rules: List<Rule>) {

src/main/kotlin/me/ddivad/judgebot/listeners/StaffReactionListeners.kt

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,26 +26,25 @@ fun onStaffReactionAdd(muteService: MuteService,
2626
val guild = guild?.asGuildOrNull() ?: return@on
2727
val guildConfiguration = configuration[guild.asGuild().id.longValue]
2828
if (!guildConfiguration?.reactions!!.enabled) return@on
29-
val member = user.asMemberOrNull(guild.id) ?: return@on
29+
val staffMember = user.asMemberOrNull(guild.id) ?: return@on
3030
val messageAuthor = message.asMessage().author?.asMemberOrNull(guild.id) ?: return@on
3131
val msg = message.asMessage()
3232

33-
if (permissionsService.hasPermission(member, PermissionLevel.Moderator) && !member.isHigherRankedThan(permissionsService, messageAuthor)) {
33+
if (permissionsService.hasPermission(staffMember, PermissionLevel.Moderator) && !staffMember.isHigherRankedThan(permissionsService, messageAuthor)) {
3434
when (this.emoji.name) {
3535
guildConfiguration.reactions.gagReaction -> {
36-
val target = messageAuthor.asMember(guild.id)
3736
msg.deleteReaction(this.emoji)
38-
if (muteService.checkRoleState(guild, target) == RoleState.Tracked) {
39-
member.sendPrivateMessage("${messageAuthor.mention} is already muted.")
37+
if (muteService.checkRoleState(guild, messageAuthor) == RoleState.Tracked) {
38+
staffMember.sendPrivateMessage("${messageAuthor.mention} is already muted.")
4039
return@on
4140
}
42-
muteService.gag(target)
43-
member.sendPrivateMessage("${messageAuthor.mention} gagged.")
41+
muteService.gag(guild, messageAuthor, staffMember)
42+
staffMember.sendPrivateMessage("${messageAuthor.mention} gagged.")
4443
}
4544
guildConfiguration.reactions.historyReaction -> {
4645
msg.deleteReaction(this.emoji)
4746
val target = databaseService.users.getOrCreateUser(messageAuthor, guild.asGuild())
48-
member.sendPrivateMessage { createSelfHistoryEmbed(messageAuthor, target, guild.asGuild(), configuration) }
47+
staffMember.sendPrivateMessage { createSelfHistoryEmbed(messageAuthor, target, guild.asGuild(), configuration) }
4948
}
5049
guildConfiguration.reactions.deleteMessageReaction -> {
5150
msg.deleteReaction(this.emoji)
@@ -55,7 +54,7 @@ fun onStaffReactionAdd(muteService: MuteService,
5554
createMessageDeleteEmbed(guild, msg)
5655
}
5756
} catch (ex: RequestException) {
58-
this.user.sendPrivateMessage("User ${messageAuthor.mention} has DM's disabled." +
57+
staffMember.sendPrivateMessage("User ${messageAuthor.mention} has DM's disabled." +
5958
" Message deleted without notification.")
6059
}
6160

src/main/kotlin/me/ddivad/judgebot/services/LoggingService.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ class LoggingService(private val configuration: Configuration) {
7474
suspend fun dmDisabled(guild: Guild, target: User) =
7575
log(guild, "**Info ::** Attempted to send direct message to ${target.mention} :: ${target.id.value} but they have DMs disabled")
7676

77+
suspend fun gagApplied(guild: Guild, target: Member, moderator: User) =
78+
log(guild, "**Info ::** User ${target.mention} has been gagged by **${moderator.username} :: ${moderator.tag}**")
79+
7780
private suspend fun log(guild: Guild, message: String) {
7881
getLoggingChannel(guild)?.createMessage(message)
7982
println("${SimpleDateFormat("dd/M/yyyy HH:mm:ss").format(Date())} > ${guild.name} > $message")

src/main/kotlin/me/ddivad/judgebot/services/database/UserOperations.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ class UserOperations(connection: ConnectionService, private val configuration: C
3838
return this.updateUser(user)
3939
}
4040

41+
suspend fun editNote(guild: Guild, user: GuildMember, noteId: Int, newContent: String, moderator: String): GuildMember {
42+
user.editNote(guild, noteId, newContent, moderator)
43+
return this.updateUser(user)
44+
}
45+
4146
suspend fun deleteNote(guild: Guild, user: GuildMember, noteId: Int): GuildMember {
4247
user.deleteNote(noteId, guild)
4348
return this.updateUser(user)

src/main/kotlin/me/ddivad/judgebot/services/infractions/MuteService.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,9 @@ class MuteService(val configuration: Configuration,
7979
}
8080
}
8181

82-
suspend fun gag(target: Member) {
83-
this.applyMute(target, 1000L * 60 * 5, "You've been muted temporarily so that a mod can handle something.")
82+
suspend fun gag(guild: Guild, target: Member, moderator: User) {
83+
loggingService.gagApplied(guild, target, moderator)
84+
this.applyMute(target, 1000L * 60 * 5, "You've been muted temporarily by staff.")
8485
}
8586

8687
fun removeMute(guild: Guild, user: User) {

0 commit comments

Comments
 (0)