Skip to content

Commit ea28a11

Browse files
committed
refactor: update lyrics handling and improve message formatting
1 parent 6389f9d commit ea28a11

File tree

7 files changed

+70
-51
lines changed

7 files changed

+70
-51
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
.idea/
22
config.yml
3+
go.work
4+
go.work.sum

go.mod

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ go 1.22.0
44

55
require (
66
github.com/adrg/frontmatter v0.2.0
7-
github.com/disgoorg/disgo v0.18.15
8-
github.com/disgoorg/disgolink/v3 v3.0.4-0.20250131224809-a61f9934fed7
7+
github.com/disgoorg/disgo v0.18.16
8+
github.com/disgoorg/disgolink/v3 v3.0.5-0.20250425180433-d10bc670c3da
99
github.com/disgoorg/json v1.2.0
1010
github.com/disgoorg/lavalyrics-plugin v0.0.0-20240428194130-71a50d68e826
1111
github.com/disgoorg/lavasearch-plugin v1.0.1-0.20231229185935-76caa6d35100
@@ -29,9 +29,9 @@ require (
2929
github.com/magefile/mage v1.15.0 // indirect
3030
github.com/mattn/go-isatty v0.0.20 // indirect
3131
github.com/sasha-s/go-csync v0.0.0-20240107134140-fcbab37b09ad // indirect
32-
golang.org/x/crypto v0.32.0 // indirect
32+
golang.org/x/crypto v0.35.0 // indirect
3333
golang.org/x/oauth2 v0.25.0 // indirect
34-
golang.org/x/sys v0.29.0 // indirect
35-
golang.org/x/text v0.21.0 // indirect
34+
golang.org/x/sys v0.30.0 // indirect
35+
golang.org/x/text v0.25.0 // indirect
3636
gopkg.in/yaml.v2 v2.4.0 // indirect
3737
)

go.sum

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ github.com/cloudflare/circl v1.5.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZ
1010
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
1111
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
1212
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
13-
github.com/disgoorg/disgo v0.18.15 h1:T24I/NdUUody4FDvb8YkhSxHtsgRKD8Ui5Vi5PXnIrQ=
14-
github.com/disgoorg/disgo v0.18.15/go.mod h1:dXYVH059d6aK7mI+Nh/3svSRWedNd09P7C2VX3RqbJY=
15-
github.com/disgoorg/disgolink/v3 v3.0.4-0.20250131224809-a61f9934fed7 h1:A95AR7DWjEeUmzTMBfuHSNcI29jkfIAxYei+Sa7ipyQ=
16-
github.com/disgoorg/disgolink/v3 v3.0.4-0.20250131224809-a61f9934fed7/go.mod h1:UjHfrC4NT4vzibG3GyqtY5l3aMzFwfkU+B3RiW3AQQ8=
13+
github.com/disgoorg/disgo v0.18.16 h1:Yk6pA9TaGbuM4hWfWafH0jAfmkWvZBFY7rh49DgljGE=
14+
github.com/disgoorg/disgo v0.18.16/go.mod h1:dXYVH059d6aK7mI+Nh/3svSRWedNd09P7C2VX3RqbJY=
15+
github.com/disgoorg/disgolink/v3 v3.0.5-0.20250425180433-d10bc670c3da h1:C1reE6aNuKds4/HzMvRo5nzhuK95x7S4A3c8Nh25XK4=
16+
github.com/disgoorg/disgolink/v3 v3.0.5-0.20250425180433-d10bc670c3da/go.mod h1:UjHfrC4NT4vzibG3GyqtY5l3aMzFwfkU+B3RiW3AQQ8=
1717
github.com/disgoorg/json v1.2.0 h1:6e/j4BCfSHIvucG1cd7tJPAOp1RgnnMFSqkvZUtEd1Y=
1818
github.com/disgoorg/json v1.2.0/go.mod h1:BHDwdde0rpQFDVsRLKhma6Y7fTbQKub/zdGO5O9NqqA=
1919
github.com/disgoorg/lavalyrics-plugin v0.0.0-20240428194130-71a50d68e826 h1:wLB2wLSS+issIGqoT0XIWkcrKlcKbh0H9W9e5nfTtVM=
@@ -61,6 +61,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
6161
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
6262
golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
6363
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
64+
golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
65+
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
6466
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
6567
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
6668
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -81,6 +83,7 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
8183
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
8284
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
8385
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
86+
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
8487
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
8588
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
8689
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
@@ -91,6 +94,9 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
9194
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
9295
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
9396
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
97+
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
98+
golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4=
99+
golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA=
94100
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
95101
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
96102
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=

go.work

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
go 1.24
2+
3+
use (
4+
.
5+
../lavalyrics-plugin
6+
)

handlers/lavalink.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import (
1010
"github.com/disgoorg/disgo/events"
1111
"github.com/disgoorg/disgolink/v3/disgolink"
1212
"github.com/disgoorg/disgolink/v3/lavalink"
13-
"github.com/disgoorg/sponsorblock-plugin"
1413
"github.com/topi314/tint"
14+
1515
"github.com/lavalink-devs/lavalink-bot/commands"
1616
"github.com/lavalink-devs/lavalink-bot/internal/res"
1717
)

handlers/lavalyrics.go

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ import (
99
"github.com/disgoorg/json"
1010
"github.com/disgoorg/lavalyrics-plugin"
1111
"github.com/topi314/tint"
12+
13+
"github.com/lavalink-devs/lavalink-bot/internal/res"
14+
"github.com/lavalink-devs/lavalink-bot/lavalinkbot"
1215
)
1316

1417
func (h *Handlers) OnLyricsFound(p disgolink.Player, event lavalyrics.LyricsFoundEvent) {
@@ -17,24 +20,24 @@ func (h *Handlers) OnLyricsFound(p disgolink.Player, event lavalyrics.LyricsFoun
1720
return
1821
}
1922

20-
lyricsMessageID := h.MusicQueue.LyricsMessageID(p.GuildID())
21-
if lyricsMessageID == 0 {
22-
msg, err := h.Client.Rest().CreateMessage(channelID, discord.MessageCreate{
23-
Content: "Lyrics found",
24-
})
25-
if err != nil {
26-
slog.Error("failed to send message", tint.Err(err))
27-
return
28-
}
29-
h.MusicQueue.SetLyricsMessageID(p.GuildID(), msg.ID)
23+
track := p.Track()
24+
if track == nil {
3025
return
3126
}
3227

33-
if _, err := h.Client.Rest().UpdateMessage(channelID, lyricsMessageID, discord.MessageUpdate{
34-
Content: json.Ptr("Lyrics found"),
35-
}); err != nil {
36-
slog.Error("failed to update message", tint.Err(err))
28+
content := fmt.Sprintf("Lyrics found for %s from `%s`(`%s`)", res.FormatTrack(*track, 0), event.Lyrics.SourceName, event.Lyrics.Provider)
29+
30+
msg, err := h.Client.Rest().CreateMessage(channelID, discord.MessageCreate{
31+
Content: content,
32+
})
33+
if err != nil {
34+
slog.Error("failed to send message", tint.Err(err))
35+
return
3736
}
37+
h.MusicQueue.SetLyrics(p.GuildID(), lavalinkbot.Lyrics{
38+
MessageID: msg.ID,
39+
BaseMessage: content,
40+
})
3841
}
3942

4043
func (h *Handlers) OnLyricsNotFound(p disgolink.Player, event lavalyrics.LyricsNotFoundEvent) {
@@ -43,23 +46,19 @@ func (h *Handlers) OnLyricsNotFound(p disgolink.Player, event lavalyrics.LyricsN
4346
return
4447
}
4548

46-
lyricsMessageID := h.MusicQueue.LyricsMessageID(p.GuildID())
47-
if lyricsMessageID == 0 {
48-
msg, err := h.Client.Rest().CreateMessage(channelID, discord.MessageCreate{
49-
Content: "Lyrics not found",
50-
})
51-
if err != nil {
52-
slog.Error("failed to send message", tint.Err(err))
53-
return
54-
}
55-
h.MusicQueue.SetLyricsMessageID(p.GuildID(), msg.ID)
49+
track := p.Track()
50+
if track == nil {
5651
return
5752
}
5853

59-
if _, err := h.Client.Rest().UpdateMessage(channelID, lyricsMessageID, discord.MessageUpdate{
60-
Content: json.Ptr("Lyrics not found"),
61-
}); err != nil {
62-
slog.Error("failed to update message", tint.Err(err))
54+
content := fmt.Sprintf("Lyrics not found for %s", res.FormatTrack(*track, 0))
55+
56+
_, err := h.Client.Rest().CreateMessage(channelID, discord.MessageCreate{
57+
Content: content,
58+
})
59+
if err != nil {
60+
slog.Error("failed to send message", tint.Err(err))
61+
return
6362
}
6463
}
6564

@@ -69,13 +68,14 @@ func (h *Handlers) OnLyricsLine(p disgolink.Player, event lavalyrics.LyricsLineE
6968
return
7069
}
7170

72-
lyricsMessageID := h.MusicQueue.LyricsMessageID(p.GuildID())
73-
if lyricsMessageID == 0 {
71+
lyrics := h.MusicQueue.Lyrics(p.GuildID())
72+
if lyrics == nil {
7473
return
7574
}
75+
content := fmt.Sprintf("%s\nLine(i: `%d`, t: `%s`, s: `%t`): %s", lyrics.BaseMessage, event.LineIndex, event.Line.Timestamp, event.Skipped, event.Line.Line)
7676

77-
if _, err := h.Client.Rest().UpdateMessage(channelID, lyricsMessageID, discord.MessageUpdate{
78-
Content: json.Ptr(fmt.Sprintf("Line(`%s`): %s", event.Line.Timestamp, event.Line.Line)),
77+
if _, err := h.Client.Rest().UpdateMessage(channelID, lyrics.MessageID, discord.MessageUpdate{
78+
Content: json.Ptr(content),
7979
}); err != nil {
8080
slog.Error("failed to update message", tint.Err(err))
8181
}

lavalinkbot/queue.go

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ import (
88
"github.com/disgoorg/snowflake/v2"
99
)
1010

11+
type Lyrics struct {
12+
MessageID snowflake.ID
13+
BaseMessage string
14+
}
15+
1116
type RepeatMode string
1217

1318
const (
@@ -28,10 +33,10 @@ type PlayerManager struct {
2833
}
2934

3035
type queue struct {
31-
tracks []lavalink.Track
32-
mode RepeatMode
33-
channelID snowflake.ID
34-
lyricsMessageID snowflake.ID
36+
tracks []lavalink.Track
37+
mode RepeatMode
38+
channelID snowflake.ID
39+
lyrics Lyrics
3540
}
3641

3742
func (q *PlayerManager) Get(guildID snowflake.ID) (RepeatMode, []lavalink.Track) {
@@ -63,26 +68,26 @@ func (q *PlayerManager) ChannelID(guildID snowflake.ID) snowflake.ID {
6368
return qu.channelID
6469
}
6570

66-
func (q *PlayerManager) SetLyricsMessageID(guildID snowflake.ID, messageID snowflake.ID) {
71+
func (q *PlayerManager) SetLyrics(guildID snowflake.ID, lyrics Lyrics) {
6772
q.mu.Lock()
6873
defer q.mu.Unlock()
6974

7075
qu, ok := q.queues[guildID]
7176
if !ok {
7277
return
7378
}
74-
qu.lyricsMessageID = messageID
79+
qu.lyrics = lyrics
7580
}
7681

77-
func (q *PlayerManager) LyricsMessageID(guildID snowflake.ID) snowflake.ID {
82+
func (q *PlayerManager) Lyrics(guildID snowflake.ID) *Lyrics {
7883
q.mu.Lock()
7984
defer q.mu.Unlock()
8085

8186
qu, ok := q.queues[guildID]
8287
if !ok {
83-
return 0
88+
return nil
8489
}
85-
return qu.lyricsMessageID
90+
return &qu.lyrics
8691
}
8792

8893
func (q *PlayerManager) Add(guildID snowflake.ID, channelID snowflake.ID, tracks ...lavalink.Track) {

0 commit comments

Comments
 (0)