Waterlink is a Lavalink client written in Go. The client is based on Lavalink version 3.0 or higher.
To use a Go package such as waterlink, you must of course have Go installed on your system.
It is assumed that you have already worked with the Go environment. If this is not the case, see this page first.
To use waterlink as a Go package, you must have it installed on your current system. If this is not the case, run the
command below.
go get -u github.com/lukasl-dev/waterlinkCreate a Client
The Client is used to connect to the HTTP and Websocket server.
client, err := waterlink.New(
waterlink.HTTP(":8080"), // HTTP(S) server host address
waterlink.WS(":8080"), // WS(S) server host address
waterlink.Password("youshallnotpass"), // server authorisation password
waterlink.UserID("botID"), // bot's user id
)
// handle errorLoad one or more Tracks
See the Track Loading API.
typ, playlist, tracks, err := client.LoadTracks("source")
// handle errorPlay a Track
To be able to play music, waterlink must be integrated.
err := client.PlayTrack("guildID", track)
// handle errorIntegrate discordgo
Here it is assumed that you already have experience with the discordgo package. If this is not the case, see this page first.
To be able to play audio, a sessionID is required.
var sessionID string
discord.AddHandler(func(session *discordgo.Session, event *discordgo.Ready) {
sessionID = event.SessionID
})To be able to stream audio, the VoiceServerUpdate must be provided. See this.
discord.AddHandler(session *discordgo.Session, event *discordgo.VoiceServerUpdate) {
err := client.VoiceUpdate(event.GuildID, sessionID, waterlink.VoiceServerUpdate{
GuildID: event.GuildID,
Token: event.Token,
Endpoint: event.Endpoint,
})
// handle error
}After discordgo has been integrated, music can be played.
Use the code below to join a guild's voice channel. After that music can be played.
err := dg.ChannelVoiceJoinManual("guildID", "voiceChannelID", false, false)
// handle error