Skip to content

Commit

Permalink
Fix issues with user-installable apps
Browse files Browse the repository at this point in the history
  • Loading branch information
DRSchlaubi committed Sep 17, 2024
1 parent c2856ae commit 686a860
Show file tree
Hide file tree
Showing 19 changed files with 46 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,14 @@ public abstract class SubCommandModule(context: PluginContext) : MikBotModule(co
groupBodies.add(GroupPair(name, body))
}

public open fun SlashCommand<*, *, *>.commandSettings() = Unit
final override suspend fun setup() {
overrideSetup()

ephemeralSlashCommand {
name = commandName
description = "<never used>"
commandSettings()

ephemeralSubCommandBodies.forEach { with(it) { add() } }
publicSubCommandBodies.forEach { with(it) { add() } }
Expand Down
6 changes: 3 additions & 3 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
[versions]
kotlin = "2.0.0"
kordex = "1.9.1-mikbot-SNAPSHOT"
kordex = "1.9.2-mikbot-SNAPSHOT"
kmongo = "5.1.0"
coroutines = "1.8.1"
serialization = "1.7.1"
ktor = "2.3.11"
kord = "feature-user-apps-20240825.234248-3"
api = "3.36.3"
kord = "feature-user-apps-20240917.091252-4"
api = "3.36.4"
ksp = "2.0.0-1.0.22"
lavakord = "7.1.0"

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package dev.schlaubi.mikmusic.commands

import dev.schlaubi.mikmusic.core.MusicModule
import dev.schlaubi.mikmusic.core.musicControlContexts

suspend fun MusicModule.clearCommand() = ephemeralControlSlashCommand {
name = "clear"
description = "commands.clear.description"
musicControlContexts()

action {
musicPlayer.queue.clear()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import dev.schlaubi.lavakord.audio.Link
import dev.schlaubi.lavakord.kord.connectAudio
import dev.schlaubi.mikbot.plugin.api.util.safeGuild
import dev.schlaubi.mikmusic.core.MusicModule
import dev.schlaubi.mikmusic.core.musicControlContexts
import dev.schlaubi.mikmusic.player.MusicPlayer
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.map
Expand All @@ -21,6 +22,7 @@ import kotlin.time.Duration.Companion.seconds
suspend fun MusicModule.fixCommand() = ephemeralControlSlashCommand {
name = "fix"
description = "commands.fix.description"
musicControlContexts()

check {
requireBotPermissions(Permission.ManageGuild)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import com.kotlindiscord.kord.extensions.commands.application.slash.ephemeralSub
import com.kotlindiscord.kord.extensions.commands.converters.impl.int
import dev.arbjerg.lavalink.protocol.v4.Track
import dev.schlaubi.mikmusic.core.MusicModule
import dev.schlaubi.mikmusic.core.musicControlContexts

class SingleSongMoveArguments : Arguments() {
val song by int {
Expand Down Expand Up @@ -63,6 +64,7 @@ suspend fun MusicModule.moveCommand() {
ephemeralControlSlashCommand {
name = "move"
description = "commands.move.description"
musicControlContexts()

ephemeralSubCommand(::SingleSongMoveArguments) {
name = "top"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@ package dev.schlaubi.mikmusic.commands

import dev.schlaubi.mikmusic.checks.anyMusicPlaying
import dev.schlaubi.mikmusic.core.MusicModule
import dev.schlaubi.mikmusic.core.musicControlContexts
import dev.schlaubi.mikmusic.player.ChapterQueuedTrack

suspend fun MusicModule.nextCommand() = ephemeralControlSlashCommand {
name = "next"
description = "commands.next.description"
musicControlContexts()

check {
anyMusicPlaying(this@nextCommand)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import dev.kord.rest.builder.message.embed
import dev.schlaubi.mikmusic.checks.anyMusicPlaying
import dev.schlaubi.mikmusic.checks.musicQuizAntiCheat
import dev.schlaubi.mikmusic.core.MusicModule
import dev.schlaubi.mikmusic.core.musicControlContexts
import dev.schlaubi.mikmusic.util.addSong
import kotlin.time.DurationUnit
import kotlin.time.toDuration
Expand All @@ -23,6 +24,7 @@ private val regex = """\.[0-9]*""".toRegex()
suspend fun MusicModule.nowPlayingCommand() = publicSlashCommand(::NowPlayingArguments) {
name = "now-playing"
description = "commands.now_playing.description"
musicControlContexts()

check {
anyMusicPlaying(this@nowPlayingCommand)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package dev.schlaubi.mikmusic.commands

import dev.schlaubi.mikmusic.core.MusicModule
import dev.schlaubi.mikmusic.core.musicControlContexts

suspend fun MusicModule.pauseCommand() = ephemeralControlSlashCommand {
name = "pause"
description = "commands.pause.description"
musicControlContexts()

action {
musicPlayer.pause(!link.player.paused)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.kotlindiscord.kord.extensions.commands.converters.impl.defaultingBool
import com.kotlindiscord.kord.extensions.extensions.ephemeralSlashCommand
import dev.schlaubi.mikmusic.checks.joinSameChannelCheck
import dev.schlaubi.mikmusic.core.MusicModule
import dev.schlaubi.mikmusic.core.musicControlContexts
import dev.schlaubi.mikmusic.player.queue.QueueArguments
import dev.schlaubi.mikmusic.player.queue.queueTracks

Expand All @@ -17,6 +18,8 @@ class PlayArguments : QueueArguments() {

suspend fun MusicModule.playCommand() {
ephemeralSlashCommand(::PlayArguments) {
musicControlContexts()

name = "play"
description = "commands.play.description"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@ import com.kotlindiscord.kord.extensions.extensions.ephemeralSlashCommand
import dev.schlaubi.mikbot.plugin.api.util.forList
import dev.schlaubi.mikmusic.checks.anyMusicPlaying
import dev.schlaubi.mikmusic.core.MusicModule
import dev.schlaubi.mikmusic.core.musicControlContexts
import dev.schlaubi.mikmusic.player.QueuedTrack
import dev.schlaubi.mikmusic.player.addAutoPlaySongs
import dev.schlaubi.mikmusic.util.format

suspend fun MusicModule.queueCommand() = ephemeralSlashCommand {
name = "queue"
description = "commands.queue.description"
musicControlContexts()

check {
anyMusicPlaying(this@queueCommand)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import com.kotlindiscord.kord.extensions.commands.converters.impl.optionalInt
import dev.kord.common.entity.Snowflake
import dev.schlaubi.mikbot.plugin.api.util.safeGuild
import dev.schlaubi.mikmusic.core.MusicModule
import dev.schlaubi.mikmusic.core.musicControlContexts
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.toList
Expand All @@ -35,6 +36,7 @@ class RemoveRangeSongArguments : Arguments() {
suspend fun MusicModule.removeCommand() = ephemeralControlSlashCommand {
name = "remove"
description = "commands.remove.description"
musicControlContexts()

suspend fun <A : Arguments> EphemeralSlashCommand<A, *>.doRemove(
remove: suspend EphemeralSlashCommandContext<A, *>.() -> Int
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package dev.schlaubi.mikmusic.commands

import dev.schlaubi.mikmusic.core.MusicModule
import dev.schlaubi.mikmusic.core.musicControlContexts

suspend fun MusicModule.replayCommand() = ephemeralControlSlashCommand {
name = "replay"
description = "commands.replay.description"
musicControlContexts()

action {
player.seekTo(0)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package dev.schlaubi.mikmusic.commands

import com.kotlindiscord.kord.extensions.commands.application.slash.EphemeralSlashCommandContext
import dev.schlaubi.mikmusic.core.MusicModule
import dev.schlaubi.mikmusic.core.musicControlContexts
import dev.schlaubi.mikmusic.player.MusicPlayer
import kotlin.reflect.KMutableProperty1

Expand All @@ -27,6 +28,7 @@ suspend fun MusicModule.schedulerCommands() {
ephemeralControlSlashCommand {
name = "repeat"
description = "Toggles repeat mode"
musicControlContexts()

action {
schedulerOption(
Expand All @@ -41,6 +43,7 @@ suspend fun MusicModule.schedulerCommands() {
ephemeralControlSlashCommand {
name = "loop-queue"
description = "Toggles loop queueTracks mode (Looping the queueTracks over and over)"
musicControlContexts()

action {
schedulerOption(
Expand All @@ -55,6 +58,7 @@ suspend fun MusicModule.schedulerCommands() {
ephemeralControlSlashCommand {
name = "shuffle"
description = "Toggles shuffle mode"
musicControlContexts()

action {
schedulerOption(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import com.kotlindiscord.kord.extensions.commands.converters.impl.string
import com.kotlindiscord.kord.extensions.extensions.ephemeralSlashCommand
import dev.schlaubi.mikmusic.checks.anyMusicPlaying
import dev.schlaubi.mikmusic.core.MusicModule
import dev.schlaubi.mikmusic.core.musicControlContexts
import kotlin.time.Duration.Companion.minutes
import kotlin.time.Duration.Companion.seconds

Expand All @@ -27,6 +28,7 @@ class SeekArguments : Arguments() {
suspend fun MusicModule.seekCommand() = ephemeralSlashCommand(::SeekArguments) {
name = "seek"
description = "commands.seek.description"
musicControlContexts()

check {
anyMusicPlaying(this@seekCommand)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package dev.schlaubi.mikmusic.commands
import com.kotlindiscord.kord.extensions.commands.Arguments
import com.kotlindiscord.kord.extensions.commands.converters.impl.defaultingInt
import dev.schlaubi.mikmusic.core.MusicModule
import dev.schlaubi.mikmusic.core.musicControlContexts

class SkipArguments : Arguments() {
val to by defaultingInt {
Expand All @@ -15,6 +16,7 @@ class SkipArguments : Arguments() {
suspend fun MusicModule.skipCommand() = ephemeralControlSlashCommand(::SkipArguments) {
name = "skip"
description = "commands.skip.description"
musicControlContexts()

action {
if (!musicPlayer.canSkip) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package dev.schlaubi.mikmusic.commands

import dev.schlaubi.mikmusic.core.MusicModule
import dev.schlaubi.mikmusic.core.musicControlContexts

suspend fun MusicModule.stopCommand() =
ephemeralControlSlashCommand {
name = "die"
description = "commands.stop.description"
musicControlContexts()

action {
musicPlayer.stop()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package dev.schlaubi.mikmusic.commands
import com.kotlindiscord.kord.extensions.commands.Arguments
import com.kotlindiscord.kord.extensions.commands.converters.impl.optionalInt
import dev.schlaubi.mikmusic.core.MusicModule
import dev.schlaubi.mikmusic.core.musicControlContexts

class VolumeArguments : Arguments() {
val volume by optionalInt {
Expand All @@ -16,6 +17,7 @@ class VolumeArguments : Arguments() {
suspend fun MusicModule.volumeCommand() = ephemeralControlSlashCommand(::VolumeArguments) {
name = "volume"
description = "commands.volume.description"
musicControlContexts()

action {
val volume = arguments.volume
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.kotlindiscord.kord.extensions.DiscordRelayedException
import com.kotlindiscord.kord.extensions.commands.Arguments
import com.kotlindiscord.kord.extensions.commands.CommandContext
import com.kotlindiscord.kord.extensions.commands.application.slash.EphemeralSlashCommandContext
import com.kotlindiscord.kord.extensions.commands.application.slash.SlashCommand
import com.kotlindiscord.kord.extensions.commands.converters.impl.string
import dev.kord.core.behavior.UserBehavior
import dev.kord.core.behavior.interaction.suggestString
Expand All @@ -12,6 +13,7 @@ import dev.schlaubi.mikbot.plugin.api.PluginContext
import dev.schlaubi.mikbot.plugin.api.module.SubCommandModule
import dev.schlaubi.mikbot.plugin.api.util.extension
import dev.schlaubi.mikmusic.core.MusicModule
import dev.schlaubi.mikmusic.core.musicControlContexts
import dev.schlaubi.mikmusic.player.MusicPlayer
import dev.schlaubi.mikmusic.playlist.Playlist
import dev.schlaubi.mikmusic.playlist.PlaylistDatabase
Expand Down Expand Up @@ -87,6 +89,10 @@ class PlaylistModule(context: PluginContext) : SubCommandModule(context) {
val CommandContext.node: Node
get() = with(musicModule) { node }

override fun SlashCommand<*, *, *>.commandSettings() {
musicControlContexts()
}

override suspend fun overrideSetup() {
loadCommand()
saveCommand()
Expand Down
3 changes: 2 additions & 1 deletion runtime/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ dependencies {
// otherwise we would add entire Gradle in here
isTransitive = false
}
implementation("dev.kord:kord-common-jvm:feature-user-apps-20240825.234248-3")
implementation("dev.kord:kord-common-jvm:feature-user-apps-20240917.091252-4")
implementation("dev.kord:kord-rest-jvm:feature-user-apps-20240917.091252-4")

// Util
implementation(libs.kotlinx.serialization.json)
Expand Down

0 comments on commit 686a860

Please sign in to comment.