Skip to content

Commit 9d32879

Browse files
authored
Merge jocull's jda5 fork
* Rough migration to JDA:v5.0.0-beta.6 Not sure I did everything exactly right. A migration guide is covered here, but I did most of this in a hurry. https://jda.wiki/introduction/migration-v4-v5/ * Bump to JDA 5 beta 13 * Remove comment that doesn't apply anymore * Bump to dev.arbjerg:lavaplayer:2.0.1 * Bump to JDA 5.0.0-beta.20 * Bump to lavaplayer:2.1.0 * Use a commit version right after 2.1.0 (727959e9f6) See lavalink-devs/lavaplayer#70 And https://jitpack.io/#lavalink-devs/lavaplayer/727959e9f6 * Bump lavaplayer to 2.1.1 and stop using a commit hash See - lavalink-devs/lavaplayer#70 - https://github.com/lavalink-devs/lavaplayer/releases/tag/2.1.1 * Use snapshot for com.github.Nansess.lavaplayer-test:lavaplayer:19e815bd83 This fixes upstream issue with lavaplayer for error: "Video returned by YouTube isn't what was requested" See lavalink-devs/lavaplayer#93 * Changes to use new YoutubeAudioSourceManager * Bump JDA to latest, beta 5.23 * Fix remaining quirks with YoutubeAudioSourceManager to exclude old version * Clean up imports * Update versions and clean up audio source managers * Use a version of JDK 11 that isn't deprecated * Use the version expected in the docker-compose for ease of use * Use the current Dockerfile as the image * Make the container name predictable * Manually add jars for youtube-plugin and upgrade version From https://github.com/lavalink-devs/youtube-source/releases/tag/1.4.0 The jitpack is currently failing at https://jitpack.io/#lavalink-devs/lavaplayer-youtube-source * Bump youtube-plugin to 1.5.2 From https://github.com/lavalink-devs/youtube-source/releases/tag/1.5.2 * Swap to youtube-v2 1.8.3 source, drop manual jars * Set the docker-compose to use the image by default
2 parents 87307c8 + ffe3531 commit 9d32879

11 files changed

Lines changed: 71 additions & 55 deletions

File tree

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM openjdk:11
1+
FROM eclipse-temurin:11-jre-jammy
22
RUN groupadd -r -g 999 ukulele && useradd -rd /opt/ukulele -g ukulele -u 999 -ms /bin/bash ukulele
33
COPY --chown=ukulele:ukulele build/libs/ukulele.jar /opt/ukulele/ukulele.jar
44
USER ukulele

build.gradle.kts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,18 @@ java.sourceCompatibility = JavaVersion.VERSION_11
1414

1515
repositories {
1616
mavenCentral()
17+
flatDir {
18+
dirs("lib")
19+
}
1720
maven { url = uri("https://m2.dv8tion.net/releases") }
1821
maven { url = uri("https://jitpack.io") }
22+
maven { url = uri("https://maven.lavalink.dev/releases") }
1923
}
2024

2125
dependencies {
22-
// The 4.x version of JDA specifically needs a UDP fix from this commit:
23-
// https://github.com/DV8FromTheWorld/JDA/commit/39ba0c2682ad99dbec88240cb8ea9d1ff7162ae9
24-
// The snapshot version published in jitpack has this, so it is utilized for now.
25-
// Eventually, a full upgrade to JDA 5.x will be necessary.
26-
implementation("com.github.DV8FromTheWorld:JDA:legacy~v4-SNAPSHOT")
27-
implementation("dev.arbjerg:lavaplayer:1.5.0")
26+
implementation("com.github.DV8FromTheWorld:JDA:v5.0.0-beta.23")
27+
implementation("dev.arbjerg:lavaplayer:2.2.2")
28+
implementation("dev.lavalink.youtube:v2:1.8.3")
2829
implementation("org.springframework.boot:spring-boot-starter-data-r2dbc")
2930

3031
runtimeOnly("com.h2database:h2")

docker-compose.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ version: "3.7"
22

33
services:
44
ukulele:
5-
image: ghcr.io/freyacodes/ukulele:master
6-
restart: always
5+
container_name: ukulele
6+
image: ghcr.io/jocull/ukulele:jda-5
7+
restart: unless-stopped
78
environment:
89
CONFIG_DATABASE: ./db/database # Database location overwrite so mounting works
910
volumes:
Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,25 @@
11
package dev.arbjerg.ukulele.audio
22

3+
import com.sedmelluq.discord.lavaplayer.container.MediaContainerRegistry
34
import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager
45
import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager
56
import com.sedmelluq.discord.lavaplayer.source.AudioSourceManagers
7+
import dev.lavalink.youtube.YoutubeAudioSourceManager
68
import org.springframework.context.annotation.Bean
79
import org.springframework.context.annotation.Configuration
810

911
@Configuration
1012
class LavaplayerConfig {
11-
1213
@Bean
1314
fun playerManager(): AudioPlayerManager {
1415
val apm = DefaultAudioPlayerManager()
15-
AudioSourceManagers.registerRemoteSources(apm)
16+
17+
// Add the new YoutubeAudioSourceManager
18+
apm.registerSourceManager(YoutubeAudioSourceManager(true))
19+
20+
// Then add the rest, while excluding the legacy `YoutubeAudioSourceManager`
21+
AudioSourceManagers.registerRemoteSources(apm, MediaContainerRegistry.DEFAULT_REGISTRY, com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager::class.java)
22+
1623
return apm
1724
}
18-
19-
}
25+
}

