@@ -38,9 +38,40 @@ func (c *Commands) PlayAutocomplete(e *handler.AutocompleteEvent) error {
38
38
}
39
39
40
40
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
+
41
72
return e .AutocompleteResult ([]discord.AutocompleteChoice {
42
73
discord.AutocompleteChoiceString {
43
- Name : res .Trim ("🔗 " + query , 100 ),
74
+ Name : res .Trim ("🔗 " + name , 100 ),
44
75
Value : query ,
45
76
},
46
77
})
0 commit comments