Skip to content

Commit b6c544e

Browse files
author
DaRacci
committed
chore: Push local changes
1 parent 823ddcb commit b6c544e

19 files changed

+996
-512
lines changed

build.gradle.kts

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,41 +16,33 @@ repositories {
1616

1717
dependencies {
1818

19+
implementation(platform(kotlin("bom")))
20+
implementation(libs.bundles.kotlin)
21+
implementation(libs.bundles.kotlinx)
22+
1923
implementation(eLib.kord.extensions)
2024
implementation(eLib.kord.phishing)
21-
implementation(libs.kotlin.stdlib)
2225

2326
// Logging dependencies
2427
implementation(eLib.groovy)
2528
implementation(eLib.logback)
2629
implementation(eLib.logging)
2730

2831
// Tags
29-
implementation(libs.kotlinx.serialization.json)
30-
implementation(libs.kotlinx.serialization.kaml)
31-
32-
@Suppress("GradlePackageUpdate")
33-
implementation("com.github.jezza:toml:1.2")
34-
35-
// Github API
36-
implementation("org.kohsuke:github-api:1.301")
32+
// implementation(libs.kotlinx.serialization.json)
33+
// implementation(libs.kotlinx.serialization.kaml)
3734

38-
// Exposed
35+
implementation(eLib.toml)
36+
implementation(eLib.githubAPI)
37+
implementation(eLib.kmongo)
3938
implementation(libs.bundles.exposed)
40-
41-
// SQLite
42-
implementation("org.xerial:sqlite-jdbc:3.36.0.3")
4339
}
4440

4541
application {
4642
// This is deprecated, but the Shadow plugin requires it
4743
mainClassName = "dev.racci.elixir.ElixirBotKt"
4844
}
4945

50-
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
51-
kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn"
52-
}
53-
5446
tasks.jar {
5547
manifest {
5648
attributes(

gradle.properties

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# suppress inspection "UnusedProperty" for whole file
22
group=dev.racci
3-
version=v0.1.1
3+
version=1.0.0-SNAPSHOT
44
addRunNumber=false
5-
kotlinVersion=1.6.10
6-
minixVersion=0.4.47
7-
minixConventions=1.6.10-47
5+
kotlinVersion=1.6.21
6+
minixVersion=0.6.165
7+
minixConventions=1.6.21-165
88
copyJar=false
99
org.gradle.caching=true
1010
org.gradle.console=rich

libs.versions.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,8 @@ groovy = { module = "org.codehaus.groovy:groovy", version.ref = "groovy" }
1010
kord-extensions = { module = "com.kotlindiscord.kord.extensions:kord-extensions", version.ref = "kord-extensions" }
1111
kord-phishing = { module = "com.kotlindiscord.kord.extensions:extra-phishing", version.ref = "kord-extensions" }
1212
logback = { module = "ch.qos.logback:logback-classic", version.ref = "logback" }
13-
logging = { module = "io.github.microutils:kotlin-logging", version.ref = "logging" }
13+
logging = { module = "io.github.microutils:kotlin-logging", version.ref = "logging" }
14+
15+
toml = "com.github.jezza:toml:1.2"
16+
githubAPI = "org.kohsuke:github-api:1.306"
17+
kmongo = "org.litote.kmongo:kmongo-coroutine-serialization:4.5.1"

settings.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ pluginManagement {
44
mavenCentral()
55
gradlePluginPortal()
66
maven("https://repo.racci.dev/releases")
7+
// TODO: Fix the standing issue in Minix Conventions so we don't need to add this.
78
maven("https://papermc.io/repo/repository/maven-public/")
89
}
910

1011
plugins {
1112
val kotlinVersion: String by settings
1213
kotlin("plugin.serialization") version kotlinVersion
14+
id("org.jetbrains.dokka") version kotlinVersion
1315
id("com.github.johnrengelman.shadow") version "7.1.2"
1416
}
1517
val minixConventions: String by settings

src/main/kotlin/dev/racci/elixir/ElixirBot.kt

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import com.github.jezza.TomlTable
66
import com.kotlindiscord.kord.extensions.ExtensibleBot
77
import com.kotlindiscord.kord.extensions.modules.extra.phishing.DetectionAction
88
import com.kotlindiscord.kord.extensions.modules.extra.phishing.extPhishing
9+
import com.mongodb.ConnectionString
10+
import com.mongodb.MongoClientSettings
911
import dev.kord.common.entity.PresenceStatus
1012
import dev.kord.gateway.Intent
1113
import dev.kord.gateway.PrivilegedIntent
@@ -22,32 +24,47 @@ import dev.racci.elixir.extensions.commands.util.Github
2224
import dev.racci.elixir.extensions.commands.util.Ping
2325
import dev.racci.elixir.support.ThreadInviter
2426
import dev.racci.elixir.utils.BOT_TOKEN
25-
import dev.racci.elixir.utils.CONFIG_PATH
27+
import dev.racci.elixir.utils.DATA_PATH
2628
import dev.racci.elixir.utils.GITHUB_OAUTH
27-
import dev.racci.elixir.utils.GUILD_ID
29+
import dev.racci.elixir.utils.MONGO_URI
2830
import dev.racci.elixir.utils.SENTRY_DSN
2931
import mu.KotlinLogging
32+
import org.bson.UuidRepresentation
3033
import org.kohsuke.github.GitHub
3134
import org.kohsuke.github.GitHubBuilder
32-
import java.nio.file.Files
33-
import java.nio.file.Path
34-
import java.nio.file.Paths
35+
import org.litote.kmongo.coroutine.coroutine
36+
import org.litote.kmongo.reactivestreams.KMongo
37+
import java.io.IOException
38+
import kotlin.io.path.Path
39+
import kotlin.io.path.inputStream
3540
import kotlin.properties.Delegates
3641

37-
val configPath: Path = Paths.get(CONFIG_PATH)
38-
val config: TomlTable = Toml.from(Files.newInputStream(Paths.get("$configPath/config.toml")))
39-
var github: GitHub? = null
42+
val config: TomlTable = Toml.from(Path("$DATA_PATH/config.toml").inputStream())
43+
val github: GitHub? = run {
44+
try {
45+
val inst = GitHubBuilder().withOAuthToken(GITHUB_OAUTH).build()
46+
gitHubLogger.info("Logged into GitHub!")
47+
inst
48+
} catch (e: IOException) {
49+
gitHubLogger.error(e) { "Failed to log into GitHub!" }
50+
null
51+
}
52+
}
53+
4054
var bot by Delegates.notNull<ExtensibleBot>()
4155

4256
private val gitHubLogger = KotlinLogging.logger {}
4357

4458
suspend fun main() {
4559
bot = ExtensibleBot(BOT_TOKEN) {
4660
applicationCommands {
47-
defaultGuild(GUILD_ID)
61+
enabled = true
62+
// defaultGuild(GUILD_ID) // No more specific guilds
4863
}
4964
members {
50-
fill(GUILD_ID)
65+
lockMemberRequests = true
66+
all()
67+
// fill(GUILD_ID)
5168
}
5269
intents {
5370
+Intent.GuildMembers
@@ -66,7 +83,7 @@ suspend fun main() {
6683
add(::Report)
6784
add(::JoinLeaveEvent)
6885
add(::MessageEvents)
69-
add(::Github)
86+
if (github != null) add(::Github)
7087
add(::Custom)
7188
add(::StatChannels)
7289
add(::LogEvents)
@@ -91,17 +108,7 @@ suspend fun main() {
91108
}
92109
presence {
93110
status = PresenceStatus.Online
94-
playing(config.get("activity") as String)
95-
}
96-
97-
try {
98-
@Suppress("BlockingMethodInNonBlockingContext")
99-
github = GitHubBuilder().withOAuthToken(GITHUB_OAUTH).build()
100-
gitHubLogger.info("Logged into GitHub!")
101-
} catch (exception: Exception) {
102-
exception.printStackTrace()
103-
gitHubLogger.error("Failed to log into GitHub!")
104-
throw Exception(exception)
111+
watching("you.")
105112
}
106113
}
107114
bot.start()

src/main/kotlin/dev/racci/elixir/database/DatabaseManager.kt

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,10 @@
11
package dev.racci.elixir.database
22

3-
import com.zaxxer.hikari.HikariConfig
4-
import com.zaxxer.hikari.HikariDataSource
5-
import dev.racci.elixir.utils.JDBC_URL
6-
import io.ktor.utils.io.errors.IOException
7-
import mu.KotlinLogging
8-
import org.jetbrains.exposed.sql.Database
9-
import org.jetbrains.exposed.sql.SchemaUtils
10-
import org.jetbrains.exposed.sql.Table
11-
import org.jetbrains.exposed.sql.transactions.transaction
12-
import java.nio.file.Files
13-
import java.nio.file.Path
14-
153
/**
164
* The Database system within the bot
175
* @author chalkyjeans
186
*/
19-
object DatabaseManager {
7+
/* object DatabaseManager {
208
219
private val logger = KotlinLogging.logger { }
2210
private val config = HikariConfig()
@@ -70,4 +58,4 @@ object DatabaseManager {
7058
SchemaUtils.createMissingTablesAndColumns(RoleSelector)
7159
}
7260
}
73-
}
61+
} */

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
1-
@file:OptIn(ExperimentalTime::class)
2-
31
package dev.racci.elixir.events
42

53
import com.kotlindiscord.kord.extensions.DISCORD_GREEN
64
import com.kotlindiscord.kord.extensions.DISCORD_RED
5+
import com.kotlindiscord.kord.extensions.checks.guildFor
76
import com.kotlindiscord.kord.extensions.extensions.Extension
87
import com.kotlindiscord.kord.extensions.extensions.event
98
import com.kotlindiscord.kord.extensions.sentry.BreadcrumbType
109
import dev.kord.core.behavior.channel.GuildMessageChannelBehavior
1110
import dev.kord.core.behavior.channel.createEmbed
1211
import dev.kord.core.event.guild.MemberJoinEvent
1312
import dev.kord.core.event.guild.MemberLeaveEvent
14-
import dev.racci.elixir.utils.JOIN_CHANNEL
13+
import dev.racci.elixir.utils.DatabaseHelper
1514
import kotlinx.coroutines.flow.count
1615
import kotlinx.datetime.Clock
17-
import kotlin.time.ExperimentalTime
1816

1917
/**
2018
* The join and leave logging for Members in the guild. More accurate join and leave times for users
@@ -27,9 +25,10 @@ class JoinLeaveEvent : Extension() {
2725
override suspend fun setup() {
2826
event<MemberJoinEvent> {
2927
action {
28+
val channel = DatabaseHelper.getConfig(guildFor(event)?.id)?.joinChannel ?: return@action
3029
val eventMember = event.member
3130
val guildMemberCount = event.getGuild().members.count()
32-
val joinChannel = event.guild.getChannel(JOIN_CHANNEL) as GuildMessageChannelBehavior
31+
val joinChannel = event.guild.getChannel(channel) as GuildMessageChannelBehavior
3332

3433
joinChannel.createEmbed {
3534
color = DISCORD_GREEN
@@ -59,9 +58,10 @@ class JoinLeaveEvent : Extension() {
5958
}
6059
event<MemberLeaveEvent> {
6160
action {
61+
val channel = DatabaseHelper.getConfig(guildFor(event)?.id)?.joinChannel ?: return@action
6262
val eventUser = event.user
6363
val guildMemberCount = event.getGuild().members.count()
64-
val joinChannel = event.guild.getChannel(JOIN_CHANNEL) as GuildMessageChannelBehavior
64+
val joinChannel = event.guild.getChannel(channel) as GuildMessageChannelBehavior
6565

6666
joinChannel.createEmbed {
6767
color = DISCORD_RED

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

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package dev.racci.elixir.events
22

33
import com.kotlindiscord.kord.extensions.DISCORD_PINK
4+
import com.kotlindiscord.kord.extensions.checks.guildFor
45
import com.kotlindiscord.kord.extensions.extensions.Extension
56
import com.kotlindiscord.kord.extensions.extensions.event
67
import com.kotlindiscord.kord.extensions.sentry.BreadcrumbType
@@ -13,8 +14,7 @@ import dev.kord.core.event.guild.MemberLeaveEvent
1314
import dev.kord.core.event.message.MessageBulkDeleteEvent
1415
import dev.kord.core.event.message.MessageDeleteEvent
1516
import dev.kord.core.event.message.MessageUpdateEvent
16-
import dev.racci.elixir.utils.GUILD_ID
17-
import dev.racci.elixir.utils.MESSAGE_LOGS
17+
import dev.racci.elixir.utils.DatabaseHelper
1818
import kotlinx.coroutines.flow.count
1919
import kotlinx.coroutines.flow.toSet
2020
import kotlinx.datetime.Clock
@@ -26,10 +26,10 @@ class LogEvents : Extension() {
2626
override val name = "LogEvents"
2727

2828
override suspend fun setup() {
29-
val logChannel = kord.getGuild(GUILD_ID)?.getChannel(MESSAGE_LOGS) as GuildMessageChannelBehavior
30-
3129
event<MessageDeleteEvent> {
3230
action {
31+
val guild = guildFor(event)
32+
val logChannel = DatabaseHelper.getConfig(guild?.id)?.logChannel?.let { guild!!.getChannelOrNull(it) } as? GuildMessageChannelBehavior ?: return@action
3333
if (event.message?.asMessageOrNull()?.author?.isBot == true) return@action
3434
val messageContent = event.message?.asMessageOrNull()?.content.toString()
3535
val eventMessage = event.message
@@ -71,6 +71,8 @@ class LogEvents : Extension() {
7171

7272
event<MessageUpdateEvent> {
7373
action {
74+
val guild = guildFor(event)
75+
val logChannel = DatabaseHelper.getConfig(guild?.id)?.logChannel?.let { guild!!.getChannelOrNull(it) } as? GuildMessageChannelBehavior ?: return@action
7476
if (event.message.asMessageOrNull()?.author?.isBot == true) return@action
7577
val messageContentBefore = event.old?.content.toString()
7678
val messageContentAfter = event.new.content.toString()
@@ -127,6 +129,8 @@ class LogEvents : Extension() {
127129

128130
event<MessageBulkDeleteEvent> {
129131
action {
132+
val guild = guildFor(event)
133+
val logChannel = DatabaseHelper.getConfig(guild?.id)?.logChannel?.let { guild!!.getChannelOrNull(it) } as? GuildMessageChannelBehavior ?: return@action
130134
val deletedCount = event.messages.count()
131135
val messageLocation = event.channel.id.value
132136

@@ -155,6 +159,8 @@ class LogEvents : Extension() {
155159

156160
event<InviteCreateEvent> {
157161
action {
162+
val guild = guildFor(event)
163+
val logChannel = DatabaseHelper.getConfig(guild?.id)?.logChannel?.let { guild!!.getChannelOrNull(it) } as? GuildMessageChannelBehavior ?: return@action
158164
val inviter = event.inviterMember?.nicknameMention ?: event.inviterId.toString()
159165
val maxUses = event.maxUses.toString()
160166
val maxAge = event.maxAge.toString()
@@ -193,6 +199,8 @@ class LogEvents : Extension() {
193199

194200
event<MemberJoinEvent> {
195201
action {
202+
val guild = guildFor(event)
203+
val logChannel = DatabaseHelper.getConfig(guild?.id)?.logChannel?.let { guild!!.getChannelOrNull(it) } as? GuildMessageChannelBehavior ?: return@action
196204
val eventMember = event.member
197205
val guildMemberCount = event.getGuild().members.count()
198206
val now = Clock.System.now()
@@ -225,6 +233,8 @@ class LogEvents : Extension() {
225233

226234
event<MemberLeaveEvent> {
227235
action {
236+
val guild = guildFor(event)
237+
val logChannel = DatabaseHelper.getConfig(guild?.id)?.logChannel?.let { guild!!.getChannelOrNull(it) } as? GuildMessageChannelBehavior ?: return@action
228238
val eventMember = event.old ?: return@action
229239
val guildMemberCount = event.getGuild().members.count()
230240
val now = Clock.System.now()

0 commit comments

Comments
 (0)