OttoBot/src/main/kotlin/nl/voidcorp/dbot/commands/UnityCommand.kt

44 lines
1.8 KiB
Kotlin

package nl.voidcorp.dbot.commands
import com.jagrosh.jdautilities.command.Command
import com.jagrosh.jdautilities.command.CommandEvent
import nl.voidcorp.dbot.music.TrackScheduler
import nl.voidcorp.dbot.music.guildMusicMap
import nl.voidcorp.dbot.playerManager
open class UnityCommand(name: String, help: String = "",
category: UnityCategory = GeneralCategory,
arguments: String = "", vararg aliases: String = arrayOf(), val howTo: String = "",
val exec: (event: CommandEvent) -> Unit) : Command() {
init {
super.name = name
super.help = help
super.category = category
super.arguments = arguments
super.aliases = aliases
}
override fun execute(event: CommandEvent) = exec(event)
}
class UnityMusicCommand(name: String, help: String = "",
category: UnityCategory = MusicCategory,
arguments: String = "", vararg aliases: String = arrayOf(name.first().toString()),
howTo: String = "",
val mExec: (event: CommandEvent, scheduler: TrackScheduler) -> Unit) : UnityCommand(name, help, category, arguments, *aliases, howTo = howTo, exec = {}) {
override fun execute(event: CommandEvent) {
val scheduler = if (guildMusicMap.containsKey(event.guild.idLong)) guildMusicMap[event.guild.idLong]!! else {
val channel = event.guild.voiceChannels.firstOrNull { it.members.contains(event.member) }
if (channel == null) {
event.reply("Join a voice Channel please!")
return
}
val s = TrackScheduler(playerManager.createPlayer(), event.guild, channel)
guildMusicMap[event.guild.idLong] = s
s
}
mExec(event, scheduler)
}
}