feat: integrate music commands with Lavalink support

- Added new music commands: play, queue, and volume.
- Implemented music management using disgolink for Lavalink integration.
- Updated bot initialization to include Lavalink host and password.
- Enhanced interaction handling for music commands, requiring DJ role for usage.
- Introduced now playing message with interactive buttons for controlling playback.
- Updated dependencies in go.mod for disgolink and snowflake.
This commit is contained in:
2026-03-18 03:47:42 +00:00
parent d177114ddb
commit d7edfea45e
16 changed files with 1268 additions and 19 deletions
+18 -2
View File
@@ -5,7 +5,9 @@ import (
"velox-bot/internal/commands/help"
cmdlevel "velox-bot/internal/commands/level"
"velox-bot/internal/commands/meeting"
cmdmusic "velox-bot/internal/commands/music"
"velox-bot/internal/commands/projects"
"velox-bot/internal/music"
"github.com/bwmarrin/discordgo"
)
@@ -23,6 +25,9 @@ var AllCommands = []*discordgo.ApplicationCommand{
cmdlevel.Rank,
cmdlevel.Leaderboard,
cmdlevel.Rewards,
cmdmusic.Play,
cmdmusic.Queue,
cmdmusic.Volume,
meeting.Meeting,
projects.Projects,
}
@@ -42,10 +47,21 @@ var handlers = map[string]func(s *discordgo.Session, i *discordgo.InteractionCre
"rewards": cmdlevel.RewardsHandler,
"meeting": meeting.MeetingHandler,
"projects": projects.ProjectsHandler,
"play": cmdmusic.PlayHandler,
"queue": cmdmusic.QueueHandler,
"volume": cmdmusic.VolumeHandler,
}
func HandleInteraction(s *discordgo.Session, i *discordgo.InteractionCreate) {
if h, ok := handlers[i.ApplicationCommandData().Name]; ok {
h(s, i)
switch i.Type {
case discordgo.InteractionApplicationCommand:
if h, ok := handlers[i.ApplicationCommandData().Name]; ok {
h(s, i)
}
case discordgo.InteractionMessageComponent:
data := i.MessageComponentData()
if len(data.CustomID) >= 6 && data.CustomID[:6] == "music:" {
music.HandleComponent(s, i)
}
}
}