Skip to content

Commit c5d7fde

Browse files
authored
Merge pull request #95 from the-programmers-hangout/develop
release: merge develop with master
2 parents 45afe1c + f2c2383 commit c5d7fde

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+457
-354
lines changed

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
FROM gradle:6.5.1-jdk14 AS build
2+
FROM gradle:7.1-jdk16 AS build
33
COPY --chown=gradle:gradle . /judgebot
44
WORKDIR /judgebot
55
RUN gradle shadowJar --no-daemon

build.gradle.kts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,39 @@
1-
2-
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
3-
41
group = "me.ddivad"
52
version = Versions.BOT
63
description = "judgebot"
74

85
plugins {
9-
kotlin("jvm") version "1.4.10"
10-
id("com.github.johnrengelman.shadow") version "6.0.0"
6+
kotlin("jvm") version "1.5.10"
7+
id("com.github.johnrengelman.shadow") version "7.0.0"
118
}
129

1310
repositories {
1411
mavenCentral()
15-
jcenter()
1612
maven("https://oss.sonatype.org/content/repositories/snapshots/")
1713
}
1814

1915
dependencies {
2016
implementation("me.jakejmattson:DiscordKt:${Versions.DISCORDKT}")
21-
implementation("org.litote.kmongo:kmongo-coroutine:4.2.6")
22-
implementation("joda-time:joda-time:2.10.6")
17+
implementation("org.litote.kmongo:kmongo-coroutine:4.2.8")
18+
implementation("joda-time:joda-time:2.10.10")
2319
}
2420

