Skip to content

Commit bbc9b08

Browse files
DaRacciRacci
authored and
Racci
committed
refactor: Minor Update
Bumped hikari version to 5.0.1 Fixed logs reporting bot actions Removed leftover message delete logger in MessageEvents.kt Did a bit of refractoring and cleanup in RoleSelector.kt
1 parent 790df1b commit bbc9b08

File tree

6 files changed

+24
-79
lines changed

6 files changed

+24
-79
lines changed

build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ dependencies {
3737
implementation(libs.kaml)
3838

3939
// TOML reader
40+
@Suppress("GradlePackageUpdate")
4041
implementation("com.github.jezza:toml:1.2")
4142

4243
// Github API
@@ -48,7 +49,7 @@ dependencies {
4849
implementation("org.jetbrains.exposed:exposed-jdbc:0.37.3")
4950

5051
// Hikari
51-
implementation("com.zaxxer:HikariCP:5.0.0")
52+
implementation("com.zaxxer:HikariCP:5.0.1")
5253

5354
// SQLite
5455
implementation("org.xerial:sqlite-jdbc:3.36.0.3")

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Gradle props
1+
# suppress inspection "UnusedProperty" for whole file
22
org.gradle.jvmargs=-XX:MaxMetaspaceSize=1536M
33
org.gradle.parallel=true
44
kotlin.incremental=true

src/main/kotlin/dev/racci/elixir/events/LogEvents.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class LogEvents: Extension() {
3030

3131
event<MessageDeleteEvent> {
3232
action {
33-
if(event.message?.author?.id == kord.selfId) return@action
33+
if(event.message?.asMessageOrNull()?.author?.isBot == true) return@action
3434
val messageContent = event.message?.asMessageOrNull()?.content.toString()
3535
val eventMessage = event.message
3636
val messageLocation = event.channel.id.value

src/main/kotlin/dev/racci/elixir/events/MessageEvents.kt

Lines changed: 0 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
package dev.racci.elixir.events
55

66
import com.kotlindiscord.kord.extensions.DISCORD_BLURPLE
7-
import com.kotlindiscord.kord.extensions.DISCORD_PINK
87
import com.kotlindiscord.kord.extensions.components.components
98
import com.kotlindiscord.kord.extensions.components.ephemeralButton
109
import com.kotlindiscord.kord.extensions.extensions.Extension
@@ -13,18 +12,13 @@ import com.kotlindiscord.kord.extensions.sentry.BreadcrumbType
1312
import com.kotlindiscord.kord.extensions.types.respond
1413
import com.kotlindiscord.kord.extensions.utils.download
1514
import dev.kord.common.entity.ButtonStyle
16-
import dev.kord.core.behavior.channel.GuildMessageChannelBehavior
1715
import dev.kord.core.behavior.channel.createEmbed
1816
import dev.kord.core.behavior.edit
1917
import dev.kord.core.entity.Message
20-
import dev.kord.core.entity.channel.thread.ThreadChannel
2118
import dev.kord.core.event.message.MessageCreateEvent
22-
import dev.kord.core.event.message.MessageDeleteEvent
2319
import dev.kord.rest.builder.message.modify.actionRow
2420
import dev.kord.rest.builder.message.modify.embed
25-
import dev.racci.elixir.utils.MESSAGE_LOGS
2621
import dev.racci.elixir.utils.ResponseHelper
27-
import dev.racci.elixir.utils.SUPPORT_CHANNEL
2822
import io.ktor.client.HttpClient
2923
import io.ktor.client.request.post
3024
import io.ktor.client.statement.HttpResponse
@@ -41,54 +35,6 @@ class MessageEvents: Extension() {
4135
private val LOG_FILE_EXTENSIONS = setOf("log", "gz", "txt")
4236

4337
override suspend fun setup() {
44-
/**
45-
* Log the deletion of messages to the guilds [MESSAGE_LOGS] channel
46-
* @author NoComment1105
47-
*/
48-
event<MessageDeleteEvent> {
49-
action {
50-
// Ignore messages from Elixir itself
51-
if(event.message?.author?.id == kord.selfId) return@action
52-
if(event.message?.channel !is ThreadChannel && event.message?.channel?.id == SUPPORT_CHANNEL) return@action
53-
54-
val actionLog = event.guild?.getChannel(MESSAGE_LOGS) as GuildMessageChannelBehavior
55-
val messageContent = event.message?.asMessageOrNull()?.content.toString()
56-
val eventMessage = event.message
57-
val messageLocation = event.channel.id.value
58-
59-
actionLog.createEmbed {
60-
color = DISCORD_PINK
61-
title = "Message Deleted"
62-
description = "Location: <#$messageLocation>"
63-
timestamp = Clock.System.now()
64-
65-
field {
66-
name = "Message Contents:"
67-
value =
68-
messageContent.ifEmpty {
69-
"Failed to get content of message\nMessage was likely from a Bot"
70-
}
71-
inline = false
72-
}
73-
field {
74-
name = "Message Author:"
75-
value = eventMessage?.author?.tag.toString()
76-
inline = true
77-
}
78-
field {
79-
name = "Author ID:"
80-
value = eventMessage?.author?.id.toString()
81-
inline = true
82-
}
83-
}
84-
85-
sentry.breadcrumb(BreadcrumbType.Info) {
86-
category = "events.messageevents.MessageDeleted"
87-
message = "A message was deleted"
88-
data["content"] = messageContent.ifEmpty {"Failed to get content of message"}
89-
}
90-
}
91-
}
9238

9339
/**
9440
* Upload files that have the extensions specified in [LOG_FILE_EXTENSIONS] to hastebin, giving a user confirmation

src/main/kotlin/dev/racci/elixir/extensions/RoleSelector.kt

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,9 @@ class RoleSelector: Extension() {
8282
rsl["name"] as String,
8383
rsl["channel"] as Long,
8484
rsl["autoRemoveOnLimit", false] as Boolean,
85-
rsl.getOrDefault("attachment", "") as String,
86-
(rsl.getOrDefault("limit", -1) as Long).toInt(),
87-
rsl.getOrDefault("removable", true) as Boolean,
85+
rsl["attachment", ""] as String,
86+
rsl["limit", -1] as Long,
87+
rsl["removable", true] as Boolean,
8888
rsl["role"] as TomlArray?
8989
)
9090
}
@@ -143,13 +143,13 @@ class RoleSelector: Extension() {
143143
}
144144

145145
private suspend fun roleLimitCheck(
146-
limit: Int,
146+
limit: Long,
147147
autoRemoveOnLimit: Boolean,
148148
member: MemberBehavior,
149149
selectorRoles: List<RoleBehavior>,
150150
context: PublicInteractionButtonContext,
151151
): String? {
152-
if(limit == -1) return ""
152+
if(limit == -1L) return ""
153153
val conflictingRoles = member.asMember().roles.filter(selectorRoles::contains)
154154
if(conflictingRoles.count() < limit) return ""
155155
return if(autoRemoveOnLimit) {
@@ -167,11 +167,12 @@ class RoleSelector: Extension() {
167167
}
168168

169169
private suspend fun roleIncompatibleWithCheck(
170-
incompatibleWith: Collection<RoleBehavior>,
170+
incompatibleWith: Collection<RoleBehavior>?,
171171
roleBehavior: RoleBehavior,
172172
member: MemberBehavior,
173173
context: PublicInteractionButtonContext,
174174
): String? {
175+
incompatibleWith ?: return ""
175176
val incompatible = member.asMember().getAnyRole(incompatibleWith)
176177
return if(incompatible != null) {
177178
context.interactionResponse.followUpEphemeral {
@@ -205,7 +206,7 @@ class RoleSelector: Extension() {
205206
channel: Long,
206207
autoRemoveOnLimit: Boolean,
207208
attachment: String,
208-
limit: Int,
209+
limit: Long,
209210
removable: Boolean,
210211
roles: TomlArray?,
211212
) {
@@ -219,12 +220,17 @@ class RoleSelector: Extension() {
219220
val selectorRoles = roles.map { RoleBehavior(GUILD_ID, Snowflake((it as TomlTable)["roleId"] as Long), kord) }
220221

221222
for(role in roles.asList() as List<TomlTable>) {
222-
val roleBehavior = selectorRoles.first { it.id.value.toLong() == role["roleId"] as Long }
223+
val roleName: String = role["name"] as String
224+
val roleEmoji: String? = role["emoji"] as? String
225+
val roleRoleId: Long = role["roleId"] as Long
226+
val roleRequiredRoleId: Long? = role["requiredRoleId"] as? Long
227+
val roleIncompatibleWith: TomlArray? = role["incompatibleWith"] as? TomlArray
228+
val roleBehavior = selectorRoles.first { it.id.value.toLong() == roleRoleId }
223229

224230
publicButton {
225-
label = role["name"] as String
226-
if((role["emoji"] as String).isNotEmpty()) {
227-
val emoji = (role["emoji"] as String).split(':', limit = 3)
231+
label = roleName
232+
if(!roleEmoji.isNullOrBlank()) {
233+
val emoji = roleEmoji.split(':', limit = 3)
228234

229235
partialEmoji = DiscordPartialEmoji.dsl {
230236
id = Snowflake(emoji[0])
@@ -234,7 +240,7 @@ class RoleSelector: Extension() {
234240
}
235241
style = ButtonStyle.Secondary
236242

237-
val incompatibleWith = (role["incompatibleWith"] as TomlArray).map {
243+
val incompatibleWith = roleIncompatibleWith?.map {
238244
RoleBehavior(GUILD_ID, Snowflake(it.toString()), kord)
239245
}
240246

@@ -264,7 +270,7 @@ class RoleSelector: Extension() {
264270
) ?: return@action
265271

266272
requiredRoleCheck(
267-
role["requiredRoleId"] as? Long,
273+
roleRequiredRoleId,
268274
member,
269275
this
270276
) ?: return@action
@@ -278,15 +284,6 @@ class RoleSelector: Extension() {
278284
}
279285
}
280286

281-
fun Member.hasAnyRole(roles: Collection<RoleBehavior>): Boolean {
282-
return if (roles.isEmpty()) {
283-
true
284-
} else {
285-
val ids = roles.map { it.id }
286-
roleIds.any { ids.contains(id) }
287-
}
288-
}
289-
290287
fun Member.getAnyRole(roles: Collection<RoleBehavior>): RoleBehavior? {
291288
return if (roles.isEmpty()) {
292289
null

src/main/kotlin/dev/racci/elixir/extensions/commands/util/Github.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
@file:Suppress("BlockingMethodInNonBlockingContext")
12
package dev.racci.elixir.extensions.commands.util
23

34
import com.kotlindiscord.kord.extensions.DISCORD_RED

0 commit comments

Comments
 (0)