src/main/kotlin/dev/arbjerg/ukulele/audio/Player.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import dev.arbjerg.ukulele.config.BotProps
1212
import dev.arbjerg.ukulele.data.GuildProperties
1313
import dev.arbjerg.ukulele.data.GuildPropertiesService
1414
import net.dv8tion.jda.api.audio.AudioSendHandler
15-
import net.dv8tion.jda.api.entities.TextChannel
15+
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel
1616
import org.slf4j.Logger
1717
import org.slf4j.LoggerFactory
1818
import org.springframework.stereotype.Component
@@ -125,7 +125,7 @@ class Player(val beans: Beans, guildProperties: GuildProperties) : AudioEventAda
125125

126126
override fun onTrackStart(player: AudioPlayer, track: AudioTrack) {
127127
if (beans.botProps.announceTracks) {
128-
lastChannel?.sendMessage(beans.nowPlayingCommand.buildEmbed(track))?.queue()
128+
lastChannel?.sendMessageEmbeds(beans.nowPlayingCommand.buildEmbed(track))?.queue()
129129
}
130130
}
131131

src/main/kotlin/dev/arbjerg/ukulele/command/HelpCommand.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ package dev.arbjerg.ukulele.command
33
import dev.arbjerg.ukulele.features.HelpContext
44
import dev.arbjerg.ukulele.jda.Command
55
import dev.arbjerg.ukulele.jda.CommandContext
6-
import net.dv8tion.jda.api.MessageBuilder
6+
import net.dv8tion.jda.api.entities.MessageEmbed
7+
import net.dv8tion.jda.api.utils.MarkdownUtil
8+
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder
79
import org.springframework.stereotype.Component
810

911
@Component
@@ -12,14 +14,15 @@ class HelpCommand : Command("help") {
1214
if (argumentText.isNotBlank()) {
1315
replyHelp(beans.commandManager[argumentText.trim()] ?: command)
1416
} else {
15-
val msg = MessageBuilder()
16-
.append("Available commands:")
17-
.appendCodeBlock(buildString {
17+
val msg = MessageCreateBuilder()
18+
.addContent("Available commands:")
19+
.addContent(MarkdownUtil.codeblock(buildString {
1820
beans.commandManager.getCommands().forEach {
1921
appendLine((listOf(it.name) + it.aliases).joinToString())
2022
}
21-
}, "")
22-
.append("\nUse \"${trigger} <command>\" to see more details.")
23+
}))
24+
.addContent("\nUse \"${trigger} <command>\" to see more details.")
25+
2326
replyMsg(msg.build())
2427
}
2528
}

src/main/kotlin/dev/arbjerg/ukulele/features/HelpContext.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ package dev.arbjerg.ukulele.features
22

33
import dev.arbjerg.ukulele.jda.Command
44
import dev.arbjerg.ukulele.jda.CommandContext
5-
import net.dv8tion.jda.api.MessageBuilder
5+
import net.dv8tion.jda.api.utils.MarkdownUtil
6+
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder
67

