fix: fixed errors caused by upgrading lavalink

This commit is contained in:
moonleay 2023-12-13 16:41:52 +01:00
parent e1fdc954ce
commit 6c83ea6b4c
Signed by: moonleay
GPG key ID: 82667543CCD715FB
8 changed files with 70 additions and 60 deletions

View file

@ -58,8 +58,7 @@ class QueueButton : net.moonleay.botendo.buttons.Button("btn.music.queue") {
return return
} }
val track = player.playingTrack if (player.playingTrack == null) {
if (track == null) {
response.respond { response.respond {
this.embed { this.embed {
this.color = Color(0xE0311A) this.color = Color(0xE0311A)
@ -72,10 +71,11 @@ class QueueButton : net.moonleay.botendo.buttons.Button("btn.music.queue") {
} }
return return
} }
val track = player.playingTrack!!.info
val gts = MusicManager.getGuildTrackScheduler(guild.asGuild(), player) val gts = MusicManager.getGuildTrackScheduler(guild.asGuild(), player)
val q = gts.getQueue() val q = gts.getQueue()
var desc = var desc =
"""${"**" + track.title + " - " + TimeUtil.getTimeFormatedShortend(track.length.inWholeMilliseconds)} (${track.author})**""" + "\n" """${"**" + track.title + " - " + TimeUtil.getTimeFormatedShortend(track.length)} (${track.author})**""" + "\n"
for ((i, tr) in q.withIndex()) { for ((i, tr) in q.withIndex()) {
if (i >= 14) if (i >= 14)
continue continue

View file

@ -83,8 +83,7 @@ class SkipButton : net.moonleay.botendo.buttons.Button("btn.music.skip") {
} }
return return
} }
var track = player.playingTrack if (player.playingTrack == null) {
if (track == null) {
response.respond { response.respond {
this.embed { this.embed {
this.color = Color(0xE0311A) this.color = Color(0xE0311A)
@ -97,9 +96,10 @@ class SkipButton : net.moonleay.botendo.buttons.Button("btn.music.skip") {
} }
return return
} }
var track = player.playingTrack!!.info
val gts = MusicManager.getGuildTrackScheduler(guild.asGuild(), player) val gts = MusicManager.getGuildTrackScheduler(guild.asGuild(), player)
if (!gts.isEmpty()) { if (!gts.isEmpty()) {
track = gts.getHead().toTrack() track = gts.getHead().info
gts.playNext(link) gts.playNext(link)
response.respond { response.respond {
this.embed { this.embed {
@ -107,7 +107,7 @@ class SkipButton : net.moonleay.botendo.buttons.Button("btn.music.skip") {
this.title = "Skipped song; now playing" this.title = "Skipped song; now playing"
this.description = "**${track.title}**\n*Now Playing*\nby ${track.author} :: ${ this.description = "**${track.title}**\n*Now Playing*\nby ${track.author} :: ${
TimeUtil.getTimeFormatedRaw( TimeUtil.getTimeFormatedRaw(
track.length.inWholeMilliseconds track.length
) )
}\n" + }\n" +
">>>${track.uri}" ">>>${track.uri}"

View file

@ -75,21 +75,23 @@ class NowPlayingExtension : Extension() {
this.embed { this.embed {
this.color = Color(0x52E01A) this.color = Color(0x52E01A)
this.title = "Currently playing" this.title = "Currently playing"
this.description = "**${track.title}**\n*Now Playing*\nby ${track.author} ; ${ this.description = "**${track.info.title}**\n*Now Playing*\nby ${track.info.author} ; ${
TimeUtil.getTimeFormatedRaw( TimeUtil.getTimeFormatedRaw(
player.position player.position
) )
}: ${ }: ${
TimeUtil.getTimeFormatedRaw( TimeUtil.getTimeFormatedRaw(
track.length.inWholeMilliseconds track.info.length
) )
}\n" + }\n" +
">>>${track.uri}" ">>>${track.info.uri}"
this.footer { this.footer {
this.text = MessageUtil.getFooter(u) this.text = MessageUtil.getFooter(u)
} }
this.thumbnail { if(track.info.uri == null){
this.url = "https://img.youtube.com/vi/" + UrlUtil.getYtThumbnailUrl(track.uri.toString()) + "/maxresdefault.jpg" this.thumbnail {
this.url = "https://img.youtube.com/vi/" + UrlUtil.getYtThumbnailUrl(track.info.uri!!) + "/maxresdefault.jpg"
}
} }
} }

View file

@ -23,6 +23,7 @@ import com.kotlindiscord.kord.extensions.extensions.Extension
import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
import dev.kord.common.Color import dev.kord.common.Color
import dev.kord.rest.builder.component.ActionRowBuilder import dev.kord.rest.builder.component.ActionRowBuilder
import dev.kord.rest.builder.message.EmbedBuilder.Limits.title
import dev.kord.rest.builder.message.actionRow import dev.kord.rest.builder.message.actionRow
import dev.kord.rest.builder.message.create.actionRow import dev.kord.rest.builder.message.create.actionRow
import dev.kord.rest.builder.message.embed import dev.kord.rest.builder.message.embed
@ -74,7 +75,7 @@ class QueueExtension : Extension() {
val gts = MusicManager.getGuildTrackScheduler(this.guild!!.asGuild(), player) val gts = MusicManager.getGuildTrackScheduler(this.guild!!.asGuild(), player)
val q = gts.getQueue() val q = gts.getQueue()
var desc = var desc =
"""${"**" + track.title + " - " + TimeUtil.getTimeFormatedShortend(track.length.inWholeMilliseconds)} (${track.author})**""" + "\n" """${"**" + track.info.title + " - " + TimeUtil.getTimeFormatedShortend(track.info.length)} (${track.info.author})**""" + "\n"
for ((i, tr) in q.withIndex()) { for ((i, tr) in q.withIndex()) {
if (i >= 14) if (i >= 14)
continue continue

View file

@ -82,8 +82,7 @@ class SeekExtension : Extension() {
} }
return@action return@action
} }
var track = player.playingTrack if (player.playingTrack == null) {
if (track == null) {
this.respond { this.respond {
this.embed { this.embed {
this.color = Color(0xE0311A) this.color = Color(0xE0311A)
@ -96,9 +95,10 @@ class SeekExtension : Extension() {
} }
return@action return@action
} }
var track = player.playingTrack!!.info
val gts = MusicManager.getGuildTrackScheduler(this.guild!!.asGuild(), player) val gts = MusicManager.getGuildTrackScheduler(this.guild!!.asGuild(), player)
val targetPos = TimeUtil.getTimeUnformated(this.arguments.position) val targetPos = TimeUtil.getTimeUnformated(this.arguments.position)
if (player.playingTrack!!.length.inWholeMilliseconds > targetPos && targetPos >= 0) { if (player.playingTrack!!.info.length > targetPos && targetPos >= 0) {
player.seekTo(targetPos) player.seekTo(targetPos)
} else { } else {
this.respond { this.respond {
@ -125,7 +125,7 @@ class SeekExtension : Extension() {
) )
}: ${ }: ${
TimeUtil.getTimeFormatedRaw( TimeUtil.getTimeFormatedRaw(
track.length.inWholeMilliseconds track.length
) )
}\n" + }\n" +
">>>${track.uri}" ">>>${track.uri}"

View file

@ -82,7 +82,7 @@ class SkipExtension : Extension() {
} }
return@action return@action
} }
var track = player.playingTrack var track = player.playingTrack!!.info
if (track == null) { if (track == null) {
this.respond { this.respond {
this.embed { this.embed {
@ -98,7 +98,7 @@ class SkipExtension : Extension() {
} }
val gts = MusicManager.getGuildTrackScheduler(this.guild!!.asGuild(), player) val gts = MusicManager.getGuildTrackScheduler(this.guild!!.asGuild(), player)
if (!gts.isEmpty()) { if (!gts.isEmpty()) {
track = gts.getHead().toTrack() track = gts.getHead().info
gts.playNext(link) gts.playNext(link)
} else { } else {
player.stopTrack() player.stopTrack()
@ -111,7 +111,7 @@ class SkipExtension : Extension() {
this.title = "Skipped song; now playing" this.title = "Skipped song; now playing"
this.description = "**${track.title}**\n*Now Playing*\nby ${track.author} ;: ${ this.description = "**${track.title}**\n*Now Playing*\nby ${track.author} ;: ${
TimeUtil.getTimeFormatedRaw( TimeUtil.getTimeFormatedRaw(
track.length.inWholeMilliseconds track.length
) )
}\n" + }\n" +
">>>${track.uri}" ">>>${track.uri}"

View file

@ -20,6 +20,7 @@
package net.moonleay.botendo.extensions.music.components package net.moonleay.botendo.extensions.music.components
import dev.arbjerg.lavalink.protocol.v4.LoadResult import dev.arbjerg.lavalink.protocol.v4.LoadResult
import dev.arbjerg.lavalink.protocol.v4.Track
import dev.schlaubi.lavakord.audio.* import dev.schlaubi.lavakord.audio.*
import dev.schlaubi.lavakord.audio.player.Player import dev.schlaubi.lavakord.audio.player.Player
import net.moonleay.botendo.util.Logger import net.moonleay.botendo.util.Logger
@ -28,12 +29,12 @@ import java.util.concurrent.LinkedBlockingQueue
class GuildTrackScheduler(val pl: Player) { class GuildTrackScheduler(val pl: Player) {
private var queue: BlockingQueue<LoadResult> = LinkedBlockingQueue() private var queue: BlockingQueue<Track> = LinkedBlockingQueue()
var repeating = false var repeating = false
private var hasRegisteredEvents = false private var hasRegisteredEvents = false
///Add a track to queue and start playing, if there is no song currently playing ///Add a track to queue and start playing, if there is no song currently playing
suspend fun queue(track: LoadResult, type: MusicManager.AddType) { suspend fun queue(track: Track, type: MusicManager.AddType) {
if (this.pl.playingTrack == null) { if (this.pl.playingTrack == null) {
play(track) play(track)
return return
@ -44,7 +45,7 @@ class GuildTrackScheduler(val pl: Player) {
} }
MusicManager.AddType.UPSERT -> { MusicManager.AddType.UPSERT -> {
val nq = LinkedBlockingQueue<LoadResult>() val nq = LinkedBlockingQueue<Track>()
nq.offer(track) nq.offer(track)
for (t in queue.toList()) { for (t in queue.toList()) {
nq.offer(t) nq.offer(t)
@ -56,7 +57,7 @@ class GuildTrackScheduler(val pl: Player) {
suspend fun playNext(link: Link) { suspend fun playNext(link: Link) {
if (!queue.isEmpty()) if (!queue.isEmpty())
this.pl.playTrack(track = queue.poll().data) this.pl.playTrack(track = queue.poll())
else { else {
this.pl.stopTrack() this.pl.stopTrack()
link.destroy() link.destroy()
@ -64,8 +65,8 @@ class GuildTrackScheduler(val pl: Player) {
} }
} }
private suspend fun play(trd: LoadResult) { private suspend fun play(track: Track) {
this.pl.playTrack(track = trd.data) this.pl.playTrack(track)
} }
fun addEvents() { fun addEvents() {
@ -116,11 +117,11 @@ class GuildTrackScheduler(val pl: Player) {
queue.clear() queue.clear()
} }
fun getQueue(): List<LoadResult> { fun getQueue(): List<Track> {
return queue.toList() return queue.toList()
} }
fun getHead(): LoadResult { fun getHead(): Track {
return queue.first() return queue.first()
} }

View file

@ -21,7 +21,7 @@ package net.moonleay.botendo.extensions.music.components
import com.kotlindiscord.kord.extensions.commands.application.slash.PublicSlashCommandContext import com.kotlindiscord.kord.extensions.commands.application.slash.PublicSlashCommandContext
import com.kotlindiscord.kord.extensions.components.forms.ModalForm import com.kotlindiscord.kord.extensions.components.forms.ModalForm
import dev.arbjerg.lavalink.protocol.v4.ResultStatus import dev.arbjerg.lavalink.protocol.v4.LoadResult
import dev.kord.common.Color import dev.kord.common.Color
import dev.kord.common.entity.Snowflake import dev.kord.common.entity.Snowflake
import dev.kord.core.entity.Guild import dev.kord.core.entity.Guild
@ -67,33 +67,32 @@ object MusicManager {
silent: Boolean silent: Boolean
) { ) {
val player = link.player val player = link.player
val item = link.loadItem(search)
val gts = getGuildTrackScheduler(ctx.guild!!.asGuild(), player) val gts = getGuildTrackScheduler(ctx.guild!!.asGuild(), player)
val u = ctx.user.asUser() val u = ctx.user.asUser()
gts.addEvents() gts.addEvents()
when (val itm = link.loadItem(search)) {
when (item.loadType) { is LoadResult.TrackLoaded -> {
ResultStatus.TRACK -> { gts.queue(itm.data, type)
gts.queue(item, type)
if (!silent) if (!silent)
ctx.respond { ctx.respond {
this.embed { this.embed {
this.color = Color(0x52E01A) this.color = Color(0x52E01A)
this.title = "${type.s} track from link" this.title = "${type.s} track from link"
this.description = "**${item.track.info.title}**\n*Queue*\nby ${item.track.info.author} ;: ${ this.description = "**${itm.data.info.title}**\n*Queue*\nby ${itm.data.info.author} ;: ${
TimeUtil.getTimeFormatedRaw( TimeUtil.getTimeFormatedRaw(
item.track.info.length itm.data.info.length
) )
}\n" + }\n" +
">>>${item.track.info.uri}" ">>>${itm.data.info.uri}"
this.footer { this.footer {
this.text = MessageUtil.getFooter(u) this.text = MessageUtil.getFooter(u)
} }
this.thumbnail { if (itm.data.info.uri != null) {
this.url = this.thumbnail {
"https://img.youtube.com/vi/" + UrlUtil.getYtThumbnailUrl(item.track.info.uri) + "/maxresdefault.jpg" this.url =
"https://img.youtube.com/vi/" + UrlUtil.getYtThumbnailUrl(itm.data.info.uri!!) + "/maxresdefault.jpg"
}
} }
} }
@ -107,8 +106,9 @@ object MusicManager {
}) })
} }
} }
ResultStatus.PLAYLIST -> { is LoadResult.PlaylistLoaded -> {
val l = item.tracks.reversed() player.playTrack(track = itm.data.tracks.first())
val l= itm.data.tracks.toList().reversed()
for (partialTrack in l) { for (partialTrack in l) {
gts.queue(partialTrack, type) gts.queue(partialTrack, type)
} }
@ -117,18 +117,20 @@ object MusicManager {
this.embed { this.embed {
this.color = Color(0x52E01A) this.color = Color(0x52E01A)
this.title = "${type.s} playlist from link" this.title = "${type.s} playlist from link"
this.description = "**${item.tracks.first().info.title}**\n*${item.playlistInfo.name}*\nby ${item.tracks.first().info.author} ;: ${ this.description = "**${itm.data.tracks.first().info.title}**\n*${itm.data.info.name}*\nby ${itm.data.tracks.first().info.author} ;: ${
TimeUtil.getTimeFormatedRaw( TimeUtil.getTimeFormatedRaw(
item.tracks.first().info.length itm.data.tracks.first().info.length
) )
}\n" + }\n" +
">>>${item.tracks.first().info.uri}" ">>>${itm.data.tracks.first().info.uri}"
this.footer { this.footer {
this.text = MessageUtil.getFooter(u) this.text = MessageUtil.getFooter(u)
} }
this.thumbnail { if (itm.data.tracks.first().info.uri != null) {
this.url = this.thumbnail {
"https://img.youtube.com/vi/" + UrlUtil.getYtThumbnailUrl(item.tracks.first().info.uri) + "/maxresdefault.jpg" this.url =
"https://img.youtube.com/vi/" + UrlUtil.getYtThumbnailUrl(itm.data.tracks.first().info.uri!!) + "/maxresdefault.jpg"
}
} }
} }
@ -141,26 +143,29 @@ object MusicManager {
) )
} }
} }
} }
ResultStatus.SEARCH -> { is LoadResult.SearchResult -> {
gts.queue(item.tracks.first(), type) gts.queue(itm.data.tracks.first(), type)
if (!silent) if (!silent)
ctx.respond { ctx.respond {
this.embed { this.embed {
this.color = Color(0x52E01A) this.color = Color(0x52E01A)
this.title = "${type.s} track from query" this.title = "${type.s} track from query"
this.description = "**${item.tracks.first().info.title}**\n*Queue*\nby ${item.tracks.first().info.author} ;: ${ this.description = "**${itm.data.tracks.first().info.title}**\n*Queue*\nby ${itm.data.tracks.first().info.author} ;: ${
TimeUtil.getTimeFormatedRaw( TimeUtil.getTimeFormatedRaw(
item.tracks.first().info.length itm.data.tracks.first().info.length
) )
}\n" + }\n" +
">>>${item.tracks.first().info.uri}" ">>>${itm.data.tracks.first().info.uri}"
this.footer { this.footer {
this.text = MessageUtil.getFooter(u) this.text = MessageUtil.getFooter(u)
} }
this.thumbnail { if (itm.data.tracks.first().info.uri != null) {
this.url = this.thumbnail {
"https://img.youtube.com/vi/" + UrlUtil.getYtThumbnailUrl(item.tracks.first().info.uri) + "/maxresdefault.jpg" this.url =
"https://img.youtube.com/vi/" + UrlUtil.getYtThumbnailUrl(itm.data.tracks.first().info.uri!!) + "/maxresdefault.jpg"
}
} }
} }
@ -173,8 +178,9 @@ object MusicManager {
) )
} }
} }
} }
ResultStatus.NONE -> { is LoadResult.NoMatches -> {
if (!silent) if (!silent)
ctx.respond { ctx.respond {
this.embed { this.embed {
@ -187,7 +193,7 @@ object MusicManager {
} }
} }
} }
ResultStatus.ERROR -> { is LoadResult.LoadFailed -> {
if (!silent) if (!silent)
ctx.respond { ctx.respond {
this.embed { this.embed {
@ -202,9 +208,9 @@ object MusicManager {
} }
} }
} }
enum class AddType(val s: String) { enum class AddType(val s: String) {
QUEUE("Added"), QUEUE("Added"),
UPSERT("Upserted") UPSERT("Upserted")
} }
} }