From 847e46c8ee9d6dcb6ed9715d195986079e25437e Mon Sep 17 00:00:00 2001 From: Jannik Reimers Date: Sat, 23 Nov 2024 23:53:16 +0100 Subject: [PATCH 1/3] actually delete the collection if its empty --- .../jansel/feixiao/database/collections/StreamerCollection.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/kotlin/dev/jansel/feixiao/database/collections/StreamerCollection.kt b/src/main/kotlin/dev/jansel/feixiao/database/collections/StreamerCollection.kt index 8df3691..549159d 100644 --- a/src/main/kotlin/dev/jansel/feixiao/database/collections/StreamerCollection.kt +++ b/src/main/kotlin/dev/jansel/feixiao/database/collections/StreamerCollection.kt @@ -41,6 +41,9 @@ class StreamerCollection : KordExKoinComponent { StreamerData::name eq streamerName, setValue(StreamerData::servers, coll.servers - Server(guildId, channelId, roleId)) ) + if (coll.servers.isEmpty()) { + collection.deleteOne(StreamerData::name eq streamerName) + } } } } From d263cf39b99022864bd2d0a1be4c269cf7e913ac Mon Sep 17 00:00:00 2001 From: Jannik Reimers Date: Sun, 24 Nov 2024 00:14:33 +0100 Subject: [PATCH 2/3] manually define kord version bc build broke somehow, also set the datacollection during build arleady --- build.gradle.kts | 4 ++-- src/main/kotlin/dev/jansel/feixiao/App.kt | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index f3a0b17..ff252cd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -32,12 +32,12 @@ dependencies { kordEx { kordExVersion = "2.2.1-SNAPSHOT" - + kordVersion = "0.16.0-SNAPSHOT" jvmTarget = 21 bot { // See https://docs.kordex.dev/data-collection.html - dataCollection(DataCollection.Standard) + dataCollection(DataCollection.None) mainClass = "dev.jansel.feixiao.AppKt" } diff --git a/src/main/kotlin/dev/jansel/feixiao/App.kt b/src/main/kotlin/dev/jansel/feixiao/App.kt index 32e3ca4..f1ddbde 100644 --- a/src/main/kotlin/dev/jansel/feixiao/App.kt +++ b/src/main/kotlin/dev/jansel/feixiao/App.kt @@ -23,7 +23,6 @@ val logger = KotlinLogging.logger { } suspend fun main() { val bot = ExtensibleBot(token) { database(true) - dataCollectionMode = DataCollection.None extensions { add(::EventHooks) add(::StreamerCommand) From 016c9688c8a9973cec4a56dc883a334fc2310e73 Mon Sep 17 00:00:00 2001 From: Jannik Reimers Date: Sun, 24 Nov 2024 02:34:00 +0100 Subject: [PATCH 3/3] pls let this work thanks --- .../database/collections/StreamerCollection.kt | 3 --- .../dev/jansel/feixiao/extensions/EventHooks.kt | 14 +++++++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/dev/jansel/feixiao/database/collections/StreamerCollection.kt b/src/main/kotlin/dev/jansel/feixiao/database/collections/StreamerCollection.kt index 549159d..8df3691 100644 --- a/src/main/kotlin/dev/jansel/feixiao/database/collections/StreamerCollection.kt +++ b/src/main/kotlin/dev/jansel/feixiao/database/collections/StreamerCollection.kt @@ -41,9 +41,6 @@ class StreamerCollection : KordExKoinComponent { StreamerData::name eq streamerName, setValue(StreamerData::servers, coll.servers - Server(guildId, channelId, roleId)) ) - if (coll.servers.isEmpty()) { - collection.deleteOne(StreamerData::name eq streamerName) - } } } } diff --git a/src/main/kotlin/dev/jansel/feixiao/extensions/EventHooks.kt b/src/main/kotlin/dev/jansel/feixiao/extensions/EventHooks.kt index 2a76f6d..246afb1 100644 --- a/src/main/kotlin/dev/jansel/feixiao/extensions/EventHooks.kt +++ b/src/main/kotlin/dev/jansel/feixiao/extensions/EventHooks.kt @@ -1,11 +1,14 @@ package dev.jansel.feixiao.extensions import dev.jansel.feixiao.database.collections.StreamerCollection +import dev.jansel.feixiao.database.entities.StreamerData import dev.jansel.feixiao.logger import dev.jansel.feixiao.twitchClient import dev.kord.core.event.gateway.ReadyEvent import dev.kordex.core.extensions.Extension import dev.kordex.core.extensions.event +import org.litote.kmongo.deleteMany +import org.litote.kmongo.eq class EventHooks : Extension() { override val name = "eventhooks" @@ -15,10 +18,15 @@ class EventHooks : Extension() { action { logger.info { "Bot is ready!" } kord.editPresence { listening("the database") } - // check every entry in the database and enable the stream event listener + // check every entry in the database and enable the stream event listener if a server is listening to the streamer StreamerCollection().collection.find().toList().forEach { - twitchClient!!.clientHelper.enableStreamEventListener(it.name) - logger.info { "Enabled stream event listener for ${it.name}" } + if (it.servers.isNotEmpty()) { + twitchClient!!.clientHelper.enableStreamEventListener(it.name) + logger.info { "Enabled stream event listener for ${it.name}" } + } else { + logger.info { "No servers are listening to ${it.name}, deleting from the database..." } + StreamerCollection().collection.deleteMany(StreamerData::name eq it.name) + } } } }