78
class HelpContext(private val commandContext: CommandContext, private val command: Command) {
89
private val lines = mutableListOf<String>()
@@ -20,7 +21,7 @@ class HelpContext(private val commandContext: CommandContext, private val comman
2021
lines.add("# " + text.trim())
2122
}
2223

23-
fun buildMessage() = MessageBuilder()
24-
.appendCodeBlock(lines.joinToString(separator = "\n"), "md")
25-
.build()
24+
fun buildMessage() = MessageCreateBuilder()
25+
.addContent(MarkdownUtil.codeblock("md", lines.joinToString(separator = "\n")))
26+
.build()
2627
}

src/main/kotlin/dev/arbjerg/ukulele/jda/CommandContext.kt

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,20 @@ import net.dv8tion.jda.api.entities.Guild
99
import net.dv8tion.jda.api.entities.Member
1010
import net.dv8tion.jda.api.entities.Message
1111
import net.dv8tion.jda.api.entities.MessageEmbed
12-
import net.dv8tion.jda.api.entities.TextChannel
12+
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel
13+
import net.dv8tion.jda.api.utils.messages.MessageCreateData
1314
import org.springframework.stereotype.Component
1415

1516
class CommandContext(
16-
val beans: Beans,
17-
val guildProperties: GuildProperties,
18-
val guild: Guild,
19-
val channel: TextChannel,
20-
val invoker: Member,
21-
val message: Message,
22-
val command: Command,
23-
val prefix: String,
24-
/** Prefix + command name */
17+
val beans: Beans,
18+
val guildProperties: GuildProperties,
19+
val guild: Guild,
20+
val channel: TextChannel,
21+
val invoker: Member,
22+
val message: Message,
23+
val command: Command,
24+
val prefix: String,
25+
/** Prefix + command name */
2526
val trigger: String
2627
) {
2728
@Component
@@ -44,12 +45,12 @@ class CommandContext(
4445
channel.sendMessage(msg).queue()
4546
}
4647

47-
fun replyMsg(msg: Message) {
48+
fun replyMsg(msg: MessageCreateData) {
4849
channel.sendMessage(msg).queue()
4950
}
5051

5152
fun replyEmbed(embed: MessageEmbed) {
52-
channel.sendMessage(embed).queue()
53+
channel.sendMessage(MessageCreateData.fromEmbeds(embed)).queue()
5354
}
5455

5556
fun replyHelp(forCommand: Command = command) {

src/main/kotlin/dev/arbjerg/ukulele/jda/CommandManager.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import kotlinx.coroutines.launch
77
import net.dv8tion.jda.api.entities.Guild
88
import net.dv8tion.jda.api.entities.Member
99
import net.dv8tion.jda.api.entities.Message
10-
import net.dv8tion.jda.api.entities.TextChannel
10+
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel
1111
import org.slf4j.Logger
1212
import org.slf4j.LoggerFactory
1313
import org.springframework.stereotype.Service

src/main/kotlin/dev/arbjerg/ukulele/jda/EventHandler.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package dev.arbjerg.ukulele.jda
22

3-
import net.dv8tion.jda.api.events.ReadyEvent
3+
import net.dv8tion.jda.api.entities.channel.ChannelType
44
import net.dv8tion.jda.api.events.StatusChangeEvent
5-
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent
5+
import net.dv8tion.jda.api.events.message.MessageReceivedEvent
66
import net.dv8tion.jda.api.hooks.ListenerAdapter
77
import org.slf4j.Logger
88
import org.slf4j.LoggerFactory
@@ -13,9 +13,11 @@ class EventHandler(private val commandManager: CommandManager) : ListenerAdapter
1313

1414
private val log: Logger = LoggerFactory.getLogger(EventHandler::class.java)
1515

16-
override fun onGuildMessageReceived(event: GuildMessageReceivedEvent) {
16+
override fun onMessageReceived(event: MessageReceivedEvent) {
1717
if (event.isWebhookMessage || event.author.isBot) return
18-
commandManager.onMessage(event.guild, event.channel, event.member!!, event.message)
18+
if (event.channelType != ChannelType.TEXT) return
19+
20+
commandManager.onMessage(event.guild, event.channel.asTextChannel(), event.member!!, event.message)
1921
}
2022

2123
override fun onStatusChange(event: StatusChangeEvent) {

0 commit comments

Comments
 (0)