diff --git a/src/main/kotlin/nl/voidcorp/dbot/UnityBot.kt b/src/main/kotlin/nl/voidcorp/dbot/UnityBot.kt index 5d06e7b..0874b8f 100644 --- a/src/main/kotlin/nl/voidcorp/dbot/UnityBot.kt +++ b/src/main/kotlin/nl/voidcorp/dbot/UnityBot.kt @@ -119,6 +119,7 @@ fun main(args: Array) { .appendDescription(cmd.help) .setColor(event.selfMember.color).setFooter("Requested by ${event.member.effectiveName}", event.author.effectiveAvatarUrl).setTimestamp(LocalDateTime.now()) if (cmd.aliases.isNotEmpty()) eb.addField("Aliases", cmd.aliases.joinToString { "`$it`" }, false) + eb.addField("Usage", "`!${cmd.howTo.emptyOr(cmd.name)}`", false) } event.args == "help" -> { diff --git a/src/main/kotlin/nl/voidcorp/dbot/Util.kt b/src/main/kotlin/nl/voidcorp/dbot/Util.kt index ce06af0..7b62419 100644 --- a/src/main/kotlin/nl/voidcorp/dbot/Util.kt +++ b/src/main/kotlin/nl/voidcorp/dbot/Util.kt @@ -16,12 +16,14 @@ fun List.random(): E = this[random.nextInt(this.size)] fun List.catMap(): Map> { val m = mutableMapOf>() for (c in this) { - val cname = if (c.category==null) "Unknown" else c.category.name + val cname = if (c.category == null) "Unknown" else c.category.name if (!m.containsKey(cname)) { m[cname] = mutableListOf() } - m[cname]!!+=c + m[cname]!! += c } return m -} \ No newline at end of file +} + +fun String.emptyOr(other: String): String = if (this.isEmpty()) other else this \ No newline at end of file diff --git a/src/main/kotlin/nl/voidcorp/dbot/commands/Music.kt b/src/main/kotlin/nl/voidcorp/dbot/commands/Music.kt index eb640e7..97a70c2 100644 --- a/src/main/kotlin/nl/voidcorp/dbot/commands/Music.kt +++ b/src/main/kotlin/nl/voidcorp/dbot/commands/Music.kt @@ -22,7 +22,7 @@ fun initMusic() { AudioSourceManagers.registerRemoteSources(playerManager) - val queueCommand = UnityMusicCommand("queue", aliases = *arrayOf("q"), help = "Use this command to queue a song, if you don't add a link it will search on youtube with the specified arguments\n\nExecute with no arguments to view the current queue!") { event, scheduler -> + val queueCommand = UnityMusicCommand("queue", aliases = *arrayOf("q"), help = "Use this command to queue a song, if you don't add a link it will search on youtube with the specified arguments\n\nExecute with no arguments to view the current queue!", howTo = "q [link]") { event, scheduler -> if (event.args.isEmpty()) { if (!guildMusicMap.containsKey(event.guild.idLong) || (guildMusicMap[event.guild.idLong]!!.player.playingTrack == null)) @@ -58,7 +58,7 @@ fun initMusic() { }) } - val ytCommand = UnityMusicCommand("youtube", aliases = *arrayOf("yt"), help = "Search YouTube for a song!") { event, scheduler -> + val ytCommand = UnityMusicCommand("youtube", aliases = *arrayOf("yt"), help = "Search YouTube for a song!", howTo = "youtube ") { event, scheduler -> if (event.args.isEmpty()) { event.reply("Please supply a song name or URL!") return@UnityMusicCommand @@ -87,7 +87,7 @@ fun initMusic() { }) } - val soundcloudCommand = UnityMusicCommand("soundcloud", help = "Play a song via SoundCloud!", aliases = *arrayOf("sc")) { event, scheduler -> + val soundcloudCommand = UnityMusicCommand("soundcloud", help = "Play a song via SoundCloud!", aliases = *arrayOf("sc"), howTo = "sc ") { event, scheduler -> if (event.args.isEmpty()) { event.reply("Please supply a song name or URL!") return@UnityMusicCommand @@ -117,7 +117,7 @@ fun initMusic() { }) } - val playCommand = UnityMusicCommand("play", "Force this song to be the next!", aliases = *arrayOf("p")) { event, scheduler -> + val playCommand = UnityMusicCommand("play", "Force this song to be the next!", aliases = *arrayOf("p"), howTo = "play ") { event, scheduler -> if (event.args.isEmpty()) { event.reply("Please supply a song name or URL!") return@UnityMusicCommand diff --git a/src/main/kotlin/nl/voidcorp/dbot/commands/UnityCommand.kt b/src/main/kotlin/nl/voidcorp/dbot/commands/UnityCommand.kt index 45f9d2f..f08d790 100644 --- a/src/main/kotlin/nl/voidcorp/dbot/commands/UnityCommand.kt +++ b/src/main/kotlin/nl/voidcorp/dbot/commands/UnityCommand.kt @@ -44,7 +44,8 @@ val generalCategory = Command.Category("General commands") { open class UnityCommand(name: String, help: String = "", category: Category = generalCategory, - arguments: String = "", vararg aliases: String = arrayOf(), val exec: (event: CommandEvent) -> Unit) : Command() { + arguments: String = "", vararg aliases: String = arrayOf(), val howTo: String = "", + val exec: (event: CommandEvent) -> Unit) : Command() { init { super.name = name super.help = help @@ -58,7 +59,9 @@ open class UnityCommand(name: String, help: String = "", class UnityMusicCommand(name: String, help: String = "", category: Category = musicCategory, - arguments: String = "", vararg aliases: String = arrayOf(name.first().toString()), val mExec: (event: CommandEvent, scheduler: TrackScheduler) -> Unit) : UnityCommand(name, help, category, arguments, *aliases, exec = {}) { + 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) }