A Lavalink wrapper for Discord.Net!
- Follow these instructions to setup Lavalink.
- Once Lavalink is up and running follow the code example below to setup Sharplink.
DiscordSocketClient client = new DiscordSocketClient();
LavalinkManager lavalinkManager = new LavalinkManager(client, new LavalinkManagerConfig
{
RESTHost = "localhost",
RESTPort = 2333,
WebSocketHost = "localhost",
WebSocketPort = 2333,
Authorization = "YOUR_SECRET_AUTHORIZATION_KEY",
TotalShards = 1
});Notes:
You don't have to pass a
LavalinkManagerConfigsince Sharplink uses the default config.
As of Lavalink v3.1, in
LavalinkManagerConfigyour hosts,RESTHostandWebSocketHost, should be identical, andRESTPortshould be identical toWebSocketPort.
Set
TotalShardsto the total amount of shards your bot uses. If you don't understand whatTotalShardsis you are probably not sharding your bot and should set this value to1.
Use only a single instance of
LavaLinkManager. If possible addLavalinkManagerto your DI (Dependency Injection).
Once a LavalinkManager is set up it will need to be started. It is recommended you put this in the ready event.
client.Ready += async () =>
{
await lavalinkManager.StartAsync();
}From there you can connect to audio channels, play music, and do whatever else you wish to do. Here is an example to connect and play music on a voice channel.
// Get LavalinkPlayer for our Guild and if it's null then join a voice channel.
LavalinkPlayer player = lavalinkManager.GetPlayer(GUILD_ID) ?? await lavalinkManager.JoinAsync(VOICE_CHANNEL);
// Now that we have a player we can go ahead and grab a track and play it
LoadTracksResponse response = await lavalinkManager.GetTracksAsync("IDENTIFIER");
// Gets the first track from the response
LavalinkTrack track = response.Tracks.First();
await player.PlayAsync(track);
// For legacy usage with GetTrackAsync() on pre beta-0005 (This is deprecated, please upgrade)
// The below note about search results applies to this method also
LavalinkTrack track = await lavalinkManager.GetTrackAsync("IDENTIFIER");
await player.PlayAsync(track);Notes: To get a track from Youtube use GetTracksAsync($"ytsearch:Query"). To get a track from SoundCloud use GetTracksAsync($"scsearch:Query").