Skip to content

Commit 1539235

Browse files
committed
fix link formatting when playing & preview track/playlist name/author in autocomplete
1 parent 19f2381 commit 1539235

File tree

2 files changed

+39
-3
lines changed

2 files changed

+39
-3
lines changed

commands/play.go

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,40 @@ func (c *Commands) PlayAutocomplete(e *handler.AutocompleteEvent) error {
3838
}
3939

4040
if urlPattern.MatchString(query) {
41+
ctx, cancel := context.WithTimeout(e.Ctx, 10*time.Second)
42+
defer cancel()
43+
result, err := c.Lavalink.BestNode().LoadTracks(ctx, query)
44+
if err != nil {
45+
return e.AutocompleteResult([]discord.AutocompleteChoice{
46+
discord.AutocompleteChoiceString{
47+
Name: res.Trim("Failed to load track: "+err.Error(), 100),
48+
Value: "error",
49+
},
50+
})
51+
}
52+
53+
var name string
54+
switch loadData := result.Data.(type) {
55+
case lavalink.Track:
56+
name = fmt.Sprintf("%s - %s", loadData.Info.Title, loadData.Info.Author)
57+
case lavalink.Playlist:
58+
var playlistInfo lavasrc.PlaylistInfo
59+
_ = loadData.PluginInfo.Unmarshal(&playlistInfo)
60+
name = fmt.Sprintf("%s: %s - %s", playlistInfo.Type, loadData.Info.Name, playlistInfo.Author)
61+
case lavalink.Empty:
62+
return e.AutocompleteResult(nil)
63+
case lavalink.Exception:
64+
return e.AutocompleteResult([]discord.AutocompleteChoice{
65+
discord.AutocompleteChoiceString{
66+
Name: res.Trim("Failed to load track: "+loadData.Error(), 100),
67+
Value: "error",
68+
},
69+
})
70+
}
71+
4172
return e.AutocompleteResult([]discord.AutocompleteChoice{
4273
discord.AutocompleteChoiceString{
43-
Name: res.Trim("🔗 "+query, 100),
74+
Name: res.Trim("🔗 "+name, 100),
4475
Value: query,
4576
},
4677
})

internal/res/track.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package res
22

33
import (
44
"fmt"
5+
"strings"
56

67
"github.com/disgoorg/disgolink/v3/lavalink"
78
"github.com/disgoorg/lavasrc-plugin"
@@ -29,9 +30,13 @@ func FormatTrack(track lavalink.Track, position lavalink.Duration) string {
2930
}
3031
}
3132

32-
trackName := fmt.Sprintf("`%s`", track.Info.Title)
33+
title := track.Info.Title
34+
title = strings.TrimPrefix(title, "https://")
35+
title = strings.TrimPrefix(title, "http://")
36+
37+
trackName := fmt.Sprintf("`%s`", title)
3338
if track.Info.URI != nil {
34-
trackName = fmt.Sprintf("[`%s`](<%s>)", track.Info.Title, *track.Info.URI)
39+
trackName = fmt.Sprintf("[`%s`](<%s>)", title, *track.Info.URI)
3540
}
3641

3742
var albumName string

0 commit comments

Comments
 (0)