Skip to content

Commit 163a771

Browse files
authored
Merge pull request #45 from the-programmers-hangout/develop
release: version 1.3.0 release
2 parents e167f63 + d4846f5 commit 163a771

35 files changed

+228
-103
lines changed

commands.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@
1111
| configuration | (GuildConfig) | Update configuration parameters for this guild (conversation). |
1212
| setup | | Configure a guild to use Judgebot. |
1313

14+
## Information
15+
| Commands | Arguments | Description |
16+
| ---------- | ---------------------------- | --------------------------------------------------- |
17+
| info | LowerMemberArg, Info Content | Send an information message to a guild member |
18+
| removeInfo | LowerMemberArg, Integer | Remove an information message from a member record. |
19+
1420
## Infraction
1521
| Commands | Arguments | Description |
1622
| ---------------- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |

src/main/kotlin/me/ddivad/judgebot/Main.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ suspend fun main(args: Array<String>) {
5656
field {
5757
name = "Build Info"
5858
value = "```" +
59-
"Version: 1.2.2\n" +
59+
"Version: 1.3.0\n" +
6060
"DiscordKt: ${versions.library}\n" +
6161
"Kotlin: $kotlinVersion" +
6262
"```"
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package me.ddivad.judgebot.commands
2+
3+
import me.ddivad.judgebot.arguments.LowerMemberArg
4+
import me.ddivad.judgebot.dataclasses.Info
5+
import me.ddivad.judgebot.embeds.createInformationEmbed
6+
import me.ddivad.judgebot.services.DatabaseService
7+
import me.ddivad.judgebot.services.PermissionLevel
8+
import me.ddivad.judgebot.services.requiredPermissionLevel
9+
import me.jakejmattson.discordkt.api.arguments.EveryArg
10+
import me.jakejmattson.discordkt.api.arguments.IntegerArg
11+
import me.jakejmattson.discordkt.api.dsl.commands
12+
import me.jakejmattson.discordkt.api.extensions.sendPrivateMessage
13+
14+
@Suppress("unused")
15+
fun createInformationCommands(databaseService: DatabaseService) = commands("Information") {
16+
guildCommand("info") {
17+
description = "Send an information message to a guild member"
18+
requiredPermissionLevel = PermissionLevel.Moderator
19+
execute(LowerMemberArg, EveryArg("Info Content")) {
20+
val (target, content) = args
21+
val user = databaseService.users.getOrCreateUser(target, guild)
22+
val information = Info(content, author.id.value)
23+
databaseService.users.addInfo(guild, user, information)
24+
target.sendPrivateMessage {
25+
createInformationEmbed(guild, target, information)
26+
}
27+
respond("Info added and sent to user.")
28+
}
29+
}
30+
31+
guildCommand("removeInfo") {
32+
description = "Remove an information message from a member record."
33+
requiredPermissionLevel = PermissionLevel.Staff
34+
execute(LowerMemberArg, IntegerArg) {
35+
val (target, id) = args
36+
val user = databaseService.users.getOrCreateUser(target, guild)
37+
if (user.getGuildInfo(guild.id.value).info.isEmpty()) {
38+
respond("User has no information records.")
39+
return@execute
40+
}
41+
databaseService.users.removeInfo(guild, user, id)
42+
respond("Information record removed.")
43+
}
44+
}
45+
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ import me.jakejmattson.discordkt.api.arguments.EveryArg
1616
import me.jakejmattson.discordkt.api.arguments.IntegerArg
1717
import me.jakejmattson.discordkt.api.dsl.commands
1818

19-
fun createInfractonCommands(databaseService: DatabaseService,
19+
@Suppress("unused")
20+
fun createInfractionCommands(databaseService: DatabaseService,
2021
config: Configuration,
2122
infractionService: InfractionService,
2223
badPfpService: BadPfpService) = commands("Infraction") {
@@ -83,7 +84,7 @@ fun createInfractonCommands(databaseService: DatabaseService,
8384
}
8485

8586
val badPfp = Infraction(author.id.value, "BadPfp", InfractionType.BadPfp)
86-
badPfpService.applyBadPfp(targetMember, guild, badPfp, timeLimit)
87+
badPfpService.applyBadPfp(targetMember, guild, timeLimit)
8788
respond("${targetMember.mention} has been muted and a badpfp has been triggered with a time limit of $minutesUntilBan minutes.")
8889
}
8990
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package me.ddivad.judgebot.commands
22

33
import com.gitlab.kordlib.common.exception.RequestException
44
import me.ddivad.judgebot.arguments.LowerMemberArg
5-
import me.ddivad.judgebot.dataclasses.InfractionType
65
import me.ddivad.judgebot.extensions.testDmStatus
76
import me.ddivad.judgebot.services.*
87
import me.ddivad.judgebot.services.infractions.MuteService
@@ -13,6 +12,7 @@ import me.jakejmattson.discordkt.api.arguments.TimeArg
1312
import me.jakejmattson.discordkt.api.dsl.commands
1413
import kotlin.math.roundToLong
1514

15+
@Suppress("unused")
1616
fun createMuteCommands(muteService: MuteService) = commands("Mute") {
1717
guildCommand("mute") {
1818
description = "Mute a user for a specified time."

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
package me.ddivad.judgebot.commands
22

33
import me.ddivad.judgebot.arguments.LowerMemberArg
4-
import me.ddivad.judgebot.dataclasses.Configuration
54
import me.ddivad.judgebot.services.DatabaseService
65
import me.ddivad.judgebot.services.PermissionLevel
76
import me.ddivad.judgebot.services.requiredPermissionLevel
87
import me.jakejmattson.discordkt.api.arguments.EveryArg
98
import me.jakejmattson.discordkt.api.arguments.IntegerArg
10-
import me.jakejmattson.discordkt.api.arguments.MemberArg
119
import me.jakejmattson.discordkt.api.arguments.UserArg
1210
import me.jakejmattson.discordkt.api.dsl.commands
1311

12+
@Suppress("unused")
1413
fun noteCommands(databaseService: DatabaseService) = commands("Notes") {
1514
guildCommand("note") {
1615
description = "Use this to add a note to a user."
@@ -29,7 +28,7 @@ fun noteCommands(databaseService: DatabaseService) = commands("Notes") {
2928
execute(LowerMemberArg, IntegerArg) {
3029
val (target, noteId) = args
3130
val user = databaseService.users.getOrCreateUser(target, guild)
32-
if (user.getGuildInfo(guild.id.value)!!.notes.isEmpty()) {
31+
if (user.getGuildInfo(guild.id.value).notes.isEmpty()) {
3332
respond("User has no notes.")
3433
return@execute
3534
}
@@ -43,7 +42,7 @@ fun noteCommands(databaseService: DatabaseService) = commands("Notes") {
4342
requiredPermissionLevel = PermissionLevel.Administrator
4443
execute(LowerMemberArg) {
4544
val user = databaseService.users.getOrCreateUser(args.first, guild)
46-
if (user.getGuildInfo(guild.id.value)!!.notes.isEmpty()) {
45+
if (user.getGuildInfo(guild.id.value).notes.isEmpty()) {
4746
respond("User has no notes.")
4847
return@execute
4948
}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,22 @@ import me.ddivad.judgebot.conversations.rules.ArchiveRuleConversation
66
import me.ddivad.judgebot.conversations.rules.EditRuleConversation
77
import me.ddivad.judgebot.dataclasses.Configuration
88
import me.ddivad.judgebot.embeds.createRuleEmbed
9-
import me.ddivad.judgebot.embeds.createRuleEmbedForStrike
109
import me.ddivad.judgebot.embeds.createRulesEmbed
1110
import me.ddivad.judgebot.embeds.createRulesEmbedDetailed
1211
import me.ddivad.judgebot.services.DatabaseService
1312
import me.ddivad.judgebot.services.PermissionLevel
1413
import me.ddivad.judgebot.services.requiredPermissionLevel
1514
import me.jakejmattson.discordkt.api.dsl.commands
1615

16+
@Suppress("unused")
1717
fun ruleCommands(configuration: Configuration,
1818
databaseService: DatabaseService) = commands("Rules") {
1919

2020
guildCommand("addRule") {
2121
description = "Add a rule to this guild."
2222
requiredPermissionLevel = PermissionLevel.Administrator
2323
execute {
24-
AddRuleConversation(configuration, databaseService)
24+
AddRuleConversation(databaseService)
2525
.createAddRuleConversation(guild)
2626
.startPublicly(discord, author, channel)
2727
}
@@ -31,7 +31,7 @@ fun ruleCommands(configuration: Configuration,
3131
description = "Edit a rule in this guild."
3232
requiredPermissionLevel = PermissionLevel.Administrator
3333
execute {
34-
EditRuleConversation(configuration, databaseService)
34+
EditRuleConversation(databaseService)
3535
.createAddRuleConversation(guild)
3636
.startPublicly(discord, author, channel)
3737
}
@@ -41,7 +41,7 @@ fun ruleCommands(configuration: Configuration,
4141
description = "Archive a rule in this guild."
4242
requiredPermissionLevel = PermissionLevel.Administrator
4343
execute {
44-
ArchiveRuleConversation(configuration, databaseService)
44+
ArchiveRuleConversation(databaseService)
4545
.createArchiveRuleConversation(guild)
4646
.startPublicly(discord, author, channel)
4747
}
@@ -62,7 +62,7 @@ fun ruleCommands(configuration: Configuration,
6262
requiredPermissionLevel = PermissionLevel.Staff
6363
execute {
6464
respond {
65-
createRulesEmbedDetailed(guild, databaseService.guilds.getRules(guild)!!)
65+
createRulesEmbedDetailed(guild, databaseService.guilds.getRules(guild))
6666
}
6767
}
6868
}

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

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
11
package me.ddivad.judgebot.commands
22

3-
import com.gitlab.kordlib.common.exception.RequestException
4-
import com.gitlab.kordlib.core.behavior.ban
5-
import com.gitlab.kordlib.core.entity.User
63
import me.ddivad.judgebot.arguments.LowerMemberArg
7-
import me.ddivad.judgebot.dataclasses.Ban
8-
import me.ddivad.judgebot.dataclasses.Configuration
9-
import me.ddivad.judgebot.dataclasses.InfractionType
10-
import me.ddivad.judgebot.dataclasses.Punishment
4+
import me.ddivad.judgebot.dataclasses.*
115
import me.ddivad.judgebot.embeds.createHistoryEmbed
126
import me.ddivad.judgebot.embeds.createSelfHistoryEmbed
137
import me.ddivad.judgebot.embeds.createStatusEmbed
@@ -18,12 +12,12 @@ import me.ddivad.judgebot.services.infractions.BanService
1812
import me.ddivad.judgebot.services.requiredPermissionLevel
1913
import me.jakejmattson.discordkt.api.arguments.EveryArg
2014
import me.jakejmattson.discordkt.api.arguments.IntegerArg
21-
import me.jakejmattson.discordkt.api.arguments.MemberArg
2215
import me.jakejmattson.discordkt.api.arguments.UserArg
2316
import me.jakejmattson.discordkt.api.dsl.commands
2417
import me.jakejmattson.discordkt.api.extensions.sendPrivateMessage
2518
import java.awt.Color
2619

20+
@Suppress("unused")
2721
fun createUserCommands(databaseService: DatabaseService,
2822
config: Configuration,
2923
loggingService: LoggingService,
@@ -100,7 +94,7 @@ fun createUserCommands(databaseService: DatabaseService,
10094
val ban = Ban(user.id.value, author.id.value, reason)
10195
if (guild.getBanOrNull(user.id) != null) {
10296
if (!databaseService.guilds.checkBanExists(guild, user.id.value)) {
103-
databaseService.guilds.addBan(guild, user.id.value, ban)
97+
databaseService.guilds.addBan(guild, ban)
10498
} else {
10599
databaseService.guilds.editBanReason(guild, user.id.value, reason)
106100
}

src/main/kotlin/me/ddivad/judgebot/conversations/StrikeConversation.kt

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,13 @@ package me.ddivad.judgebot.conversations
22

33
import com.gitlab.kordlib.core.entity.Guild
44
import com.gitlab.kordlib.core.entity.Member
5-
import me.ddivad.judgebot.arguments.RuleArg
65
import me.ddivad.judgebot.dataclasses.*
76
import me.ddivad.judgebot.embeds.createHistoryEmbed
8-
import me.ddivad.judgebot.embeds.createModeratorInfractionEmbed
97
import me.ddivad.judgebot.embeds.createRuleEmbedForStrike
108
import me.ddivad.judgebot.services.DatabaseService
119
import me.ddivad.judgebot.services.infractions.InfractionService
12-
import me.ddivad.judgebot.util.timeToString
13-
import me.jakejmattson.discordkt.api.arguments.BooleanArg
14-
import me.jakejmattson.discordkt.api.dsl.Conversation
10+
import me.jakejmattson.discordkt.api.arguments.IntegerArg
1511
import me.jakejmattson.discordkt.api.dsl.conversation
16-
import me.jakejmattson.discordkt.api.extensions.sendPrivateMessage
1712

1813
class StrikeConversation(private val databaseService: DatabaseService,
1914
private val configuration: Configuration,
@@ -22,16 +17,14 @@ class StrikeConversation(private val databaseService: DatabaseService,
2217
val guildConfiguration = configuration[guild.id.longValue] ?: return@conversation
2318
val user = databaseService.users.getOrCreateUser(targetUser, guild)
2419
val points = weight * guildConfiguration.infractionConfiguration.strikePoints
25-
val addRule = promptMessage(BooleanArg("Add Rule", "y", "n"), "Add rule? (y/n)")
26-
val rule = if (addRule) {
27-
val rules = databaseService.guilds.getRules(guild)
20+
val rules = databaseService.guilds.getRules(guild)
21+
val ruleId = if (rules.isNotEmpty()) {
2822
respond { createRuleEmbedForStrike(guild, rules) }
29-
promptMessage(RuleArg, "Enter rule number: ").number
23+
val rule = promptMessage(IntegerArg, "Enter `0` for no rule, or rule id to add a rule:")
24+
if (rule > 0) rule else null
3025
} else null
31-
val infraction = Infraction(this.user.id.value, infractionReason, InfractionType.Strike, points, rule)
32-
33-
val infractionRecord = infractionService.infract(targetUser, guild, user, infraction)
26+
val infraction = Infraction(this.user.id.value, infractionReason, InfractionType.Strike, points, ruleId)
27+
infractionService.infract(targetUser, guild, user, infraction)
3428
respondMenu { createHistoryEmbed(targetUser, user, guild, configuration, databaseService) }
35-
this.user.sendPrivateMessage{ createModeratorInfractionEmbed(guild, targetUser, infractionRecord) }
3629
}
3730
}

src/main/kotlin/me/ddivad/judgebot/conversations/rules/AddRuleConversation.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,10 @@ import me.jakejmattson.discordkt.api.arguments.EveryArg
1010
import me.jakejmattson.discordkt.api.arguments.UrlArg
1111
import me.jakejmattson.discordkt.api.dsl.conversation
1212

13-
class AddRuleConversation(private val configuration: Configuration,
14-
private val databaseService: DatabaseService) {
13+
class AddRuleConversation(private val databaseService: DatabaseService) {
1514
fun createAddRuleConversation(guild: Guild) = conversation("cancel") {
1615
val rules = databaseService.guilds.getRules(guild)
17-
val nextId = rules?.size?.plus(1)!!
16+
val nextId = rules.size.plus(1)
1817

1918
val ruleName = promptMessage(EveryArg, "Please enter rule name:")
2019
val ruleText = promptMessage(EveryArg, "Please enter rule text")

0 commit comments

Comments
 (0)