diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b63888ee..119e15e9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v4 - name: Set up Java uses: actions/setup-java@v1 @@ -30,21 +30,21 @@ jobs: arguments: build - name: Upload artifacts (Main JAR) - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: Main JAR path: build/libs/*-all.jar - name: Upload artifacts (JARs) - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: JARs path: build/libs/*.jar - name: Upload artifacts (Module JARs) - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: Module JARs diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml index ec7ac137..3b3650d9 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/develop.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v4 - name: Set up Java uses: actions/setup-java@v1 @@ -27,21 +27,21 @@ jobs: arguments: build - name: Upload artifacts (Main JAR) - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: Main JAR path: build/libs/*-all.jar - name: Upload artifacts (JARs) - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: JARs path: build/libs/*.jar - name: Upload artifacts (Module JARs) - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: Module JARs diff --git a/.github/workflows/root.yml b/.github/workflows/root.yml index 27207990..3a554287 100644 --- a/.github/workflows/root.yml +++ b/.github/workflows/root.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v4 - name: Set up Java uses: actions/setup-java@v1 @@ -28,21 +28,21 @@ jobs: arguments: build - name: Upload artifacts (Main JAR) - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: Main JAR path: build/libs/*-all.jar - name: Upload artifacts (JARs) - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: JARs path: build/libs/*.jar - name: Upload artifacts (Module JARs) - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: Module JARs diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index 996b1512..d4b7accb 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 128cf299..21ae45d6 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -4,7 +4,6 @@ - diff --git a/Dockerfile b/Dockerfile index 8b7be2dd..f70c9d6a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,9 +3,12 @@ FROM openjdk:17-jdk-slim COPY build/libs/CozyDiscord-*-all.jar /usr/local/lib/CozyDiscord.jar RUN mkdir /bot +RUN mkdir /bot/data RUN mkdir /bot/plugins -RUN mkdir /data WORKDIR /bot +VOLUME /bot/data +VOLUME /bot/plugins + ENTRYPOINT ["java", "-Xms2G", "-Xmx2G", "-jar", "/usr/local/lib/CozyDiscord.jar"] diff --git a/README.md b/README.md index 839d1d52..697b6236 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ ENVIRONMENT=dev * `GITHUB_TOKEN`: GitHub auth token, for the GitHub project management commands -Once you've filled out your `.env` file, you can use the `run` gradle task to launch the bot. If this is your first +Once you've filled out your `.env` file, you can use the `dev` gradle task to launch the bot. If this is your first run, you'll want to start with the `quilt` mode as this is the mode that runs the database migrations. After that, feel free to set up and test whichever mode you need to work with. diff --git a/build.gradle.kts b/build.gradle.kts index 7bd2e96c..c92ac8c1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,4 +1,5 @@ import com.expediagroup.graphql.plugin.gradle.config.GraphQLSerializer +import dev.kordex.gradle.plugins.kordex.DataCollection /* * This Source Code Form is subject to the terms of the Mozilla Public @@ -52,17 +53,21 @@ dependencies { } kordEx { + version = "2.2.1-SNAPSHOT" + bot { + dataCollection(DataCollection.Minimal) + mainClass = "org.quiltmc.community.AppKt" } - module("annotations") - module("extra-mappings") - module("extra-phishing") - module("extra-pluralkit") - module("extra-tags") - module("extra-welcome") - module("unsafe") + module("dev-unsafe") + + module("func-phishing") + module("func-tags") + module("func-welcome") + + module("pluralkit") } graphql { @@ -76,7 +81,7 @@ graphql { gitHooks { setHooks( - mapOf("pre-commit" to "updateLicense detekt") + mapOf("pre-commit" to "applyLicenses detekt") ) } diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index a9800e4f..148257d3 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -17,14 +17,14 @@ dependencies { implementation(gradleApi()) implementation(localGroovy()) - implementation(kotlin("gradle-plugin", version = "2.0.20-Beta1")) - implementation(kotlin("serialization", version = "2.0.20-Beta1")) + implementation(kotlin("gradle-plugin", version = "2.0.20")) + implementation(kotlin("serialization", version = "2.0.20")) implementation("com.github.jakemarsden", "git-hooks-gradle-plugin", "0.0.2") implementation("com.expediagroup.graphql", "com.expediagroup.graphql.gradle.plugin", "7.1.4") implementation("com.github.johnrengelman.shadow", "com.github.johnrengelman.shadow.gradle.plugin", "8.1.1") - implementation("com.google.devtools.ksp", "com.google.devtools.ksp.gradle.plugin", "2.0.20-Beta1-1.0.22") - implementation("dev.kordex.gradle.plugins", "kordex", "1.1.3") + implementation("com.google.devtools.ksp", "com.google.devtools.ksp.gradle.plugin", "2.0.20-1.0.24") + implementation("dev.kordex.gradle.plugins", "kordex", "1.4.1") implementation("dev.yumi", "yumi-gradle-licenser", "1.2.0") implementation("io.gitlab.arturbosch.detekt", "detekt-gradle-plugin", "1.23.6") } diff --git a/buildSrc/src/main/kotlin/cozy-module.gradle.kts b/buildSrc/src/main/kotlin/cozy-module.gradle.kts index 60df1fce..a276835a 100644 --- a/buildSrc/src/main/kotlin/cozy-module.gradle.kts +++ b/buildSrc/src/main/kotlin/cozy-module.gradle.kts @@ -16,7 +16,7 @@ plugins { } group = "org.quiltmc.community" -version = "1.0.1-SNAPSHOT" +version = "1.1.0-SNAPSHOT" repositories { maven { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 81a6f0d7..9e748e1e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] detekt = "1.23.6" -kotlin = "2.0.20-Beta1" +kotlin = "2.0.20" graphql = "7.1.4" autolink = "0.11.0" @@ -19,7 +19,6 @@ kx-ser = "1.7.1" logback = "1.5.6" logback-groovy = "1.14.5" logging = "7.0.0" -moshi = "1.15.1" rgxgen = "2.0" semver = "2.0.0" @@ -49,7 +48,5 @@ kx-ser = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version. logback = { module = "ch.qos.logback:logback-classic", version.ref = "logback" } logback-groovy = { module = "io.github.virtualdogbert:logback-groovy-config", version.ref = "logback-groovy" } logging = { module = "io.github.oshai:kotlin-logging", version.ref = "logging" } -moshi-adapters = { module = "com.squareup.moshi:moshi-adapters", version.ref = "moshi" } -moshi-kotlin = { module = "com.squareup.moshi:moshi-kotlin", version.ref = "moshi" } rgxgen = { module = "com.github.curious-odd-man:rgxgen", version.ref = "rgxgen" } semver = { module = "io.github.z4kn4fein:semver", version.ref = "semver" } diff --git a/module-ama/build.gradle.kts b/module-ama/build.gradle.kts index 1ea0d550..2efa08a2 100644 --- a/module-ama/build.gradle.kts +++ b/module-ama/build.gradle.kts @@ -15,7 +15,6 @@ dependencies { } kordEx { - module("annotations") - module("extra-pluralkit") - module("unsafe") + module("pluralkit") + module("dev-unsafe") } diff --git a/module-ama/src/main/kotlin/org/quiltmc/community/cozy/modules/ama/AmaExtension.kt b/module-ama/src/main/kotlin/org/quiltmc/community/cozy/modules/ama/AmaExtension.kt index fc13c0f2..6f8e6af1 100644 --- a/module-ama/src/main/kotlin/org/quiltmc/community/cozy/modules/ama/AmaExtension.kt +++ b/module-ama/src/main/kotlin/org/quiltmc/community/cozy/modules/ama/AmaExtension.kt @@ -6,26 +6,6 @@ package org.quiltmc.community.cozy.modules.ama -import com.kotlindiscord.kord.extensions.checks.anyGuild -import com.kotlindiscord.kord.extensions.checks.guildFor -import com.kotlindiscord.kord.extensions.commands.Arguments -import com.kotlindiscord.kord.extensions.commands.application.slash.ephemeralSubCommand -import com.kotlindiscord.kord.extensions.commands.converters.impl.channel -import com.kotlindiscord.kord.extensions.commands.converters.impl.optionalChannel -import com.kotlindiscord.kord.extensions.components.ComponentRegistry -import com.kotlindiscord.kord.extensions.components.components -import com.kotlindiscord.kord.extensions.components.ephemeralButton -import com.kotlindiscord.kord.extensions.components.forms.ModalForm -import com.kotlindiscord.kord.extensions.components.forms.widgets.LineTextWidget -import com.kotlindiscord.kord.extensions.components.forms.widgets.ParagraphTextWidget -import com.kotlindiscord.kord.extensions.extensions.Extension -import com.kotlindiscord.kord.extensions.extensions.ephemeralSlashCommand -import com.kotlindiscord.kord.extensions.extensions.event -import com.kotlindiscord.kord.extensions.modules.unsafe.annotations.UnsafeAPI -import com.kotlindiscord.kord.extensions.modules.unsafe.extensions.unsafeSlashCommand -import com.kotlindiscord.kord.extensions.modules.unsafe.types.InitialSlashCommandResponse -import com.kotlindiscord.kord.extensions.modules.unsafe.types.ackEphemeral -import com.kotlindiscord.kord.extensions.modules.unsafe.types.respondEphemeral import dev.kord.common.entity.ButtonStyle import dev.kord.common.entity.ChannelType import dev.kord.common.entity.Permission @@ -47,6 +27,24 @@ import dev.kord.core.entity.channel.GuildMessageChannel import dev.kord.core.entity.channel.TopGuildChannel import dev.kord.core.event.interaction.GuildButtonInteractionCreateEvent import dev.kord.rest.builder.message.embed +import dev.kordex.core.checks.anyGuild +import dev.kordex.core.checks.guildFor +import dev.kordex.core.commands.Arguments +import dev.kordex.core.commands.application.slash.ephemeralSubCommand +import dev.kordex.core.commands.converters.impl.channel +import dev.kordex.core.commands.converters.impl.optionalChannel +import dev.kordex.core.components.ComponentRegistry +import dev.kordex.core.components.components +import dev.kordex.core.components.ephemeralButton +import dev.kordex.core.components.forms.ModalForm +import dev.kordex.core.components.forms.widgets.LineTextWidget +import dev.kordex.core.components.forms.widgets.ParagraphTextWidget +import dev.kordex.core.extensions.Extension +import dev.kordex.core.extensions.ephemeralSlashCommand +import dev.kordex.core.extensions.event +import dev.kordex.modules.dev.unsafe.annotations.UnsafeAPI +import dev.kordex.modules.dev.unsafe.commands.slash.InitialSlashCommandResponse +import dev.kordex.modules.dev.unsafe.extensions.unsafeSlashCommand import org.koin.core.component.inject import org.quiltmc.community.cozy.modules.ama.data.AmaConfig import org.quiltmc.community.cozy.modules.ama.data.AmaData @@ -435,6 +433,7 @@ public class AmaExtension : Extension() { name = "answer-queue-channel" description = "The channel for asked questions to queue up in before response" requiredChannelTypes = mutableSetOf(ChannelType.GuildText) + validate { val checkResult = value.checkPermission(Permissions(Permission.ViewChannel, Permission.SendMessages)) failIf(checkResult == false, "The bot cannot see this channel") @@ -446,6 +445,7 @@ public class AmaExtension : Extension() { name = "live-chat-channel" description = "The channel questions will be sent to when answered by staff" requiredChannelTypes = mutableSetOf(ChannelType.GuildText) + validate { val checkResult = value.checkPermission(Permissions(Permission.ViewChannel, Permission.SendMessages)) failIf(checkResult == false, "The bot cannot see this channel") diff --git a/module-ama/src/main/kotlin/org/quiltmc/community/cozy/modules/ama/_PkUtils.kt b/module-ama/src/main/kotlin/org/quiltmc/community/cozy/modules/ama/_PkUtils.kt index 334cb48b..dc044ea9 100644 --- a/module-ama/src/main/kotlin/org/quiltmc/community/cozy/modules/ama/_PkUtils.kt +++ b/module-ama/src/main/kotlin/org/quiltmc/community/cozy/modules/ama/_PkUtils.kt @@ -6,14 +6,14 @@ package org.quiltmc.community.cozy.modules.ama -import com.kotlindiscord.kord.extensions.modules.extra.pluralkit.api.PKMemberPrivacy -import com.kotlindiscord.kord.extensions.modules.extra.pluralkit.api.PKProxyTag -import com.kotlindiscord.kord.extensions.modules.extra.pluralkit.api.PKSystem -import com.kotlindiscord.kord.extensions.utils.envOrNull -import com.kotlindiscord.kord.extensions.utils.getKoin import dev.kord.common.Color import dev.kord.common.entity.optional.Optional import dev.kord.core.behavior.UserBehavior +import dev.kordex.core.utils.envOrNull +import dev.kordex.core.utils.getKoin +import dev.kordex.modules.pluralkit.api.PKMemberPrivacy +import dev.kordex.modules.pluralkit.api.PKProxyTag +import dev.kordex.modules.pluralkit.api.PKSystem import io.ktor.client.* import io.ktor.client.call.* import io.ktor.client.plugins.contentnegotiation.* diff --git a/module-ama/src/main/kotlin/org/quiltmc/community/cozy/modules/ama/_Utils.kt b/module-ama/src/main/kotlin/org/quiltmc/community/cozy/modules/ama/_Utils.kt index c06d6899..dcd2666c 100644 --- a/module-ama/src/main/kotlin/org/quiltmc/community/cozy/modules/ama/_Utils.kt +++ b/module-ama/src/main/kotlin/org/quiltmc/community/cozy/modules/ama/_Utils.kt @@ -6,15 +6,6 @@ package org.quiltmc.community.cozy.modules.ama -import com.kotlindiscord.kord.extensions.DISCORD_BLURPLE -import com.kotlindiscord.kord.extensions.DISCORD_GREEN -import com.kotlindiscord.kord.extensions.DISCORD_RED -import com.kotlindiscord.kord.extensions.DISCORD_YELLOW -import com.kotlindiscord.kord.extensions.builders.ExtensibleBotBuilder -import com.kotlindiscord.kord.extensions.components.ComponentContainer -import com.kotlindiscord.kord.extensions.components.components -import com.kotlindiscord.kord.extensions.components.ephemeralButton -import com.kotlindiscord.kord.extensions.utils.loadModule import dev.kord.common.Color import dev.kord.common.entity.ButtonStyle import dev.kord.common.entity.Snowflake @@ -26,6 +17,15 @@ import dev.kord.core.entity.User import dev.kord.core.entity.channel.GuildMessageChannel import dev.kord.rest.builder.message.EmbedBuilder import dev.kord.rest.builder.message.embed +import dev.kordex.core.DISCORD_BLURPLE +import dev.kordex.core.DISCORD_GREEN +import dev.kordex.core.DISCORD_RED +import dev.kordex.core.DISCORD_YELLOW +import dev.kordex.core.builders.ExtensionsBuilder +import dev.kordex.core.components.ComponentContainer +import dev.kordex.core.components.components +import dev.kordex.core.components.ephemeralButton +import dev.kordex.core.utils.loadModule import kotlinx.serialization.KSerializer import kotlinx.serialization.descriptors.PrimitiveKind import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor @@ -36,7 +36,7 @@ import org.koin.dsl.bind import org.quiltmc.community.cozy.modules.ama.data.AmaData import org.quiltmc.community.cozy.modules.ama.enums.QuestionStatusFlag -public fun ExtensibleBotBuilder.ExtensionsBuilder.extAma(data: AmaData) { +public fun ExtensionsBuilder.extAma(data: AmaData) { loadModule { single { data } bind AmaData::class } add(::AmaExtension) diff --git a/module-ama/src/main/kotlin/org/quiltmc/community/cozy/modules/ama/data/AmaData.kt b/module-ama/src/main/kotlin/org/quiltmc/community/cozy/modules/ama/data/AmaData.kt index 4df4c234..a9d37c68 100644 --- a/module-ama/src/main/kotlin/org/quiltmc/community/cozy/modules/ama/data/AmaData.kt +++ b/module-ama/src/main/kotlin/org/quiltmc/community/cozy/modules/ama/data/AmaData.kt @@ -6,10 +6,10 @@ package org.quiltmc.community.cozy.modules.ama.data -import com.kotlindiscord.kord.extensions.checks.hasPermission -import com.kotlindiscord.kord.extensions.checks.types.CheckContextWithCache import dev.kord.common.entity.Permission import dev.kord.common.entity.Snowflake +import dev.kordex.core.checks.hasPermission +import dev.kordex.core.checks.types.CheckContextWithCache public interface AmaData { public suspend fun getConfig(guildId: Snowflake): AmaConfig? diff --git a/module-log-parser/build.gradle.kts b/module-log-parser/build.gradle.kts index a6c30d78..3c56ed97 100644 --- a/module-log-parser/build.gradle.kts +++ b/module-log-parser/build.gradle.kts @@ -28,7 +28,6 @@ dependencies { } kordEx { - module("annotations") - module("extra-pluralkit") - module("unsafe") + module("pluralkit") + module("dev-unsafe") } diff --git a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/LogParserExtension.kt b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/LogParserExtension.kt index 7859eed2..e43477be 100644 --- a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/LogParserExtension.kt +++ b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/LogParserExtension.kt @@ -9,18 +9,18 @@ package org.quiltmc.community.cozy.modules.logs import com.charleskorn.kaml.Yaml -import com.kotlindiscord.kord.extensions.DISCORD_GREEN -import com.kotlindiscord.kord.extensions.DISCORD_RED -import com.kotlindiscord.kord.extensions.DISCORD_YELLOW -import com.kotlindiscord.kord.extensions.extensions.Extension -import com.kotlindiscord.kord.extensions.utils.capitalizeWords -import com.kotlindiscord.kord.extensions.utils.envOrNull -import com.kotlindiscord.kord.extensions.utils.respond -import com.kotlindiscord.kord.extensions.utils.scheduling.Scheduler import dev.kord.core.entity.Message import dev.kord.core.event.Event import dev.kord.rest.builder.message.create.MessageCreateBuilder import dev.kord.rest.builder.message.embed +import dev.kordex.core.DISCORD_GREEN +import dev.kordex.core.DISCORD_RED +import dev.kordex.core.DISCORD_YELLOW +import dev.kordex.core.extensions.Extension +import dev.kordex.core.utils.capitalizeWords +import dev.kordex.core.utils.envOrNull +import dev.kordex.core.utils.respond +import dev.kordex.core.utils.scheduling.Scheduler import io.github.oshai.kotlinlogging.KLogger import io.github.oshai.kotlinlogging.KotlinLogging import io.ktor.client.* diff --git a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/Utils.kt b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/Utils.kt index 1925391f..80c0308a 100644 --- a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/Utils.kt +++ b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/Utils.kt @@ -6,9 +6,9 @@ package org.quiltmc.community.cozy.modules.logs -import com.kotlindiscord.kord.extensions.builders.ExtensibleBotBuilder -import com.kotlindiscord.kord.extensions.utils.loadModule import com.unascribed.flexver.FlexVerComparator +import dev.kordex.core.builders.ExtensionsBuilder +import dev.kordex.core.utils.loadModule import org.koin.dsl.bind import org.nibor.autolink.LinkExtractor import org.nibor.autolink.LinkType @@ -17,7 +17,7 @@ import org.quiltmc.community.cozy.modules.logs.config.SimpleLogParserConfig import java.net.URI import java.net.URL -public inline fun ExtensibleBotBuilder.ExtensionsBuilder.extLogParser( +public inline fun ExtensionsBuilder.extLogParser( builder: (SimpleLogParserConfig.Builder).() -> Unit ) { val config = SimpleLogParserConfig(builder) @@ -27,7 +27,7 @@ public inline fun ExtensibleBotBuilder.ExtensionsBuilder.extLogParser( add(::LogParserExtension) } -public fun ExtensibleBotBuilder.ExtensionsBuilder.extLogParser(config: LogParserConfig) { +public fun ExtensionsBuilder.extLogParser(config: LogParserConfig) { loadModule { single { config } bind LogParserConfig::class } add(::LogParserExtension) diff --git a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/config/LogParserConfig.kt b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/config/LogParserConfig.kt index c961c169..fc231089 100644 --- a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/config/LogParserConfig.kt +++ b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/config/LogParserConfig.kt @@ -6,8 +6,8 @@ package org.quiltmc.community.cozy.modules.logs.config -import com.kotlindiscord.kord.extensions.checks.types.Check import dev.kord.core.event.Event +import dev.kordex.core.checks.types.Check import org.quiltmc.community.cozy.modules.logs.types.BaseLogHandler import org.quiltmc.community.cozy.modules.logs.types.LogParser import org.quiltmc.community.cozy.modules.logs.types.LogProcessor diff --git a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/config/SimpleLogParserConfig.kt b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/config/SimpleLogParserConfig.kt index 9dcb1963..b226ec86 100644 --- a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/config/SimpleLogParserConfig.kt +++ b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/config/SimpleLogParserConfig.kt @@ -6,7 +6,7 @@ package org.quiltmc.community.cozy.modules.logs.config -import com.kotlindiscord.kord.extensions.checks.types.Check +import dev.kordex.core.checks.types.Check import org.quiltmc.community.cozy.modules.logs.parsers.EnvironmentParser import org.quiltmc.community.cozy.modules.logs.parsers.LauncherParser import org.quiltmc.community.cozy.modules.logs.parsers.LoaderParser diff --git a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/events/DefaultEventHandler.kt b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/events/DefaultEventHandler.kt index 00577b05..57c0cdd9 100644 --- a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/events/DefaultEventHandler.kt +++ b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/events/DefaultEventHandler.kt @@ -6,8 +6,8 @@ package org.quiltmc.community.cozy.modules.logs.events -import com.kotlindiscord.kord.extensions.extensions.event import dev.kord.core.event.message.MessageCreateEvent +import dev.kordex.core.extensions.event import org.quiltmc.community.cozy.modules.logs.LogParserExtension public class DefaultEventHandler(private val extension: LogParserExtension) : EventHandler { diff --git a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/events/PKEventHandler.kt b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/events/PKEventHandler.kt index 5a113e28..d868279a 100644 --- a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/events/PKEventHandler.kt +++ b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/events/PKEventHandler.kt @@ -6,8 +6,8 @@ package org.quiltmc.community.cozy.modules.logs.events -import com.kotlindiscord.kord.extensions.extensions.event -import com.kotlindiscord.kord.extensions.modules.extra.pluralkit.events.PKMessageCreateEvent +import dev.kordex.core.extensions.event +import dev.kordex.modules.pluralkit.events.PKMessageCreateEvent import org.quiltmc.community.cozy.modules.logs.LogParserExtension public class PKEventHandler(private val extension: LogParserExtension) : EventHandler { diff --git a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/parsers/launchers/TechnicParser.kt b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/parsers/launchers/TechnicParser.kt index 88073e6b..787030fc 100644 --- a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/parsers/launchers/TechnicParser.kt +++ b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/parsers/launchers/TechnicParser.kt @@ -6,8 +6,8 @@ package org.quiltmc.community.cozy.modules.logs.parsers.launchers -import com.kotlindiscord.kord.extensions.utils.capitalizeWords import dev.kord.core.event.Event +import dev.kordex.core.utils.capitalizeWords import org.quiltmc.community.cozy.modules.logs.data.Launcher import org.quiltmc.community.cozy.modules.logs.data.Log import org.quiltmc.community.cozy.modules.logs.data.Order diff --git a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/parsers/quilt/QuiltModsParser.kt b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/parsers/quilt/QuiltModsParser.kt index 75e24d7e..8fc2fafb 100644 --- a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/parsers/quilt/QuiltModsParser.kt +++ b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/parsers/quilt/QuiltModsParser.kt @@ -6,8 +6,8 @@ package org.quiltmc.community.cozy.modules.logs.parsers.quilt -import com.kotlindiscord.kord.extensions.parser.Cursor import dev.kord.core.event.Event +import dev.kordex.parser.Cursor import org.quiltmc.community.cozy.modules.logs.Version import org.quiltmc.community.cozy.modules.logs.data.LoaderType import org.quiltmc.community.cozy.modules.logs.data.Log diff --git a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/processors/PlayerIPProcessor.kt b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/processors/PlayerIPProcessor.kt index 4a766f5b..4752aedf 100644 --- a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/processors/PlayerIPProcessor.kt +++ b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/processors/PlayerIPProcessor.kt @@ -6,8 +6,8 @@ package org.quiltmc.community.cozy.modules.logs.processors -import com.kotlindiscord.kord.extensions.utils.runSuspended import dev.kord.core.event.Event +import dev.kordex.core.utils.runSuspended import org.quiltmc.community.cozy.modules.logs.data.Log import org.quiltmc.community.cozy.modules.logs.data.Order import org.quiltmc.community.cozy.modules.logs.types.LogProcessor diff --git a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/processors/UnknownModProcessor.kt b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/processors/UnknownModProcessor.kt index 76ab1cd6..f382af04 100644 --- a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/processors/UnknownModProcessor.kt +++ b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/processors/UnknownModProcessor.kt @@ -6,8 +6,8 @@ package org.quiltmc.community.cozy.modules.logs.processors -import com.kotlindiscord.kord.extensions.DISCORD_YELLOW import dev.kord.core.event.Event +import dev.kordex.core.DISCORD_YELLOW import org.quiltmc.community.cozy.modules.logs.data.LoaderType import org.quiltmc.community.cozy.modules.logs.data.Log import org.quiltmc.community.cozy.modules.logs.data.Order diff --git a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/types/LogProcessor.kt b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/types/LogProcessor.kt index ac3049c8..7d624524 100644 --- a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/types/LogProcessor.kt +++ b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/types/LogProcessor.kt @@ -6,9 +6,9 @@ package org.quiltmc.community.cozy.modules.logs.types -import com.kotlindiscord.kord.extensions.ExtensibleBot -import com.kotlindiscord.kord.extensions.koin.KordExKoinComponent import dev.kord.core.event.Event +import dev.kordex.core.ExtensibleBot +import dev.kordex.core.koin.KordExKoinComponent import io.ktor.client.* import io.ktor.client.engine.cio.* import io.ktor.client.plugins.* diff --git a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/types/LogRetriever.kt b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/types/LogRetriever.kt index 3d293ef4..250ddcfd 100644 --- a/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/types/LogRetriever.kt +++ b/module-log-parser/src/main/kotlin/org/quiltmc/community/cozy/modules/logs/types/LogRetriever.kt @@ -6,9 +6,9 @@ package org.quiltmc.community.cozy.modules.logs.types -import com.kotlindiscord.kord.extensions.ExtensibleBot -import com.kotlindiscord.kord.extensions.koin.KordExKoinComponent import dev.kord.core.event.Event +import dev.kordex.core.ExtensibleBot +import dev.kordex.core.koin.KordExKoinComponent import io.ktor.client.* import io.ktor.client.engine.cio.* import io.ktor.client.plugins.contentnegotiation.* diff --git a/module-moderation/build.gradle.kts b/module-moderation/build.gradle.kts index d259e0d2..c71e6c67 100644 --- a/module-moderation/build.gradle.kts +++ b/module-moderation/build.gradle.kts @@ -21,6 +21,15 @@ dependencies { } kordEx { - module("annotations") - module("extra-pluralkit") + module("pluralkit") + + plugin { + pluginClass = "org.quiltmc.community.cozy.modules.moderation.ModerationPlugin" + id = "quiltmc-moderation" + version = "1.0.1" + + author = "QuiltMC" + description = "Various moderation tools for the QuiltMC community." + license = "MPL-2.0" + } } diff --git a/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/ModerationExtension.kt b/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/ModerationExtension.kt index 99b2b514..5e3b262c 100644 --- a/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/ModerationExtension.kt +++ b/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/ModerationExtension.kt @@ -8,23 +8,6 @@ package org.quiltmc.community.cozy.modules.moderation -import com.kotlindiscord.kord.extensions.DISCORD_BLURPLE -import com.kotlindiscord.kord.extensions.ExtensibleBot -import com.kotlindiscord.kord.extensions.annotations.DoNotChain -import com.kotlindiscord.kord.extensions.checks.anyGuild -import com.kotlindiscord.kord.extensions.commands.Arguments -import com.kotlindiscord.kord.extensions.commands.application.slash.ephemeralSubCommand -import com.kotlindiscord.kord.extensions.commands.converters.impl.duration -import com.kotlindiscord.kord.extensions.commands.converters.impl.member -import com.kotlindiscord.kord.extensions.commands.converters.impl.optionalDuration -import com.kotlindiscord.kord.extensions.commands.converters.impl.optionalString -import com.kotlindiscord.kord.extensions.extensions.Extension -import com.kotlindiscord.kord.extensions.extensions.chatCommand -import com.kotlindiscord.kord.extensions.extensions.chatGroupCommand -import com.kotlindiscord.kord.extensions.extensions.ephemeralSlashCommand -import com.kotlindiscord.kord.extensions.modules.extra.pluralkit.events.PKMessageCreateEvent -import com.kotlindiscord.kord.extensions.modules.extra.pluralkit.events.ProxiedMessageCreateEvent -import com.kotlindiscord.kord.extensions.utils.* import dev.kord.common.Color import dev.kord.core.behavior.channel.* import dev.kord.core.behavior.channel.threads.edit @@ -33,6 +16,23 @@ import dev.kord.core.entity.channel.GuildMessageChannel import dev.kord.core.entity.channel.TextChannel import dev.kord.core.entity.channel.thread.ThreadChannel import dev.kord.rest.builder.message.embed +import dev.kordex.core.DISCORD_BLURPLE +import dev.kordex.core.ExtensibleBot +import dev.kordex.core.annotations.DoNotChain +import dev.kordex.core.checks.anyGuild +import dev.kordex.core.commands.Arguments +import dev.kordex.core.commands.application.slash.ephemeralSubCommand +import dev.kordex.core.commands.converters.impl.duration +import dev.kordex.core.commands.converters.impl.member +import dev.kordex.core.commands.converters.impl.optionalDuration +import dev.kordex.core.commands.converters.impl.optionalString +import dev.kordex.core.extensions.Extension +import dev.kordex.core.extensions.chatCommand +import dev.kordex.core.extensions.chatGroupCommand +import dev.kordex.core.extensions.ephemeralSlashCommand +import dev.kordex.core.utils.* +import dev.kordex.modules.pluralkit.events.PKMessageCreateEvent +import dev.kordex.modules.pluralkit.events.ProxiedMessageCreateEvent import kotlinx.coroutines.flow.filterIsInstance import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.withTimeoutOrNull diff --git a/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/ModerationPlugin.kt b/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/ModerationPlugin.kt index 88f62270..00f6d80f 100644 --- a/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/ModerationPlugin.kt +++ b/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/ModerationPlugin.kt @@ -6,22 +6,9 @@ package org.quiltmc.community.cozy.modules.moderation -import com.kotlindiscord.kord.extensions.plugins.KordExPlugin -import com.kotlindiscord.kord.extensions.plugins.annotations.plugins.WiredPlugin -import org.pf4j.PluginWrapper +import dev.kordex.core.plugins.KordExPlugin -/** - * Plugin containing the [ModerationExtension], providing various moderation tools. - */ -@WiredPlugin( - id = ModerationPlugin.id, - version = "1.0.1-SNAPSHOT", - - author = "QuiltMC", - description = "Various moderation tools for the QuiltMC community.", - license = "Mozilla Public License 2.0" -) -public class ModerationPlugin(wrapper: PluginWrapper) : KordExPlugin(wrapper) { +public class ModerationPlugin : KordExPlugin() { override suspend fun setup() { // TODO: We can't really use the plugin system just yet since it doesn't currently support any configuration tooling // extension(::ModerationExtension) diff --git a/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/_Utils.kt b/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/_Utils.kt index 0a90c31b..f0b563e6 100644 --- a/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/_Utils.kt +++ b/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/_Utils.kt @@ -6,7 +6,7 @@ package org.quiltmc.community.cozy.modules.moderation -import com.kotlindiscord.kord.extensions.builders.ExtensibleBotBuilder +import dev.kordex.core.builders.ExtensionsBuilder import kotlinx.datetime.Clock import kotlinx.datetime.DateTimePeriod import kotlinx.datetime.TimeZone.Companion.UTC @@ -23,9 +23,9 @@ public fun DateTimePeriod.toTotalSeconds(): Int { return (now.plus(this, UTC) - now).toInt(DurationUnit.SECONDS) } -public fun ExtensibleBotBuilder.ExtensionsBuilder.moderation(config: ModerationConfig) { +public fun ExtensionsBuilder.moderation(config: ModerationConfig) { add { ModerationExtension(config) } } -public fun ExtensibleBotBuilder.ExtensionsBuilder.moderation(body: SimpleModerationConfig.Builder.() -> Unit): Unit = +public fun ExtensionsBuilder.moderation(body: SimpleModerationConfig.Builder.() -> Unit): Unit = moderation(SimpleModerationConfig(body)) diff --git a/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/config/ModerationConfig.kt b/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/config/ModerationConfig.kt index f4c19df4..321eed33 100644 --- a/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/config/ModerationConfig.kt +++ b/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/config/ModerationConfig.kt @@ -6,10 +6,10 @@ package org.quiltmc.community.cozy.modules.moderation.config -import com.kotlindiscord.kord.extensions.checks.types.Check import dev.kord.core.entity.Guild import dev.kord.core.entity.Role import dev.kord.core.entity.channel.GuildMessageChannel +import dev.kordex.core.checks.types.Check /** * Abstract class representing the configuration for the user moderation module. diff --git a/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/config/SimpleModerationConfig.kt b/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/config/SimpleModerationConfig.kt index 0aa6f581..483122f9 100644 --- a/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/config/SimpleModerationConfig.kt +++ b/module-moderation/src/main/kotlin/org/quiltmc/community/cozy/modules/moderation/config/SimpleModerationConfig.kt @@ -6,10 +6,10 @@ package org.quiltmc.community.cozy.modules.moderation.config -import com.kotlindiscord.kord.extensions.checks.types.Check import dev.kord.core.entity.Guild import dev.kord.core.entity.Role import dev.kord.core.entity.channel.GuildMessageChannel +import dev.kordex.core.checks.types.Check import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.filterIsInstance import kotlinx.coroutines.flow.last diff --git a/module-role-sync/build.gradle.kts b/module-role-sync/build.gradle.kts index 499bb963..962a93bb 100644 --- a/module-role-sync/build.gradle.kts +++ b/module-role-sync/build.gradle.kts @@ -21,5 +21,13 @@ dependencies { } kordEx { - module("annotations") + plugin { + id = "quiltmc-role-sync" + pluginClass = "org.quiltmc.community.cozy.modules.rolesync.RoleSyncPlugin" + version = "1.0.1" + + author = "QuiltMC" + description = "Cross-server role synchronisation plugin" + license = "MPL-2.0" + } } diff --git a/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/RoleSyncExtension.kt b/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/RoleSyncExtension.kt index cd4c4993..a0811a8a 100644 --- a/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/RoleSyncExtension.kt +++ b/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/RoleSyncExtension.kt @@ -6,13 +6,13 @@ package org.quiltmc.community.cozy.modules.rolesync -import com.kotlindiscord.kord.extensions.annotations.DoNotChain -import com.kotlindiscord.kord.extensions.extensions.Extension -import com.kotlindiscord.kord.extensions.extensions.ephemeralSlashCommand -import com.kotlindiscord.kord.extensions.extensions.event -import com.kotlindiscord.kord.extensions.utils.hasRole import dev.kord.core.event.guild.MemberJoinEvent import dev.kord.core.event.guild.MemberUpdateEvent +import dev.kordex.core.annotations.DoNotChain +import dev.kordex.core.extensions.Extension +import dev.kordex.core.extensions.ephemeralSlashCommand +import dev.kordex.core.extensions.event +import dev.kordex.core.utils.hasRole import kotlinx.coroutines.flow.filter import org.quiltmc.community.cozy.modules.rolesync.config.RoleSyncConfig diff --git a/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/RoleSyncPlugin.kt b/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/RoleSyncPlugin.kt index 0bee6c31..6d0e90e3 100644 --- a/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/RoleSyncPlugin.kt +++ b/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/RoleSyncPlugin.kt @@ -6,22 +6,9 @@ package org.quiltmc.community.cozy.modules.rolesync -import com.kotlindiscord.kord.extensions.plugins.KordExPlugin -import com.kotlindiscord.kord.extensions.plugins.annotations.plugins.WiredPlugin -import org.pf4j.PluginWrapper +import dev.kordex.core.plugins.KordExPlugin -/** - * Plugin containing the [RoleSyncPlugin], providing various moderation tools. - */ -@WiredPlugin( - id = RoleSyncPlugin.id, - version = "1.0.1-SNAPSHOT", - - author = "QuiltMC", - description = "Various moderation tools for the QuiltMC community.", - license = "Mozilla Public License 2.0" -) -public class RoleSyncPlugin(wrapper: PluginWrapper) : KordExPlugin(wrapper) { +public class RoleSyncPlugin : KordExPlugin() { override suspend fun setup() { // TODO: We can't really use the plugin system just yet since it doesn't currently support any configuration tooling // extension(::RoleSyncExtension) diff --git a/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/_Utils.kt b/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/_Utils.kt index a485bcf5..088dd95c 100644 --- a/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/_Utils.kt +++ b/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/_Utils.kt @@ -6,11 +6,11 @@ package org.quiltmc.community.cozy.modules.rolesync -import com.kotlindiscord.kord.extensions.ExtensibleBot -import com.kotlindiscord.kord.extensions.builders.ExtensibleBotBuilder import dev.kord.common.entity.Snowflake import dev.kord.core.Kord import dev.kord.core.entity.Role +import dev.kordex.core.ExtensibleBot +import dev.kordex.core.builders.ExtensionsBuilder import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.flatMapConcat @@ -21,9 +21,9 @@ import org.quiltmc.community.cozy.modules.rolesync.config.SimpleRoleSyncConfig public suspend fun getGuildForRoleSnowflake(roleId: Snowflake, bot: ExtensibleBot): Role = bot.getKoin().get().guilds.flatMapConcat { it.roles }.first { it.id == roleId } -public fun ExtensibleBotBuilder.ExtensionsBuilder.rolesync(config: RoleSyncConfig) { +public fun ExtensionsBuilder.rolesync(config: RoleSyncConfig) { add { RoleSyncExtension(config) } } -public fun ExtensibleBotBuilder.ExtensionsBuilder.rolesync(body: SimpleRoleSyncConfig.Builder.() -> Unit): Unit = +public fun ExtensionsBuilder.rolesync(body: SimpleRoleSyncConfig.Builder.() -> Unit): Unit = rolesync(SimpleRoleSyncConfig(body)) diff --git a/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/config/RoleSyncConfig.kt b/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/config/RoleSyncConfig.kt index 985811d6..935c37fc 100644 --- a/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/config/RoleSyncConfig.kt +++ b/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/config/RoleSyncConfig.kt @@ -6,8 +6,8 @@ package org.quiltmc.community.cozy.modules.rolesync.config -import com.kotlindiscord.kord.extensions.checks.types.Check import dev.kord.common.entity.Snowflake +import dev.kordex.core.checks.types.Check /** * The roles to sync between the two guilds. diff --git a/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/config/SimpleRoleSyncConfig.kt b/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/config/SimpleRoleSyncConfig.kt index d2065ec2..6c9e5639 100644 --- a/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/config/SimpleRoleSyncConfig.kt +++ b/module-role-sync/src/main/kotlin/org/quiltmc/community/cozy/modules/rolesync/config/SimpleRoleSyncConfig.kt @@ -6,8 +6,8 @@ package org.quiltmc.community.cozy.modules.rolesync.config -import com.kotlindiscord.kord.extensions.checks.types.Check import dev.kord.common.entity.Snowflake +import dev.kordex.core.checks.types.Check public class SimpleRoleSyncConfig(builder: Builder) : RoleSyncConfig() { private val rolesToSync: MutableList = builder.rolesToSync diff --git a/src/main/kotlin/org/quiltmc/community/App.kt b/src/main/kotlin/org/quiltmc/community/App.kt index dad4fc2f..724f6a3f 100644 --- a/src/main/kotlin/org/quiltmc/community/App.kt +++ b/src/main/kotlin/org/quiltmc/community/App.kt @@ -8,20 +8,19 @@ package org.quiltmc.community -import com.kotlindiscord.kord.extensions.ExtensibleBot -import com.kotlindiscord.kord.extensions.checks.guildFor -import com.kotlindiscord.kord.extensions.modules.extra.mappings.extMappings -import com.kotlindiscord.kord.extensions.modules.extra.phishing.DetectionAction -import com.kotlindiscord.kord.extensions.modules.extra.phishing.extPhishing -import com.kotlindiscord.kord.extensions.modules.extra.pluralkit.extPluralKit -import com.kotlindiscord.kord.extensions.modules.extra.tags.tags -import com.kotlindiscord.kord.extensions.modules.extra.welcome.welcomeChannel -import com.kotlindiscord.kord.extensions.utils.envOrNull -import com.kotlindiscord.kord.extensions.utils.getKoin import dev.kord.core.entity.channel.GuildMessageChannel import dev.kord.gateway.ALL import dev.kord.gateway.Intents import dev.kord.gateway.PrivilegedIntent +import dev.kordex.core.ExtensibleBot +import dev.kordex.core.checks.guildFor +import dev.kordex.core.utils.envOrNull +import dev.kordex.core.utils.getKoin +import dev.kordex.modules.func.phishing.DetectionAction +import dev.kordex.modules.func.phishing.extPhishing +import dev.kordex.modules.func.tags.tags +import dev.kordex.modules.func.welcome.welcomeChannel +import dev.kordex.modules.pluralkit.extPluralKit import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.filterIsInstance import kotlinx.coroutines.flow.lastOrNull @@ -53,6 +52,14 @@ suspend fun setupCollab() = ExtensibleBot(DISCORD_TOKEN) { common() database() + about { + addGeneral( + "Cozy: Collab", + + "Quilt's Discord bot, Community Collab edition." + ) + } + extensions { sentry { distribution = "collab" @@ -64,9 +71,17 @@ suspend fun setupDev() = ExtensibleBot(DISCORD_TOKEN) { common() database() - extensions { - extMappings { } + about { + addGeneral( + "Cozy: Dev Tools", + "Quilt's Discord bot, Dev Tools edition.\n\n" + + "Once provided mappings commands, but you should use the Allium Discord bot or " + + "[Linkie Web](https://linkie.shedaniel.dev/) going forward." + ) + } + + extensions { if (GITHUB_TOKEN != null) { add(::GithubExtension) } @@ -82,6 +97,16 @@ suspend fun setupQuilt() = ExtensibleBot(DISCORD_TOKEN) { database(true) settings() + about { + addGeneral( + "Cozy: Community", + + "Quilt's Discord bot, Community edition.\n\n" + + "Provides a ton of commands and other utilities, to help staff with moderation and provide users " + + "with day-to-day features on the main Discord server." + ) + } + chatCommands { defaultPrefix = "%" enabled = true @@ -209,6 +234,16 @@ suspend fun setupShowcase() = ExtensibleBot(DISCORD_TOKEN) { database() settings() + about { + addGeneral( + "Cozy: Showcase", + + "Quilt's Discord bot, Showcase edition.\n\n" + + "This bot is currently in development, but someday we hope it'll let you post in the showcase " + + "channels from your project servers." + ) + } + extensions { sentry { distribution = "showcase" @@ -218,8 +253,8 @@ suspend fun setupShowcase() = ExtensibleBot(DISCORD_TOKEN) { suspend fun main() { val bot = when (MODE) { - "dev" -> setupDev() "collab" -> setupCollab() + "dev" -> setupDev() "quilt" -> setupQuilt() "showcase" -> setupShowcase() diff --git a/src/main/kotlin/org/quiltmc/community/DiscordLogAppender.kt b/src/main/kotlin/org/quiltmc/community/DiscordLogAppender.kt index 4f9a03b8..ca93aee1 100644 --- a/src/main/kotlin/org/quiltmc/community/DiscordLogAppender.kt +++ b/src/main/kotlin/org/quiltmc/community/DiscordLogAppender.kt @@ -11,9 +11,6 @@ package org.quiltmc.community import ch.qos.logback.classic.Level import ch.qos.logback.classic.spi.ILoggingEvent import ch.qos.logback.core.AppenderBase -import com.kotlindiscord.kord.extensions.* -import com.kotlindiscord.kord.extensions.koin.KordExKoinComponent -import com.soywiz.korio.async.launch import dev.kord.common.Color import dev.kord.common.annotation.KordExperimental import dev.kord.common.annotation.KordUnsafe @@ -22,7 +19,10 @@ import dev.kord.core.Kord import dev.kord.core.behavior.WebhookBehavior import dev.kord.core.behavior.execute import dev.kord.rest.builder.message.embed +import dev.kordex.core.* +import dev.kordex.core.koin.KordExKoinComponent import io.github.oshai.kotlinlogging.KotlinLogging +import kotlinx.coroutines.launch import kotlinx.datetime.Instant import org.koin.core.component.inject diff --git a/src/main/kotlin/org/quiltmc/community/_Checks.kt b/src/main/kotlin/org/quiltmc/community/_Checks.kt index 2ebb9d7d..30e2677c 100644 --- a/src/main/kotlin/org/quiltmc/community/_Checks.kt +++ b/src/main/kotlin/org/quiltmc/community/_Checks.kt @@ -6,13 +6,13 @@ package org.quiltmc.community -import com.kotlindiscord.kord.extensions.checks.* -import com.kotlindiscord.kord.extensions.checks.types.CheckContext -import com.kotlindiscord.kord.extensions.utils.hasPermission -import com.kotlindiscord.kord.extensions.utils.translate import dev.kord.common.entity.Permission import dev.kord.core.behavior.channel.asChannelOfOrNull import dev.kord.core.entity.channel.CategorizableChannel +import dev.kordex.core.checks.* +import dev.kordex.core.checks.types.CheckContext +import dev.kordex.core.utils.hasPermission +import dev.kordex.core.utils.translate import io.github.oshai.kotlinlogging.KotlinLogging import org.quiltmc.community.database.collections.ServerSettingsCollection diff --git a/src/main/kotlin/org/quiltmc/community/_Constants.kt b/src/main/kotlin/org/quiltmc/community/_Constants.kt index 0d55e45e..5bcf3e6d 100644 --- a/src/main/kotlin/org/quiltmc/community/_Constants.kt +++ b/src/main/kotlin/org/quiltmc/community/_Constants.kt @@ -8,12 +8,12 @@ package org.quiltmc.community -import com.kotlindiscord.kord.extensions.DISCORD_BLURPLE -import com.kotlindiscord.kord.extensions.DISCORD_GREEN -import com.kotlindiscord.kord.extensions.DISCORD_RED -import com.kotlindiscord.kord.extensions.utils.env -import com.kotlindiscord.kord.extensions.utils.envOrNull import dev.kord.common.entity.Snowflake +import dev.kordex.core.DISCORD_BLURPLE +import dev.kordex.core.DISCORD_GREEN +import dev.kordex.core.DISCORD_RED +import dev.kordex.core.utils.env +import dev.kordex.core.utils.envOrNull internal val DISCORD_TOKEN = env("TOKEN") internal val GITHUB_TOKEN = envOrNull("GITHUB_TOKEN") diff --git a/src/main/kotlin/org/quiltmc/community/_Utils.kt b/src/main/kotlin/org/quiltmc/community/_Utils.kt index 13af8bf2..6c4d0223 100644 --- a/src/main/kotlin/org/quiltmc/community/_Utils.kt +++ b/src/main/kotlin/org/quiltmc/community/_Utils.kt @@ -6,14 +6,6 @@ package org.quiltmc.community -import com.kotlindiscord.kord.extensions.builders.ExtensibleBotBuilder -import com.kotlindiscord.kord.extensions.commands.Arguments -import com.kotlindiscord.kord.extensions.commands.application.slash.SlashCommandContext -import com.kotlindiscord.kord.extensions.components.forms.ModalForm -import com.kotlindiscord.kord.extensions.utils.env -import com.kotlindiscord.kord.extensions.utils.envOrNull -import com.kotlindiscord.kord.extensions.utils.getKoin -import com.kotlindiscord.kord.extensions.utils.loadModule import dev.kord.common.entity.ArchiveDuration import dev.kord.common.entity.Snowflake import dev.kord.common.entity.UserFlag @@ -26,7 +18,20 @@ import dev.kord.core.entity.Guild import dev.kord.core.entity.Message import dev.kord.core.entity.channel.GuildMessageChannel import dev.kord.rest.builder.message.EmbedBuilder +import dev.kord.rest.builder.message.actionRow +import dev.kord.rest.builder.message.embed import dev.kord.rest.request.RestRequestException +import dev.kordex.core.DISCORD_FUCHSIA +import dev.kordex.core.builders.AboutBuilder +import dev.kordex.core.builders.ExtensibleBotBuilder +import dev.kordex.core.builders.about.CopyrightType +import dev.kordex.core.commands.Arguments +import dev.kordex.core.commands.application.slash.SlashCommandContext +import dev.kordex.core.components.forms.ModalForm +import dev.kordex.core.utils.env +import dev.kordex.core.utils.envOrNull +import dev.kordex.core.utils.getKoin +import dev.kordex.core.utils.loadModule import io.github.oshai.kotlinlogging.KotlinLogging import kotlinx.coroutines.runBlocking import org.koin.dsl.bind @@ -132,9 +137,23 @@ suspend fun ExtensibleBotBuilder.common() { dataAdapter(::MongoDBDataAdapter) - applicationCommands { - // Need to disable this due to the slash command perms experiment -// syncPermissions = false + about { + copyright("Autolink", "MIT", CopyrightType.Library, "https://github.com/robinst/autolink-java") + + copyright( + "Apache: Commons Text", + "Apache-2.0", + CopyrightType.Library, + "https://commons.apache.org/proper/commons-text/" + ) + + copyright("ExcelKt", "MIT", CopyrightType.Library, "https://github.com/evanrupert/ExcelKt") + copyright("Homoglyph", "MIT", CopyrightType.Library, "https://github.com/codebox/homoglyph") + copyright("KMongo", "Apache-2.0", CopyrightType.Library, "https://litote.org/kmongo/") + copyright("Kotlin Semver", "MIT", CopyrightType.Library, "https://github.com/z4kn4fein/kotlin-semver") + copyright("RgxGen", "Apache-2.0", CopyrightType.Library, "https://github.com/curious-odd-man/RgxGen") + + copyright("GraphQL", "MIT", CopyrightType.Tool, "https://graphql.org/") } extensions { @@ -158,7 +177,7 @@ suspend fun ExtensibleBotBuilder.common() { } plugins { - if (ENVIRONMENT != "production") { + if (this@common.devMode) { // Add plugin build folders here for testing in dev // pluginPath("module-tags/build/libs") } @@ -293,3 +312,34 @@ fun String.replaceParams(pairs: Map): String = this.replaceParams( suspend fun ThreadChannelBehavior.getFirstMessage() = getMessageOrNull(id) + +suspend fun AboutBuilder.addGeneral(name: String, desc: String) { + general { + message { + embed { + color = DISCORD_FUCHSIA + description = desc + title = name + + thumbnail { + url = "https://github.com/QuiltMC/art/blob/master/misc/cozy-icons/original-raster/" + + "cozy-discord.png?raw=true" + } + } + + actionRow { + linkButton("https://opencollective.com/quiltmc") { + label = "Open Collective" + } + + linkButton("https://github.com/QuiltMC/cozy-discord") { + label = "Source Code" + } + + linkButton("https://quiltmc.org") { + label = "Website" + } + } + } + } +} diff --git a/src/main/kotlin/org/quiltmc/community/database/Migrations.kt b/src/main/kotlin/org/quiltmc/community/database/Migrations.kt index 8cf9cd74..b0c19806 100644 --- a/src/main/kotlin/org/quiltmc/community/database/Migrations.kt +++ b/src/main/kotlin/org/quiltmc/community/database/Migrations.kt @@ -6,7 +6,7 @@ package org.quiltmc.community.database -import com.kotlindiscord.kord.extensions.koin.KordExKoinComponent +import dev.kordex.core.koin.KordExKoinComponent import io.github.oshai.kotlinlogging.KotlinLogging import org.koin.core.component.inject import org.quiltmc.community.database.collections.MetaCollection diff --git a/src/main/kotlin/org/quiltmc/community/database/_Utils.kt b/src/main/kotlin/org/quiltmc/community/database/_Utils.kt index deda0524..7372bd31 100644 --- a/src/main/kotlin/org/quiltmc/community/database/_Utils.kt +++ b/src/main/kotlin/org/quiltmc/community/database/_Utils.kt @@ -6,8 +6,8 @@ package org.quiltmc.community.database -import com.kotlindiscord.kord.extensions.utils.getKoin import dev.kord.core.behavior.GuildBehavior +import dev.kordex.core.utils.getKoin import org.quiltmc.community.database.collections.ServerSettingsCollection import org.quiltmc.community.database.entities.ServerSettings diff --git a/src/main/kotlin/org/quiltmc/community/database/collections/AmaConfigCollection.kt b/src/main/kotlin/org/quiltmc/community/database/collections/AmaConfigCollection.kt index d715214d..d8ba779b 100644 --- a/src/main/kotlin/org/quiltmc/community/database/collections/AmaConfigCollection.kt +++ b/src/main/kotlin/org/quiltmc/community/database/collections/AmaConfigCollection.kt @@ -6,9 +6,9 @@ package org.quiltmc.community.database.collections -import com.kotlindiscord.kord.extensions.checks.types.CheckContextWithCache -import com.kotlindiscord.kord.extensions.koin.KordExKoinComponent import dev.kord.common.entity.Snowflake +import dev.kordex.core.checks.types.CheckContextWithCache +import dev.kordex.core.koin.KordExKoinComponent import org.koin.core.component.inject import org.litote.kmongo.eq import org.litote.kmongo.setValue diff --git a/src/main/kotlin/org/quiltmc/community/database/collections/FilterCollection.kt b/src/main/kotlin/org/quiltmc/community/database/collections/FilterCollection.kt index 74878ab1..d857a6b6 100644 --- a/src/main/kotlin/org/quiltmc/community/database/collections/FilterCollection.kt +++ b/src/main/kotlin/org/quiltmc/community/database/collections/FilterCollection.kt @@ -6,7 +6,7 @@ package org.quiltmc.community.database.collections -import com.kotlindiscord.kord.extensions.koin.KordExKoinComponent +import dev.kordex.core.koin.KordExKoinComponent import org.koin.core.component.inject import org.litote.kmongo.eq import org.quiltmc.community.database.Collection diff --git a/src/main/kotlin/org/quiltmc/community/database/collections/GlobalSettingsCollection.kt b/src/main/kotlin/org/quiltmc/community/database/collections/GlobalSettingsCollection.kt index 3a11c06e..55f63858 100644 --- a/src/main/kotlin/org/quiltmc/community/database/collections/GlobalSettingsCollection.kt +++ b/src/main/kotlin/org/quiltmc/community/database/collections/GlobalSettingsCollection.kt @@ -6,8 +6,8 @@ package org.quiltmc.community.database.collections -import com.kotlindiscord.kord.extensions.koin.KordExKoinComponent import com.mongodb.client.result.UpdateResult +import dev.kordex.core.koin.KordExKoinComponent import org.koin.core.component.inject import org.quiltmc.community.database.Collection import org.quiltmc.community.database.Database diff --git a/src/main/kotlin/org/quiltmc/community/database/collections/LinkedMessagesCollection.kt b/src/main/kotlin/org/quiltmc/community/database/collections/LinkedMessagesCollection.kt index eb12b660..bf0ed0ca 100644 --- a/src/main/kotlin/org/quiltmc/community/database/collections/LinkedMessagesCollection.kt +++ b/src/main/kotlin/org/quiltmc/community/database/collections/LinkedMessagesCollection.kt @@ -6,8 +6,8 @@ package org.quiltmc.community.database.collections -import com.kotlindiscord.kord.extensions.koin.KordExKoinComponent import dev.kord.common.entity.Snowflake +import dev.kordex.core.koin.KordExKoinComponent import org.koin.core.component.inject import org.litote.kmongo.contains import org.litote.kmongo.eq diff --git a/src/main/kotlin/org/quiltmc/community/database/collections/MetaCollection.kt b/src/main/kotlin/org/quiltmc/community/database/collections/MetaCollection.kt index e9a1a84f..db870157 100644 --- a/src/main/kotlin/org/quiltmc/community/database/collections/MetaCollection.kt +++ b/src/main/kotlin/org/quiltmc/community/database/collections/MetaCollection.kt @@ -6,7 +6,7 @@ package org.quiltmc.community.database.collections -import com.kotlindiscord.kord.extensions.koin.KordExKoinComponent +import dev.kordex.core.koin.KordExKoinComponent import org.koin.core.component.inject import org.quiltmc.community.database.Collection import org.quiltmc.community.database.Database diff --git a/src/main/kotlin/org/quiltmc/community/database/collections/OwnedThreadCollection.kt b/src/main/kotlin/org/quiltmc/community/database/collections/OwnedThreadCollection.kt index e6fc339d..d7ad66fd 100644 --- a/src/main/kotlin/org/quiltmc/community/database/collections/OwnedThreadCollection.kt +++ b/src/main/kotlin/org/quiltmc/community/database/collections/OwnedThreadCollection.kt @@ -6,11 +6,11 @@ package org.quiltmc.community.database.collections -import com.kotlindiscord.kord.extensions.koin.KordExKoinComponent import dev.kord.common.entity.Snowflake import dev.kord.core.behavior.GuildBehavior import dev.kord.core.behavior.UserBehavior import dev.kord.core.behavior.channel.threads.ThreadChannelBehavior +import dev.kordex.core.koin.KordExKoinComponent import org.koin.core.component.inject import org.litote.kmongo.eq import org.quiltmc.community.database.Collection diff --git a/src/main/kotlin/org/quiltmc/community/database/collections/ServerSettingsCollection.kt b/src/main/kotlin/org/quiltmc/community/database/collections/ServerSettingsCollection.kt index 61e17c13..64841575 100644 --- a/src/main/kotlin/org/quiltmc/community/database/collections/ServerSettingsCollection.kt +++ b/src/main/kotlin/org/quiltmc/community/database/collections/ServerSettingsCollection.kt @@ -6,8 +6,8 @@ package org.quiltmc.community.database.collections -import com.kotlindiscord.kord.extensions.koin.KordExKoinComponent import dev.kord.common.entity.Snowflake +import dev.kordex.core.koin.KordExKoinComponent import org.koin.core.component.inject import org.litote.kmongo.eq import org.litote.kmongo.ne diff --git a/src/main/kotlin/org/quiltmc/community/database/collections/TagsCollection.kt b/src/main/kotlin/org/quiltmc/community/database/collections/TagsCollection.kt index dd3df541..7293db4b 100644 --- a/src/main/kotlin/org/quiltmc/community/database/collections/TagsCollection.kt +++ b/src/main/kotlin/org/quiltmc/community/database/collections/TagsCollection.kt @@ -6,10 +6,10 @@ package org.quiltmc.community.database.collections -import com.kotlindiscord.kord.extensions.koin.KordExKoinComponent -import com.kotlindiscord.kord.extensions.modules.extra.tags.data.Tag -import com.kotlindiscord.kord.extensions.modules.extra.tags.data.TagsData import dev.kord.common.entity.Snowflake +import dev.kordex.core.koin.KordExKoinComponent +import dev.kordex.modules.func.tags.data.Tag +import dev.kordex.modules.func.tags.data.TagsData import org.bson.conversions.Bson import org.koin.core.component.inject import org.litote.kmongo.eq diff --git a/src/main/kotlin/org/quiltmc/community/database/collections/UserFlagsCollection.kt b/src/main/kotlin/org/quiltmc/community/database/collections/UserFlagsCollection.kt index ecbbdb32..b706a0a5 100644 --- a/src/main/kotlin/org/quiltmc/community/database/collections/UserFlagsCollection.kt +++ b/src/main/kotlin/org/quiltmc/community/database/collections/UserFlagsCollection.kt @@ -6,8 +6,8 @@ package org.quiltmc.community.database.collections -import com.kotlindiscord.kord.extensions.koin.KordExKoinComponent import dev.kord.common.entity.Snowflake +import dev.kordex.core.koin.KordExKoinComponent import org.koin.core.component.inject import org.litote.kmongo.eq import org.quiltmc.community.database.Collection diff --git a/src/main/kotlin/org/quiltmc/community/database/collections/WelcomeChannelCollection.kt b/src/main/kotlin/org/quiltmc/community/database/collections/WelcomeChannelCollection.kt index 8b381266..881ab568 100644 --- a/src/main/kotlin/org/quiltmc/community/database/collections/WelcomeChannelCollection.kt +++ b/src/main/kotlin/org/quiltmc/community/database/collections/WelcomeChannelCollection.kt @@ -6,9 +6,9 @@ package org.quiltmc.community.database.collections -import com.kotlindiscord.kord.extensions.koin.KordExKoinComponent -import com.kotlindiscord.kord.extensions.modules.extra.welcome.data.WelcomeChannelData import dev.kord.common.entity.Snowflake +import dev.kordex.core.koin.KordExKoinComponent +import dev.kordex.modules.func.welcome.data.WelcomeChannelData import org.koin.core.component.inject import org.litote.kmongo.eq import org.quiltmc.community.database.Collection diff --git a/src/main/kotlin/org/quiltmc/community/database/entities/AdaptedData.kt b/src/main/kotlin/org/quiltmc/community/database/entities/AdaptedData.kt index 4beb2774..615f6f60 100644 --- a/src/main/kotlin/org/quiltmc/community/database/entities/AdaptedData.kt +++ b/src/main/kotlin/org/quiltmc/community/database/entities/AdaptedData.kt @@ -11,8 +11,8 @@ package org.quiltmc.community.database.entities import com.github.jershell.kbson.UUIDSerializer -import com.kotlindiscord.kord.extensions.storage.StorageType import dev.kord.common.entity.Snowflake +import dev.kordex.core.storage.StorageType import kotlinx.serialization.Serializable import kotlinx.serialization.UseSerializers import org.quiltmc.community.database.Entity diff --git a/src/main/kotlin/org/quiltmc/community/database/entities/GlobalSettings.kt b/src/main/kotlin/org/quiltmc/community/database/entities/GlobalSettings.kt index 6a2d18c4..f92c5e41 100644 --- a/src/main/kotlin/org/quiltmc/community/database/entities/GlobalSettings.kt +++ b/src/main/kotlin/org/quiltmc/community/database/entities/GlobalSettings.kt @@ -11,11 +11,11 @@ package org.quiltmc.community.database.entities import com.github.jershell.kbson.UUIDSerializer -import com.kotlindiscord.kord.extensions.DISCORD_BLURPLE -import com.kotlindiscord.kord.extensions.utils.getKoin import dev.kord.common.entity.Snowflake import dev.kord.core.Kord import dev.kord.rest.builder.message.EmbedBuilder +import dev.kordex.core.DISCORD_BLURPLE +import dev.kordex.core.utils.getKoin import kotlinx.serialization.Serializable import kotlinx.serialization.UseSerializers import org.quiltmc.community.database.Entity diff --git a/src/main/kotlin/org/quiltmc/community/database/entities/LinkedMessages.kt b/src/main/kotlin/org/quiltmc/community/database/entities/LinkedMessages.kt index 38690b29..f55d1493 100644 --- a/src/main/kotlin/org/quiltmc/community/database/entities/LinkedMessages.kt +++ b/src/main/kotlin/org/quiltmc/community/database/entities/LinkedMessages.kt @@ -8,8 +8,8 @@ package org.quiltmc.community.database.entities -import com.kotlindiscord.kord.extensions.utils.getKoin import dev.kord.common.entity.Snowflake +import dev.kordex.core.utils.getKoin import kotlinx.serialization.Serializable import org.quiltmc.community.database.Entity import org.quiltmc.community.database.collections.LinkedMessagesCollection diff --git a/src/main/kotlin/org/quiltmc/community/database/entities/ServerSettings.kt b/src/main/kotlin/org/quiltmc/community/database/entities/ServerSettings.kt index 3bef0617..4d28ae8e 100644 --- a/src/main/kotlin/org/quiltmc/community/database/entities/ServerSettings.kt +++ b/src/main/kotlin/org/quiltmc/community/database/entities/ServerSettings.kt @@ -8,14 +8,14 @@ package org.quiltmc.community.database.entities -import com.kotlindiscord.kord.extensions.DISCORD_BLURPLE -import com.kotlindiscord.kord.extensions.utils.getKoin import dev.kord.common.entity.Snowflake import dev.kord.core.Kord import dev.kord.core.behavior.getChannelOfOrNull import dev.kord.core.entity.channel.Category import dev.kord.core.entity.channel.TopGuildMessageChannel import dev.kord.rest.builder.message.EmbedBuilder +import dev.kordex.core.DISCORD_BLURPLE +import dev.kordex.core.utils.getKoin import kotlinx.serialization.Serializable import org.quiltmc.community.database.Entity import org.quiltmc.community.database.collections.ServerSettingsCollection diff --git a/src/main/kotlin/org/quiltmc/community/database/entities/TagEntity.kt b/src/main/kotlin/org/quiltmc/community/database/entities/TagEntity.kt index 05cca359..fe92a39a 100644 --- a/src/main/kotlin/org/quiltmc/community/database/entities/TagEntity.kt +++ b/src/main/kotlin/org/quiltmc/community/database/entities/TagEntity.kt @@ -11,9 +11,9 @@ package org.quiltmc.community.database.entities import com.github.jershell.kbson.UUIDSerializer -import com.kotlindiscord.kord.extensions.modules.extra.tags.data.Tag import dev.kord.common.Color import dev.kord.common.entity.Snowflake +import dev.kordex.modules.func.tags.data.Tag import kotlinx.serialization.Serializable import kotlinx.serialization.UseSerializers import org.quiltmc.community.database.Entity diff --git a/src/main/kotlin/org/quiltmc/community/database/entities/UserFlags.kt b/src/main/kotlin/org/quiltmc/community/database/entities/UserFlags.kt index c02bcd40..0c9fc53f 100644 --- a/src/main/kotlin/org/quiltmc/community/database/entities/UserFlags.kt +++ b/src/main/kotlin/org/quiltmc/community/database/entities/UserFlags.kt @@ -8,8 +8,8 @@ package org.quiltmc.community.database.entities -import com.kotlindiscord.kord.extensions.utils.getKoin import dev.kord.common.entity.Snowflake +import dev.kordex.core.utils.getKoin import kotlinx.serialization.Serializable import org.quiltmc.community.database.Entity import org.quiltmc.community.database.collections.UserFlagsCollection diff --git a/src/main/kotlin/org/quiltmc/community/database/enums/QuiltServerType.kt b/src/main/kotlin/org/quiltmc/community/database/enums/QuiltServerType.kt index aba4db65..7eaab5ce 100644 --- a/src/main/kotlin/org/quiltmc/community/database/enums/QuiltServerType.kt +++ b/src/main/kotlin/org/quiltmc/community/database/enums/QuiltServerType.kt @@ -6,7 +6,7 @@ package org.quiltmc.community.database.enums -import com.kotlindiscord.kord.extensions.commands.application.slash.converters.ChoiceEnum +import dev.kordex.core.commands.application.slash.converters.ChoiceEnum import kotlinx.serialization.Serializable @Serializable diff --git a/src/main/kotlin/org/quiltmc/community/database/storage/MongoDBDataAdapter.kt b/src/main/kotlin/org/quiltmc/community/database/storage/MongoDBDataAdapter.kt index 431d371c..838f87fd 100644 --- a/src/main/kotlin/org/quiltmc/community/database/storage/MongoDBDataAdapter.kt +++ b/src/main/kotlin/org/quiltmc/community/database/storage/MongoDBDataAdapter.kt @@ -9,10 +9,10 @@ package org.quiltmc.community.database.storage -import com.kotlindiscord.kord.extensions.koin.KordExKoinComponent -import com.kotlindiscord.kord.extensions.storage.Data -import com.kotlindiscord.kord.extensions.storage.DataAdapter -import com.kotlindiscord.kord.extensions.storage.StorageUnit +import dev.kordex.core.koin.KordExKoinComponent +import dev.kordex.core.storage.Data +import dev.kordex.core.storage.DataAdapter +import dev.kordex.core.storage.StorageUnit import kotlinx.serialization.InternalSerializationApi import kotlinx.serialization.json.Json import kotlinx.serialization.serializer diff --git a/src/main/kotlin/org/quiltmc/community/modes/collab/extensions/BanRelayExtension.kt b/src/main/kotlin/org/quiltmc/community/modes/collab/extensions/BanRelayExtension.kt index 09f2f59c..e9207d0b 100644 --- a/src/main/kotlin/org/quiltmc/community/modes/collab/extensions/BanRelayExtension.kt +++ b/src/main/kotlin/org/quiltmc/community/modes/collab/extensions/BanRelayExtension.kt @@ -6,7 +6,7 @@ package org.quiltmc.community.modes.collab.extensions -import com.kotlindiscord.kord.extensions.extensions.Extension +import dev.kordex.core.extensions.Extension class BanRelayExtension : Extension() { override val name = "ban-relay" diff --git a/src/main/kotlin/org/quiltmc/community/modes/collab/extensions/CollabSettingsExtension.kt b/src/main/kotlin/org/quiltmc/community/modes/collab/extensions/CollabSettingsExtension.kt index 015f5ec6..ebba0e8e 100644 --- a/src/main/kotlin/org/quiltmc/community/modes/collab/extensions/CollabSettingsExtension.kt +++ b/src/main/kotlin/org/quiltmc/community/modes/collab/extensions/CollabSettingsExtension.kt @@ -6,7 +6,7 @@ package org.quiltmc.community.modes.collab.extensions -import com.kotlindiscord.kord.extensions.extensions.Extension +import dev.kordex.core.extensions.Extension class CollabSettingsExtension : Extension() { override val name = "collab-settings" diff --git a/src/main/kotlin/org/quiltmc/community/modes/collab/extensions/LookupExtension.kt b/src/main/kotlin/org/quiltmc/community/modes/collab/extensions/LookupExtension.kt index 0305b71d..10b712b6 100644 --- a/src/main/kotlin/org/quiltmc/community/modes/collab/extensions/LookupExtension.kt +++ b/src/main/kotlin/org/quiltmc/community/modes/collab/extensions/LookupExtension.kt @@ -8,18 +8,18 @@ package org.quiltmc.community.modes.collab.extensions -import com.kotlindiscord.kord.extensions.DISCORD_BLURPLE -import com.kotlindiscord.kord.extensions.commands.Arguments -import com.kotlindiscord.kord.extensions.commands.converters.impl.snowflake -import com.kotlindiscord.kord.extensions.commands.converters.impl.string -import com.kotlindiscord.kord.extensions.extensions.Extension -import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand -import com.kotlindiscord.kord.extensions.time.TimestampType -import com.kotlindiscord.kord.extensions.time.toDiscord -import com.kotlindiscord.kord.extensions.utils.translate import dev.kord.common.entity.Snowflake import dev.kord.rest.Image import dev.kord.rest.builder.message.embed +import dev.kordex.core.DISCORD_BLURPLE +import dev.kordex.core.commands.Arguments +import dev.kordex.core.commands.converters.impl.snowflake +import dev.kordex.core.commands.converters.impl.string +import dev.kordex.core.extensions.Extension +import dev.kordex.core.extensions.publicSlashCommand +import dev.kordex.core.time.TimestampType +import dev.kordex.core.time.toDiscord +import dev.kordex.core.utils.translate import io.ktor.client.* import io.ktor.client.call.* import io.ktor.client.plugins.* diff --git a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/ForumExtension.kt b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/ForumExtension.kt index 16384419..771cb435 100644 --- a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/ForumExtension.kt +++ b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/ForumExtension.kt @@ -9,29 +9,6 @@ package org.quiltmc.community.modes.quilt.extensions -import com.kotlindiscord.kord.extensions.DiscordRelayedException -import com.kotlindiscord.kord.extensions.checks.* -import com.kotlindiscord.kord.extensions.commands.Arguments -import com.kotlindiscord.kord.extensions.commands.application.slash.ephemeralSubCommand -import com.kotlindiscord.kord.extensions.commands.converters.impl.channel -import com.kotlindiscord.kord.extensions.commands.converters.impl.optionalChannel -import com.kotlindiscord.kord.extensions.commands.converters.impl.optionalTag -import com.kotlindiscord.kord.extensions.commands.converters.impl.tag -import com.kotlindiscord.kord.extensions.components.forms.ModalForm -import com.kotlindiscord.kord.extensions.extensions.Extension -import com.kotlindiscord.kord.extensions.extensions.ephemeralMessageCommand -import com.kotlindiscord.kord.extensions.extensions.ephemeralSlashCommand -import com.kotlindiscord.kord.extensions.extensions.event -import com.kotlindiscord.kord.extensions.modules.extra.pluralkit.events.PKMessageCreateEvent -import com.kotlindiscord.kord.extensions.modules.extra.pluralkit.events.PKMessageUpdateEvent -import com.kotlindiscord.kord.extensions.modules.unsafe.annotations.UnsafeAPI -import com.kotlindiscord.kord.extensions.modules.unsafe.extensions.unsafeSubCommand -import com.kotlindiscord.kord.extensions.modules.unsafe.types.InitialSlashCommandResponse -import com.kotlindiscord.kord.extensions.modules.unsafe.types.ackEphemeral -import com.kotlindiscord.kord.extensions.utils.addReaction -import com.kotlindiscord.kord.extensions.utils.deleteOwnReaction -import com.kotlindiscord.kord.extensions.utils.ensureWebhook -import com.kotlindiscord.kord.extensions.utils.extraData import dev.kord.common.annotation.KordUnsafe import dev.kord.common.entity.ChannelFlag import dev.kord.common.entity.ChannelType @@ -49,6 +26,28 @@ import dev.kord.core.entity.channel.NewsChannel import dev.kord.core.entity.channel.TopGuildMessageChannel import dev.kord.core.entity.channel.thread.TextChannelThread import dev.kord.core.entity.channel.thread.ThreadChannel +import dev.kordex.core.DiscordRelayedException +import dev.kordex.core.checks.* +import dev.kordex.core.commands.Arguments +import dev.kordex.core.commands.application.slash.ephemeralSubCommand +import dev.kordex.core.commands.converters.impl.channel +import dev.kordex.core.commands.converters.impl.optionalChannel +import dev.kordex.core.commands.converters.impl.optionalTag +import dev.kordex.core.commands.converters.impl.tag +import dev.kordex.core.components.forms.ModalForm +import dev.kordex.core.extensions.Extension +import dev.kordex.core.extensions.ephemeralMessageCommand +import dev.kordex.core.extensions.ephemeralSlashCommand +import dev.kordex.core.extensions.event +import dev.kordex.core.utils.addReaction +import dev.kordex.core.utils.deleteOwnReaction +import dev.kordex.core.utils.ensureWebhook +import dev.kordex.core.utils.extraData +import dev.kordex.modules.dev.unsafe.annotations.UnsafeAPI +import dev.kordex.modules.dev.unsafe.commands.slash.InitialSlashCommandResponse +import dev.kordex.modules.dev.unsafe.extensions.unsafeSubCommand +import dev.kordex.modules.pluralkit.events.PKMessageCreateEvent +import dev.kordex.modules.pluralkit.events.PKMessageUpdateEvent import io.ktor.client.* import io.ktor.client.call.* import io.ktor.client.request.* diff --git a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/ShowcaseExtension.kt b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/ShowcaseExtension.kt index 230413d2..16713a5c 100644 --- a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/ShowcaseExtension.kt +++ b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/ShowcaseExtension.kt @@ -8,25 +8,6 @@ package org.quiltmc.community.modes.quilt.extensions -import com.kotlindiscord.kord.extensions.checks.anyGuild -import com.kotlindiscord.kord.extensions.checks.hasPermission -import com.kotlindiscord.kord.extensions.checks.isNotInThread -import com.kotlindiscord.kord.extensions.checks.notHasPermission -import com.kotlindiscord.kord.extensions.commands.Arguments -import com.kotlindiscord.kord.extensions.commands.application.slash.ephemeralSubCommand -import com.kotlindiscord.kord.extensions.commands.application.slash.group -import com.kotlindiscord.kord.extensions.commands.converters.impl.channel -import com.kotlindiscord.kord.extensions.commands.converters.impl.string -import com.kotlindiscord.kord.extensions.extensions.Extension -import com.kotlindiscord.kord.extensions.extensions.ephemeralSlashCommand -import com.kotlindiscord.kord.extensions.extensions.event -import com.kotlindiscord.kord.extensions.modules.extra.pluralkit.events.PKMessageCreateEvent -import com.kotlindiscord.kord.extensions.modules.extra.pluralkit.events.ProxiedMessageCreateEvent -import com.kotlindiscord.kord.extensions.storage.StorageType -import com.kotlindiscord.kord.extensions.storage.StorageUnit -import com.kotlindiscord.kord.extensions.utils.authorId -import com.kotlindiscord.kord.extensions.utils.capitalizeWords -import com.kotlindiscord.kord.extensions.utils.dm import dev.kord.common.entity.ChannelType import dev.kord.common.entity.MessageType import dev.kord.common.entity.Permission @@ -41,6 +22,25 @@ import dev.kord.core.entity.channel.CategorizableChannel import dev.kord.core.entity.channel.TextChannel import dev.kord.core.entity.channel.thread.TextChannelThread import dev.kord.core.event.message.ReactionAddEvent +import dev.kordex.core.checks.anyGuild +import dev.kordex.core.checks.hasPermission +import dev.kordex.core.checks.isNotInThread +import dev.kordex.core.checks.notHasPermission +import dev.kordex.core.commands.Arguments +import dev.kordex.core.commands.application.slash.ephemeralSubCommand +import dev.kordex.core.commands.application.slash.group +import dev.kordex.core.commands.converters.impl.channel +import dev.kordex.core.commands.converters.impl.string +import dev.kordex.core.extensions.Extension +import dev.kordex.core.extensions.ephemeralSlashCommand +import dev.kordex.core.extensions.event +import dev.kordex.core.storage.StorageType +import dev.kordex.core.storage.StorageUnit +import dev.kordex.core.utils.authorId +import dev.kordex.core.utils.capitalizeWords +import dev.kordex.core.utils.dm +import dev.kordex.modules.pluralkit.events.PKMessageCreateEvent +import dev.kordex.modules.pluralkit.events.ProxiedMessageCreateEvent import kotlinx.coroutines.delay import kotlinx.datetime.Clock import kotlinx.datetime.Instant diff --git a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/SyncExtension.kt b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/SyncExtension.kt index 9a500415..a69b7eb2 100644 --- a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/SyncExtension.kt +++ b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/SyncExtension.kt @@ -8,16 +8,6 @@ package org.quiltmc.community.modes.quilt.extensions -import com.kotlindiscord.kord.extensions.checks.hasPermission -import com.kotlindiscord.kord.extensions.checks.types.CheckContext -import com.kotlindiscord.kord.extensions.commands.application.slash.ephemeralSubCommand -import com.kotlindiscord.kord.extensions.extensions.Extension -import com.kotlindiscord.kord.extensions.extensions.ephemeralSlashCommand -import com.kotlindiscord.kord.extensions.extensions.event -import com.kotlindiscord.kord.extensions.sentry.BreadcrumbType -import com.kotlindiscord.kord.extensions.utils.hasPermission -import com.kotlindiscord.kord.extensions.utils.timeoutUntil -import com.kotlindiscord.kord.extensions.utils.translate import dev.kord.common.entity.Permission import dev.kord.common.entity.Snowflake import dev.kord.core.behavior.ban @@ -28,6 +18,16 @@ import dev.kord.core.event.guild.BanAddEvent import dev.kord.core.event.guild.BanRemoveEvent import dev.kord.core.event.guild.MemberUpdateEvent import dev.kord.rest.builder.message.embed +import dev.kordex.core.checks.hasPermission +import dev.kordex.core.checks.types.CheckContext +import dev.kordex.core.commands.application.slash.ephemeralSubCommand +import dev.kordex.core.extensions.Extension +import dev.kordex.core.extensions.ephemeralSlashCommand +import dev.kordex.core.extensions.event +import dev.kordex.core.sentry.BreadcrumbType +import dev.kordex.core.utils.hasPermission +import dev.kordex.core.utils.timeoutUntil +import dev.kordex.core.utils.translate import io.github.oshai.kotlinlogging.KotlinLogging import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.toList diff --git a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/UtilityExtension.kt b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/UtilityExtension.kt index eb4c153d..1bf822e8 100644 --- a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/UtilityExtension.kt +++ b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/UtilityExtension.kt @@ -10,29 +10,6 @@ package org.quiltmc.community.modes.quilt.extensions -import com.kotlindiscord.kord.extensions.DISCORD_BLURPLE -import com.kotlindiscord.kord.extensions.DISCORD_GREEN -import com.kotlindiscord.kord.extensions.DISCORD_RED -import com.kotlindiscord.kord.extensions.DiscordRelayedException -import com.kotlindiscord.kord.extensions.annotations.DoNotChain -import com.kotlindiscord.kord.extensions.annotations.UnexpectedFunctionBehaviour -import com.kotlindiscord.kord.extensions.checks.channelType -import com.kotlindiscord.kord.extensions.checks.hasPermission -import com.kotlindiscord.kord.extensions.checks.isInThread -import com.kotlindiscord.kord.extensions.checks.isNotBot -import com.kotlindiscord.kord.extensions.commands.Arguments -import com.kotlindiscord.kord.extensions.commands.application.slash.ephemeralSubCommand -import com.kotlindiscord.kord.extensions.commands.application.slash.publicSubCommand -import com.kotlindiscord.kord.extensions.commands.converters.impl.* -import com.kotlindiscord.kord.extensions.components.ComponentContainer -import com.kotlindiscord.kord.extensions.components.components -import com.kotlindiscord.kord.extensions.components.ephemeralButton -import com.kotlindiscord.kord.extensions.components.forms.ModalForm -import com.kotlindiscord.kord.extensions.extensions.* -import com.kotlindiscord.kord.extensions.i18n.SupportedLocales -import com.kotlindiscord.kord.extensions.time.TimestampType -import com.kotlindiscord.kord.extensions.time.toDiscord -import com.kotlindiscord.kord.extensions.utils.* import dev.kord.common.annotation.KordPreview import dev.kord.common.entity.* import dev.kord.core.behavior.channel.* @@ -50,6 +27,29 @@ import dev.kord.core.event.guild.MemberUpdateEvent import dev.kord.core.event.message.MessageCreateEvent import dev.kord.rest.builder.message.allowedMentions import dev.kord.rest.builder.message.embed +import dev.kordex.core.DISCORD_BLURPLE +import dev.kordex.core.DISCORD_GREEN +import dev.kordex.core.DISCORD_RED +import dev.kordex.core.DiscordRelayedException +import dev.kordex.core.annotations.DoNotChain +import dev.kordex.core.annotations.UnexpectedFunctionBehaviour +import dev.kordex.core.checks.channelType +import dev.kordex.core.checks.hasPermission +import dev.kordex.core.checks.isInThread +import dev.kordex.core.checks.isNotBot +import dev.kordex.core.commands.Arguments +import dev.kordex.core.commands.application.slash.ephemeralSubCommand +import dev.kordex.core.commands.application.slash.publicSubCommand +import dev.kordex.core.commands.converters.impl.* +import dev.kordex.core.components.ComponentContainer +import dev.kordex.core.components.components +import dev.kordex.core.components.ephemeralButton +import dev.kordex.core.components.forms.ModalForm +import dev.kordex.core.extensions.* +import dev.kordex.core.i18n.SupportedLocales +import dev.kordex.core.time.TimestampType +import dev.kordex.core.time.toDiscord +import dev.kordex.core.utils.* import io.github.oshai.kotlinlogging.KotlinLogging import io.ktor.client.request.forms.* import io.ktor.utils.io.jvm.javaio.* diff --git a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/filtering/FilterAction.kt b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/filtering/FilterAction.kt index d766b662..c98d420b 100644 --- a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/filtering/FilterAction.kt +++ b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/filtering/FilterAction.kt @@ -6,7 +6,7 @@ package org.quiltmc.community.modes.quilt.extensions.filtering -import com.kotlindiscord.kord.extensions.commands.application.slash.converters.ChoiceEnum +import dev.kordex.core.commands.application.slash.converters.ChoiceEnum import kotlinx.serialization.Serializable @Serializable diff --git a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/filtering/FilterExtension.kt b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/filtering/FilterExtension.kt index 1f486501..6deda99b 100644 --- a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/filtering/FilterExtension.kt +++ b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/filtering/FilterExtension.kt @@ -11,23 +11,6 @@ package org.quiltmc.community.modes.quilt.extensions.filtering import com.github.curiousoddman.rgxgen.RgxGen import com.github.curiousoddman.rgxgen.config.RgxGenOption import com.github.curiousoddman.rgxgen.config.RgxGenProperties -import com.kotlindiscord.kord.extensions.DISCORD_BLURPLE -import com.kotlindiscord.kord.extensions.DISCORD_GREEN -import com.kotlindiscord.kord.extensions.DISCORD_RED -import com.kotlindiscord.kord.extensions.DISCORD_YELLOW -import com.kotlindiscord.kord.extensions.annotations.DoNotChain -import com.kotlindiscord.kord.extensions.checks.isNotBot -import com.kotlindiscord.kord.extensions.commands.Arguments -import com.kotlindiscord.kord.extensions.commands.application.slash.converters.impl.enumChoice -import com.kotlindiscord.kord.extensions.commands.application.slash.converters.impl.optionalEnumChoice -import com.kotlindiscord.kord.extensions.commands.application.slash.ephemeralSubCommand -import com.kotlindiscord.kord.extensions.commands.converters.impl.defaultingBoolean -import com.kotlindiscord.kord.extensions.commands.converters.impl.optionalString -import com.kotlindiscord.kord.extensions.commands.converters.impl.string -import com.kotlindiscord.kord.extensions.extensions.Extension -import com.kotlindiscord.kord.extensions.extensions.ephemeralSlashCommand -import com.kotlindiscord.kord.extensions.extensions.event -import com.kotlindiscord.kord.extensions.utils.* import dev.kord.common.entity.Snowflake import dev.kord.core.behavior.ban import dev.kord.core.behavior.channel.createEmbed @@ -41,6 +24,23 @@ import dev.kord.core.event.message.MessageUpdateEvent import dev.kord.core.event.user.UserUpdateEvent import dev.kord.rest.builder.message.EmbedBuilder import dev.kord.rest.builder.message.embed +import dev.kordex.core.DISCORD_BLURPLE +import dev.kordex.core.DISCORD_GREEN +import dev.kordex.core.DISCORD_RED +import dev.kordex.core.DISCORD_YELLOW +import dev.kordex.core.annotations.DoNotChain +import dev.kordex.core.checks.isNotBot +import dev.kordex.core.commands.Arguments +import dev.kordex.core.commands.application.slash.converters.impl.enumChoice +import dev.kordex.core.commands.application.slash.converters.impl.optionalEnumChoice +import dev.kordex.core.commands.application.slash.ephemeralSubCommand +import dev.kordex.core.commands.converters.impl.defaultingBoolean +import dev.kordex.core.commands.converters.impl.optionalString +import dev.kordex.core.commands.converters.impl.string +import dev.kordex.core.extensions.Extension +import dev.kordex.core.extensions.ephemeralSlashCommand +import dev.kordex.core.extensions.event +import dev.kordex.core.utils.* import io.github.oshai.kotlinlogging.KotlinLogging import net.codebox.homoglyph.HomoglyphBuilder import org.koin.core.component.inject diff --git a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/filtering/MatchTarget.kt b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/filtering/MatchTarget.kt index 64903786..6d3a1695 100644 --- a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/filtering/MatchTarget.kt +++ b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/filtering/MatchTarget.kt @@ -6,7 +6,7 @@ package org.quiltmc.community.modes.quilt.extensions.filtering -import com.kotlindiscord.kord.extensions.commands.application.slash.converters.ChoiceEnum +import dev.kordex.core.commands.application.slash.converters.ChoiceEnum import kotlinx.serialization.Serializable @Serializable diff --git a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/filtering/MatchType.kt b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/filtering/MatchType.kt index a33fec9b..0869031f 100644 --- a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/filtering/MatchType.kt +++ b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/filtering/MatchType.kt @@ -6,7 +6,7 @@ package org.quiltmc.community.modes.quilt.extensions.filtering -import com.kotlindiscord.kord.extensions.commands.application.slash.converters.ChoiceEnum +import dev.kordex.core.commands.application.slash.converters.ChoiceEnum import kotlinx.serialization.Serializable @Serializable diff --git a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/github/GithubExtension.kt b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/github/GithubExtension.kt index 4f082481..2163886d 100644 --- a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/github/GithubExtension.kt +++ b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/github/GithubExtension.kt @@ -9,19 +9,19 @@ package org.quiltmc.community.modes.quilt.extensions.github import com.expediagroup.graphql.client.ktor.GraphQLKtorClient -import com.kotlindiscord.kord.extensions.DISCORD_GREEN -import com.kotlindiscord.kord.extensions.DISCORD_RED -import com.kotlindiscord.kord.extensions.commands.Arguments -import com.kotlindiscord.kord.extensions.commands.application.slash.ephemeralSubCommand -import com.kotlindiscord.kord.extensions.commands.application.slash.group -import com.kotlindiscord.kord.extensions.commands.converters.impl.defaultingString -import com.kotlindiscord.kord.extensions.commands.converters.impl.int -import com.kotlindiscord.kord.extensions.commands.converters.impl.optionalString -import com.kotlindiscord.kord.extensions.commands.converters.impl.string -import com.kotlindiscord.kord.extensions.extensions.Extension -import com.kotlindiscord.kord.extensions.extensions.ephemeralSlashCommand import dev.kord.common.entity.Permission import dev.kord.core.behavior.channel.createEmbed +import dev.kordex.core.DISCORD_GREEN +import dev.kordex.core.DISCORD_RED +import dev.kordex.core.commands.Arguments +import dev.kordex.core.commands.application.slash.ephemeralSubCommand +import dev.kordex.core.commands.application.slash.group +import dev.kordex.core.commands.converters.impl.defaultingString +import dev.kordex.core.commands.converters.impl.int +import dev.kordex.core.commands.converters.impl.optionalString +import dev.kordex.core.commands.converters.impl.string +import dev.kordex.core.extensions.Extension +import dev.kordex.core.extensions.ephemeralSlashCommand import io.github.oshai.kotlinlogging.KotlinLogging import io.ktor.client.* import io.ktor.client.call.* diff --git a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/messagelog/MessageLogExtension.kt b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/messagelog/MessageLogExtension.kt index b6d36d84..80792bfd 100644 --- a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/messagelog/MessageLogExtension.kt +++ b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/messagelog/MessageLogExtension.kt @@ -8,11 +8,6 @@ package org.quiltmc.community.modes.quilt.extensions.messagelog -import com.kotlindiscord.kord.extensions.extensions.Extension -import com.kotlindiscord.kord.extensions.extensions.event -import com.kotlindiscord.kord.extensions.utils.deltas.MessageDelta -import com.kotlindiscord.kord.extensions.utils.getJumpUrl -import com.kotlindiscord.kord.extensions.utils.isEphemeral import dev.kord.common.entity.Snowflake import dev.kord.common.entity.optional.Optional import dev.kord.core.entity.Guild @@ -29,6 +24,11 @@ import dev.kord.core.event.message.MessageUpdateEvent import dev.kord.rest.builder.message.EmbedBuilder import dev.kord.rest.builder.message.allowedMentions import dev.kord.rest.builder.message.embed +import dev.kordex.core.extensions.Extension +import dev.kordex.core.extensions.event +import dev.kordex.core.utils.deltas.MessageDelta +import dev.kordex.core.utils.getJumpUrl +import dev.kordex.core.utils.isEphemeral import io.github.oshai.kotlinlogging.KotlinLogging import io.ktor.client.request.forms.* import io.ktor.utils.io.jvm.javaio.* diff --git a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/minecraft/MinecraftExtension.kt b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/minecraft/MinecraftExtension.kt index b0418709..f877b722 100644 --- a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/minecraft/MinecraftExtension.kt +++ b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/minecraft/MinecraftExtension.kt @@ -6,22 +6,11 @@ package org.quiltmc.community.modes.quilt.extensions.minecraft -import com.kotlindiscord.kord.extensions.DISCORD_FUCHSIA -import com.kotlindiscord.kord.extensions.DISCORD_GREEN -import com.kotlindiscord.kord.extensions.checks.hasPermission -import com.kotlindiscord.kord.extensions.commands.Arguments -import com.kotlindiscord.kord.extensions.commands.application.slash.ephemeralSubCommand -import com.kotlindiscord.kord.extensions.commands.converters.impl.optionalString -import com.kotlindiscord.kord.extensions.extensions.Extension -import com.kotlindiscord.kord.extensions.extensions.ephemeralSlashCommand -import com.kotlindiscord.kord.extensions.pagination.pages.Page -import com.kotlindiscord.kord.extensions.utils.scheduling.Scheduler -import com.kotlindiscord.kord.extensions.utils.scheduling.Task -import com.kotlindiscord.kord.extensions.utils.toReaction import dev.kord.common.annotation.KordPreview import dev.kord.common.entity.Permission import dev.kord.common.entity.Snowflake import dev.kord.core.behavior.channel.createMessage +import dev.kord.core.behavior.edit import dev.kord.core.builder.components.emoji import dev.kord.core.entity.ReactionEmoji import dev.kord.core.entity.channel.NewsChannel @@ -30,6 +19,22 @@ import dev.kord.core.entity.channel.TopGuildMessageChannel import dev.kord.rest.builder.message.MessageBuilder import dev.kord.rest.builder.message.actionRow import dev.kord.rest.builder.message.embed +import dev.kordex.core.DISCORD_FUCHSIA +import dev.kordex.core.DISCORD_GREEN +import dev.kordex.core.checks.hasPermission +import dev.kordex.core.checks.or +import dev.kordex.core.commands.Arguments +import dev.kordex.core.commands.application.slash.ephemeralSubCommand +import dev.kordex.core.commands.converters.impl.message +import dev.kordex.core.commands.converters.impl.optionalString +import dev.kordex.core.commands.converters.impl.string +import dev.kordex.core.extensions.Extension +import dev.kordex.core.extensions.ephemeralSlashCommand +import dev.kordex.core.pagination.pages.Page +import dev.kordex.core.utils.scheduling.Scheduler +import dev.kordex.core.utils.scheduling.Task +import dev.kordex.core.utils.toReaction +import dev.kordex.parser.Cursor import io.github.oshai.kotlinlogging.KotlinLogging import io.ktor.client.* import io.ktor.client.call.* @@ -40,6 +45,7 @@ import kotlinx.datetime.Clock import kotlinx.serialization.json.Json import org.apache.commons.text.StringEscapeUtils import org.quiltmc.community.* +import kotlin.system.exitProcess private const val PAGINATOR_TIMEOUT = 60_000L // One minute private const val CHUNK_SIZE = 10 @@ -49,7 +55,7 @@ private const val JSON_URL = "$BASE_URL/javaPatchNotes.json" private const val CHECK_DELAY = 60L -private val LINK_REGEX = "[^\"]+)\"[^>]*>(?[^<]+)".toRegex() +private val LINK_REGEX = "[^\"\\s]+)\"?[^>]*>(?[^<]+)".toRegex() @Suppress("MagicNumber", "UnderscoresInNumericLiterals") private val CHANNELS: List = listOf( @@ -160,9 +166,13 @@ class MinecraftExtension : Extension() { name = "forget" description = "Forget a version (the last one by default), allowing it to be relayed again." - check { hasBaseModeratorRole() } + check { + hasBaseModeratorRole() - check { hasPermission(Permission.Administrator) } + or { + hasPermission(Permission.Administrator) + } + } action { if (!::currentEntries.isInitialized) { @@ -189,11 +199,52 @@ class MinecraftExtension : Extension() { } } + ephemeralSubCommand(::UpdateArguments) { + name = "update" + description = "Edit the given message to replace its embed. Useful when formatting code changes." + + check { + hasBaseModeratorRole() + + or { + hasPermission(Permission.Administrator) + } + } + + action { + if (!::currentEntries.isInitialized) { + respond { content = "Still setting up - try again a bit later!" } + return@action + } + + val entry = currentEntries.entries.firstOrNull { + it.version.equals(arguments.version, true) + } + + if (entry == null) { + respond { content = "Unknown version supplied: `${arguments.version}`" } + return@action + } + + arguments.message.edit { + patchNotes(entry.get()) + } + + respond { content = "Message edit to match version: `${entry.version}`" } + } + } + ephemeralSubCommand { name = "run" description = "Run the check task now, without waiting for it." - check { hasBaseModeratorRole() } + check { + hasBaseModeratorRole() + + or { + hasPermission(Permission.Administrator) + } + } action { respond { content = "Checking now..." } @@ -247,7 +298,7 @@ class MinecraftExtension : Extension() { .forEach { it.relay(patchNote) } fun String.formatHTML(): String { - var result = this + var result = StringEscapeUtils.unescapeHtml4(trim('\n')) result = result.replace("\u200B", "") result = result.replace("

", "") @@ -261,6 +312,9 @@ class MinecraftExtension : Extension() { result = result.replace("", "**") result = result.replace("", "**") + result = result.replace("", "_") + result = result.replace("", "_") + result = result.replace("", "`") result = result.replace("", "`") @@ -286,10 +340,55 @@ class MinecraftExtension : Extension() { ) } - return StringEscapeUtils.unescapeHtml4(result.trim('\n')) + val cursor = Cursor(result) + var isQuote = false + + result = "" + + @Suppress("LoopWithTooManyJumpStatements") // Nah. + while (cursor.hasNext) { + result = result + ( + cursor.consumeWhile { it != '<' }?.prefixQuote(isQuote) + ?: break + ) + + val temp = cursor.consumeWhile { it != '>' } + ?.plus(cursor.nextOrNull() ?: "") + ?: break + + if (temp == "
") { + isQuote = true + + if (cursor.peekNext() == '\n') { + cursor.next() + } + + continue + } else if (temp == "
") { + isQuote = false + + continue + } + + result = result + temp.prefixQuote(isQuote) + } + + result = result.replace("<", "<") + + return result.trim() } - fun String.truncateMarkdown(maxLength: Int = 1000): Pair { + fun String.prefixQuote(prefix: Boolean) = + if (prefix) { + split("\n") + .joinToString("\n") { + "> $it" + } + } else { + this + } + + fun String.truncateMarkdown(maxLength: Int = 3000): Pair { var result = this if (length > maxLength) { @@ -304,7 +403,7 @@ class MinecraftExtension : Extension() { return result to 0 } - private fun MessageBuilder.patchNotes(patchNote: PatchNote, maxLength: Int = 4000) { + private fun MessageBuilder.patchNotes(patchNote: PatchNote, maxLength: Int = 3000) { val (truncated, remaining) = patchNote.body.formatHTML().truncateMarkdown(maxLength) actionRow { @@ -335,14 +434,14 @@ class MinecraftExtension : Extension() { } } - private suspend fun TopGuildMessageChannel.relay(patchNote: PatchNote, maxLength: Int = 1000) { + private suspend fun TopGuildMessageChannel.relay(patchNote: PatchNote) { val message = createMessage { // If we are in the community guild, ping the update role if (guildId == COMMUNITY_GUILD) { content = "<@&$MINECRAFT_UPDATE_PING_ROLE>" } - patchNotes(patchNote, maxLength) + patchNotes(patchNote) } val title = if (patchNote.title.startsWith("minecraft ", true)) { @@ -368,7 +467,10 @@ class MinecraftExtension : Extension() { } } - private suspend fun PatchNoteEntry.get() = + fun getLatest() = + currentEntries.entries.first() + + suspend fun PatchNoteEntry.get() = client.get("$BASE_URL/$contentPath").body() @OptIn(KordPreview::class) @@ -378,4 +480,32 @@ class MinecraftExtension : Extension() { description = "Specific version to get patch notes for" } } + + @OptIn(KordPreview::class) + class UpdateArguments : Arguments() { + val version by string { + name = "version" + description = "Specific version to get patch notes for" + } + + val message by message { + name = "message" + description = "Message to edit with a new embed" + } + } +} + +// In-dev testing function +@Suppress("unused") +private suspend fun main() { + val ext = MinecraftExtension() + ext.populateVersions() + + val current = ext.getLatest() + + with(ext) { + println(current.get().body.formatHTML()) + } + + exitProcess(0) } diff --git a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/modhostverify/ModHostingVerificationExtension.kt b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/modhostverify/ModHostingVerificationExtension.kt index b7439adb..74cbcd9e 100644 --- a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/modhostverify/ModHostingVerificationExtension.kt +++ b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/modhostverify/ModHostingVerificationExtension.kt @@ -6,14 +6,6 @@ package org.quiltmc.community.modes.quilt.extensions.modhostverify -import com.kotlindiscord.kord.extensions.DISCORD_RED -import com.kotlindiscord.kord.extensions.checks.isNotBot -import com.kotlindiscord.kord.extensions.extensions.Extension -import com.kotlindiscord.kord.extensions.extensions.event -import com.kotlindiscord.kord.extensions.modules.extra.pluralkit.events.PKMessageCreateEvent -import com.kotlindiscord.kord.extensions.utils.dm -import com.kotlindiscord.kord.extensions.utils.getParentMessage -import com.kotlindiscord.kord.extensions.utils.scheduling.Scheduler import dev.kord.common.entity.MessageType import dev.kord.core.behavior.channel.asChannelOf import dev.kord.core.behavior.channel.createEmbed @@ -26,6 +18,14 @@ import dev.kord.core.entity.User import dev.kord.core.entity.channel.TextChannel import dev.kord.rest.builder.message.create.MessageCreateBuilder import dev.kord.rest.builder.message.embed +import dev.kordex.core.DISCORD_RED +import dev.kordex.core.checks.isNotBot +import dev.kordex.core.extensions.Extension +import dev.kordex.core.extensions.event +import dev.kordex.core.utils.dm +import dev.kordex.core.utils.getParentMessage +import dev.kordex.core.utils.scheduling.Scheduler +import dev.kordex.modules.pluralkit.events.PKMessageCreateEvent import io.github.oshai.kotlinlogging.KotlinLogging import io.ktor.client.* import io.ktor.client.call.* diff --git a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/settings/SettingsExtension.kt b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/settings/SettingsExtension.kt index 684f7f6e..b0dafd81 100644 --- a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/settings/SettingsExtension.kt +++ b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/settings/SettingsExtension.kt @@ -8,23 +8,23 @@ package org.quiltmc.community.modes.quilt.extensions.settings -import com.kotlindiscord.kord.extensions.DISCORD_BLURPLE -import com.kotlindiscord.kord.extensions.checks.anyGuild -import com.kotlindiscord.kord.extensions.checks.hasPermission -import com.kotlindiscord.kord.extensions.checks.types.CheckContext -import com.kotlindiscord.kord.extensions.commands.Arguments -import com.kotlindiscord.kord.extensions.commands.application.slash.converters.impl.optionalEnumChoice -import com.kotlindiscord.kord.extensions.commands.application.slash.ephemeralSubCommand -import com.kotlindiscord.kord.extensions.commands.converters.impl.* -import com.kotlindiscord.kord.extensions.extensions.Extension -import com.kotlindiscord.kord.extensions.extensions.ephemeralSlashCommand -import com.kotlindiscord.kord.extensions.extensions.event import dev.kord.common.entity.Permission import dev.kord.core.Kord import dev.kord.core.entity.channel.Category import dev.kord.core.entity.channel.TopGuildMessageChannel import dev.kord.core.event.guild.GuildCreateEvent import dev.kord.rest.builder.message.embed +import dev.kordex.core.DISCORD_BLURPLE +import dev.kordex.core.checks.anyGuild +import dev.kordex.core.checks.hasPermission +import dev.kordex.core.checks.types.CheckContext +import dev.kordex.core.commands.Arguments +import dev.kordex.core.commands.application.slash.converters.impl.optionalEnumChoice +import dev.kordex.core.commands.application.slash.ephemeralSubCommand +import dev.kordex.core.commands.converters.impl.* +import dev.kordex.core.extensions.Extension +import dev.kordex.core.extensions.ephemeralSlashCommand +import dev.kordex.core.extensions.event import io.github.oshai.kotlinlogging.KotlinLogging import kotlinx.coroutines.delay import kotlinx.coroutines.launch diff --git a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/storage/BannedReactions.kt b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/storage/BannedReactions.kt index bc7ca599..468e472a 100644 --- a/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/storage/BannedReactions.kt +++ b/src/main/kotlin/org/quiltmc/community/modes/quilt/extensions/storage/BannedReactions.kt @@ -6,8 +6,8 @@ package org.quiltmc.community.modes.quilt.extensions.storage -import com.kotlindiscord.kord.extensions.storage.Data import dev.kord.common.entity.Snowflake +import dev.kordex.core.storage.Data import kotlinx.serialization.Serializable @Serializable diff --git a/src/main/resources/logback.groovy b/src/main/resources/logback.groovy index 561e6cac..bea8c5e6 100644 --- a/src/main/resources/logback.groovy +++ b/src/main/resources/logback.groovy @@ -4,8 +4,9 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import ch.qos.logback.core.joran.spi.ConsoleTarget +import ch.qos.logback.classic.Level import ch.qos.logback.core.ConsoleAppender +import ch.qos.logback.core.joran.spi.ConsoleTarget import org.quiltmc.community.DiscordLogAppender def environment = System.getenv("ENVIRONMENT") ?: "prod" diff --git a/src/main/resources/logbackCompiler.groovy b/src/main/resources/logbackCompiler.groovy index 44f5a931..c4e4a985 100644 --- a/src/main/resources/logbackCompiler.groovy +++ b/src/main/resources/logbackCompiler.groovy @@ -456,7 +456,7 @@ importsAcceptList = [ 'java.lang.System.getProperty', 'java.lang.System.getenv', 'java.util.Map.getOrDefault', - 'com.kotlindiscord.kord.extensions.utils._EnvironmentKt.envOrNull', + 'dev.kordex.core.utils._EnvironmentKt.envOrNull', 'org.quiltmc.community._ConstantsKt.getLOGGING_ENV', 'org.quiltmc.community._ConstantsKt.getLOGGING_URL' ]