2521
tasks {
26-
withType<KotlinCompile> {
22+
compileKotlin {
2723
kotlinOptions.jvmTarget = "1.8"
2824
}
2925

3026
shadowJar {
3127
archiveFileName.set("Judgebot.jar")
3228
manifest {
3329
attributes(
34-
"Main-Class" to "me.ddivad.judgebot.MainKt"
30+
"Main-Class" to "me.ddivad.judgebot.MainKt"
3531
)
3632
}
3733
}
3834
}
3935

4036
object Versions {
4137
const val BOT = "1.0.0"
42-
const val DISCORDKT = "0.21.3"
38+
const val DISCORDKT = "0.22.0-SNAPSHOT"
4339
}

commands.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
## Key
44
| Symbol | Meaning |
55
| ----------- | ------------------------------ |
6-
| (Argument) | Argument is not required. |
6+
| [Argument] | Argument is not required. |
77

88
## Guild
99
| Commands | Arguments | Description |
1010
| ----------------- | ------------- | -------------------------------------------------------------- |
1111
| activePunishments | | View active punishments for a guild. |
12-
| configuration | (GuildConfig) | Update configuration parameters for this guild (conversation). |
12+
| configuration | [GuildConfig] | Update configuration parameters for this guild (conversation). |
1313
| setup | | Configure a guild to use Judgebot. |
1414

1515
## Information
@@ -21,10 +21,11 @@
2121
## Infraction
2222
| Commands | Arguments | Description |
2323
| ------------------ | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
24-
| badpfp | (cancel), LowerMemberArg | Notifies the user that they should change their profile pic and applies a 30 minute mute. Bans the user if they don't change picture. |
24+
| badname | LowerMemberArg | Rename a guild member that has a bad name. |
25+
| badpfp | [cancel], LowerMemberArg | Notifies the user that they should change their profile pic and applies a 30 minute mute. Bans the user if they don't change picture. |
2526
| cleanseInfractions | LowerUserArg | Use this to delete (permanently) as user's infractions. |
2627
| removeInfraction | LowerUserArg, Infraction ID | Use this to delete (permanently) an infraction from a user. |
27-
| strike, s, S | LowerMemberArg, (Weight), Reason | Strike a user. |
28+
| strike, s, S | LowerMemberArg, [Weight], Reason | Strike a user. |
2829
| warn, w, W | LowerMemberArg, Reason | Warn a user. |
2930

3031
## Mute
@@ -48,15 +49,15 @@
4849
| addRule | | Add a rule to this guild. |
4950
| archiveRule | | Archive a rule in this guild. |
5051
| editRule | | Edit a rule in this guild. |
51-
| longRules | (Message) | List the rules (with descriptions) of this guild. Pass a message ID to edit existing rules embed. |
52+
| longRules | [Message] | List the rules (with descriptions) of this guild. Pass a message ID to edit existing rules embed. |
5253
| rule | Rule | List a rule from this guild. |
53-
| rules | (Message) | List the rules of this guild. Pass a message ID to edit existing rules embed. |
54+
| rules | [Message] | List the rules of this guild. Pass a message ID to edit existing rules embed. |
5455

5556
## User
5657
| Commands | Arguments | Description |
5758
| ------------- | ----------------------------------------- | ---------------------------------------------------------- |
5859
| alts | User | Use this to view a user's alt accounts. |
59-
| ban | LowerUserArg, (Delete message days), Text | Ban a member from this guild. |
60+
| ban | LowerUserArg, [Delete message days], Text | Ban a member from this guild. |
6061
| getBanReason | User | Get a ban reason for a banned user |
6162
| history, h, H | User | Use this to view a user's record. |
6263
| link | Main Account, Alt Account | Link a user's alt account with their main |
@@ -70,5 +71,5 @@
7071
## Utility
7172
| Commands | Arguments | Description |
7273
| -------- | --------- | -------------------- |
73-
| Help | (Command) | Display a help menu. |
74+
| Help | [Command] | Display a help menu. |
7475

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

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

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

3-
import com.gitlab.kordlib.gateway.Intent
4-
import com.gitlab.kordlib.gateway.PrivilegedIntent
3+
import dev.kord.common.kColor
4+
import dev.kord.gateway.Intent
5+
import dev.kord.gateway.Intents
6+
import dev.kord.gateway.PrivilegedIntent
57
import me.ddivad.judgebot.dataclasses.Configuration
68
import me.ddivad.judgebot.services.BotStatsService
7-
import me.ddivad.judgebot.services.infractions.MuteService
9+
import me.ddivad.judgebot.services.PermissionLevel
810
import me.ddivad.judgebot.services.PermissionsService
911
import me.ddivad.judgebot.services.infractions.BanService
12+
import me.ddivad.judgebot.services.infractions.MuteService
1013
import me.ddivad.judgebot.services.requiredPermissionLevel
1114
import me.jakejmattson.discordkt.api.dsl.bot
1215
import me.jakejmattson.discordkt.api.extensions.addInlineField
@@ -15,15 +18,14 @@ import java.awt.Color
1518
@PrivilegedIntent
1619
suspend fun main(args: Array<String>) {
1720
val token = System.getenv("BOT_TOKEN") ?: null
18-
val defaultPrefix = System.getenv("DEFAULT_PREFIX") ?: "<none>"
21+
val defaultPrefix = System.getenv("DEFAULT_PREFIX") ?: "j!"
1922

2023
require(token != null) { "Expected the bot token as an environment variable" }
2124

2225
bot(token) {
2326
prefix {
2427
val configuration = discord.getInjectionObjects(Configuration::class)
25-
26-
guild?.let { configuration[guild!!.id.longValue]?.prefix } ?: defaultPrefix
28+
guild?.let { configuration[guild!!.id.value]?.prefix } ?: defaultPrefix
2729
}
2830

2931
configure {
@@ -37,7 +39,7 @@ suspend fun main(args: Array<String>) {
3739
val channel = it.channel
3840
val self = channel.kord.getSelf()
3941

40-
color = it.discord.configuration.theme
42+
color = it.discord.configuration.theme?.kColor
4143

4244
thumbnail {
4345
url = self.avatar.url
@@ -50,17 +52,17 @@ suspend fun main(args: Array<String>) {
5052

5153
addInlineField("Prefix", it.prefix())
5254
addInlineField("Ping", botStats.ping)
53-
addInlineField("Contributors", "ddivad#0001")
55+
addInlineField("Contributors", "[Link](https://github.com/the-programmers-hangout/JudgeBot/graphs/contributors)")
5456

5557
val kotlinVersion = KotlinVersion.CURRENT
5658
val versions = it.discord.versions
5759
field {
5860
name = "Build Info"
5961
value = "```" +
60-
"Version: 2.1.2\n" +
61-
"DiscordKt: ${versions.library}\n" +
62-
"Kotlin: $kotlinVersion" +
63-
"```"
62+
"Version: 2.2.0\n" +
63+
"DiscordKt: ${versions.library}\n" +
64+
"Kotlin: $kotlinVersion" +
65+
"```"
6466
}
6567
field {
6668
name = "Uptime"
@@ -78,7 +80,7 @@ suspend fun main(args: Array<String>) {
7880
if (guild != null)
7981
permissionsService.hasClearance(guild!!, user, permission)
8082
else
81-
false
83+
return@permissions command.requiredPermissionLevel == PermissionLevel.Everyone
8284
}
8385

8486
onStart {
@@ -89,14 +91,5 @@ suspend fun main(args: Array<String>) {
8991
muteService.initGuilds()
9092
banService.initialiseBanTimers()
9193
}
92-
93-
intents {
94-
+Intent.GuildMessages
95-
+Intent.DirectMessages
96-
+Intent.GuildBans
97-
+Intent.Guilds
98-
+Intent.GuildMembers
99-
+Intent.GuildMessageReactions
100-
}
10194
}
10295
}

src/main/kotlin/me/ddivad/judgebot/arguments/GuildConfigArg.kt

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,35 @@
11
package me.ddivad.judgebot.arguments
22

3-
import me.jakejmattson.discordkt.api.arguments.ArgumentResult
4-
import me.jakejmattson.discordkt.api.arguments.ArgumentType
5-
import me.jakejmattson.discordkt.api.arguments.Success
6-
import me.jakejmattson.discordkt.api.arguments.Error
3+
import me.jakejmattson.discordkt.api.arguments.*
74
import me.jakejmattson.discordkt.api.dsl.CommandEvent
85

96
val validConfigParameters = mutableListOf(
10-
"setPrefix",
11-
"addAdminRole",
12-
"addStaffRole",
13-
"addModeratorRole",
14-
"removeAdminRole",
15-
"removeStaffRole",
16-
"removeModeratorRole",
17-
"setMuteRole",
18-
"setLogChannel",
19-
"setAlertChannel",
20-
"setGagReaction",
21-
"setHistoryReaction",
22-
"setDeleteMessageReaction",
23-
"setFlagMessageReaction",
24-
"enableReactions",
25-
"view",
26-
"options"
7+
"setPrefix",
8+
"addAdminRole",
9+
"addStaffRole",
10+
"addModeratorRole",
11+
"removeAdminRole",
12+
"removeStaffRole",
13+
"removeModeratorRole",
14+
"setMuteRole",
15+
"setLogChannel",
16+
"setAlertChannel",
17+
"setGagReaction",
18+
"setHistoryReaction",
19+
"setDeleteMessageReaction",
20+
"setFlagMessageReaction",
21+
"enableReactions",
22+
"view",
23+
"options"
2724
)
2825

29-
open class GuildConfigArg(override val name: String = "GuildConfig") : ArgumentType<String>() {
30-
override fun generateExamples(event: CommandEvent<*>): MutableList<String> = validConfigParameters
26+
open class GuildConfigArg(override val name: String = "GuildConfig") : ArgumentType<String> {
27+
override val description = "A Guild configuration"
3128

3229
companion object : GuildConfigArg()
3330

31+
override suspend fun generateExamples(event: CommandEvent<*>): MutableList<String> = validConfigParameters
32+
3433
override suspend fun convert(arg: String, args: List<String>, event: CommandEvent<*>): ArgumentResult<String> {
3534
val parameters = validConfigParameters.map { it.toLowerCase() }
3635
val parameter = arg.toLowerCase()
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
package me.ddivad.judgebot.arguments
22

3-
import com.gitlab.kordlib.core.entity.Member
3+
import dev.kord.core.entity.Member
44
import me.ddivad.judgebot.services.PermissionsService
5-
import me.jakejmattson.discordkt.api.arguments.ArgumentResult
6-
import me.jakejmattson.discordkt.api.arguments.ArgumentType
5+
import me.jakejmattson.discordkt.api.arguments.*
76
import me.jakejmattson.discordkt.api.dsl.CommandEvent
8-
import me.jakejmattson.discordkt.api.arguments.Success
9-
import me.jakejmattson.discordkt.api.arguments.Error
107
import me.jakejmattson.discordkt.api.extensions.toSnowflakeOrNull
118

12-
open class LowerMemberArg(override val name: String = "LowerMemberArg") : ArgumentType<Member>() {
9+
open class LowerMemberArg(override val name: String = "LowerMemberArg") : ArgumentType<Member> {
1310
companion object : LowerMemberArg()
1411

15-
override fun generateExamples(event: CommandEvent<*>) = mutableListOf("@User", "197780697866305536", "302134543639511050")
12+
override val description = "A Member with a lower rank"
13+
14+
override suspend fun generateExamples(event: CommandEvent<*>) = mutableListOf("@User", "197780697866305536", "302134543639511050")
1615

1716
override suspend fun convert(arg: String, args: List<String>, event: CommandEvent<*>): ArgumentResult<Member> {
1817
val permissionsService = event.discord.getInjectionObjects(PermissionsService::class)
@@ -26,8 +25,9 @@ open class LowerMemberArg(override val name: String = "LowerMemberArg") : Argume
2625
else -> Success(member)
2726
}
2827
}
28+
2929
override fun formatData(data: Member) = "@${data.tag}"
3030
}
3131

3232
suspend fun Member.isHigherRankedThan(permissions: PermissionsService, targetMember: Member) =
33-
permissions.getPermissionRank(this) < permissions.getPermissionRank(targetMember)
33+
permissions.getPermissionRank(this) < permissions.getPermissionRank(targetMember)

src/main/kotlin/me/ddivad/judgebot/arguments/LowerUserArg.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
package me.ddivad.judgebot.arguments
22

3-
import com.gitlab.kordlib.core.entity.User
3+
import dev.kord.core.entity.User
44
import me.ddivad.judgebot.services.PermissionsService
5-
import me.jakejmattson.discordkt.api.arguments.ArgumentResult
6-
import me.jakejmattson.discordkt.api.arguments.ArgumentType
5+
import me.jakejmattson.discordkt.api.arguments.*
76
import me.jakejmattson.discordkt.api.dsl.CommandEvent
8-
import me.jakejmattson.discordkt.api.arguments.Success
9-
import me.jakejmattson.discordkt.api.arguments.Error
107
import me.jakejmattson.discordkt.api.extensions.toSnowflakeOrNull
118

12-
open class LowerUserArg(override val name: String = "LowerUserArg") : ArgumentType<User>() {
9+
open class LowerUserArg(override val name: String = "LowerUserArg") : ArgumentType<User> {
1310
companion object : LowerUserArg()
1411

15-
override fun generateExamples(event: CommandEvent<*>) = mutableListOf("@User", "197780697866305536", "302134543639511050")
12+
override val description = "A user with a lower rank"
13+
14+
override suspend fun generateExamples(event: CommandEvent<*>) = mutableListOf("@User", "197780697866305536", "302134543639511050")
1615

1716
override suspend fun convert(arg: String, args: List<String>, event: CommandEvent<*>): ArgumentResult<User> {
1817
val permissionsService = event.discord.getInjectionObjects(PermissionsService::class)

src/main/kotlin/me/ddivad/judgebot/arguments/RuleArg.kt

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
package me.ddivad.judgebot.arguments
22

3-
import com.gitlab.kordlib.core.entity.Guild
3+
import dev.kord.core.entity.Guild
44
import me.ddivad.judgebot.dataclasses.Rule
55
import me.ddivad.judgebot.services.DatabaseService
6-
import me.jakejmattson.discordkt.api.arguments.ArgumentResult
7-
import me.jakejmattson.discordkt.api.arguments.ArgumentType
8-
import me.jakejmattson.discordkt.api.arguments.Success
9-
import me.jakejmattson.discordkt.api.arguments.Error
6+
import me.jakejmattson.discordkt.api.arguments.*
107
import me.jakejmattson.discordkt.api.dsl.CommandEvent
118

12-
open class RuleArg(override val name : String = "Rule"): ArgumentType<Rule>() {
13-
override fun generateExamples(event: CommandEvent<*>): List<String> = mutableListOf("1","2","3")
9+
open class RuleArg(override val name: String = "Rule") : ArgumentType<Rule> {
10+
override val description = "A rule number"
11+
12+
override suspend fun generateExamples(event: CommandEvent<*>): List<String> = mutableListOf("1", "2", "3")
1413

1514
companion object : RuleArg()
1615

1716
override suspend fun convert(arg: String, args: List<String>, event: CommandEvent<*>): ArgumentResult<Rule> {
18-
val guild : Guild = event.guild ?: return Error("Rule arguments cannot be used outside of guilds")
17+
val guild: Guild = event.guild ?: return Error("Rule arguments cannot be used outside of guilds")
1918

2019
val databaseService: DatabaseService = event.discord.getInjectionObjects(DatabaseService::class)
2120

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ fun guildConfigCommands(configuration: Configuration,
1818
description = "Configure a guild to use Judgebot."
1919
requiredPermissionLevel = PermissionLevel.Administrator
2020
execute {
21-
if (configuration.hasGuildConfig(guild.id.longValue)) {
21+
if (configuration.hasGuildConfig(guild.id.value)) {
2222
respond("Guild configuration exists. To modify it use the commands to set values.")
2323
return@execute
2424
}
@@ -33,8 +33,8 @@ fun guildConfigCommands(configuration: Configuration,
3333
guildCommand("configuration") {
3434
description = "Update configuration parameters for this guild (conversation)."
3535
requiredPermissionLevel = PermissionLevel.Staff
36-
execute(GuildConfigArg.makeOptional("options")) {
37-
if (!configuration.hasGuildConfig(guild.id.longValue)) {
36+
execute(GuildConfigArg.optional("options")) {
37+
if (!configuration.hasGuildConfig(guild.id.value)) {
3838
respond("Please run the **setup** command to set this initially.")
3939
return@execute
4040
}

0 commit comments

Comments
 (0)