zephyr.lavalink

Playback through a shared Lavalink v4 node. Requires the `lavalink` permission; declare `services = ["lavalink"]` for production. Track and player return values are the Lavalink v4 JSON shapes (camelCase fields like `loadType`, `encoded`, `info`, `state`).

12 functions

load_tracks

lavalink
zephyr.lavalink.load_tracks(guild_id, identifier, source?)

Resolve tracks from an identifier or search query.

When source is omitted, identifier is sent as-is (URL or Lavalink identifier). Search sources: youtube/yt, youtube_music/ytm, soundcloud/sc, plus LavaSrc spotify, apple_music, deezer, yandex_music when supported.

Parameters

guild_idstring

Guild id.

identifierstring

A URL, Lavalink identifier, or search query.

sourcestringoptional

Search source, e.g. youtube.

Returns

table

Lavalink's loaded-track result (loadType, data).

Raises an error if

  • the lavalink permission is not granted

Example

lua
local result = zephyr.lavalink.load_tracks(ctx.guild_id, "never gonna give you up", "youtube")

connect

lavalink
zephyr.lavalink.connect(guild_id, channel_id)

Join voice and create a Lavalink player.

Sends the voice-state update, waits for the voice events, then returns the player.

Parameters

guild_idstring

Guild id.

channel_idstring

Voice channel id to join.

Returns

table

The current player.

Raises an error if

  • the lavalink permission is not granted

disconnect

lavalink
zephyr.lavalink.disconnect(guild_id)

Delete the player and leave voice.

Parameters

guild_idstring

Guild id.

Returns

nil

Nothing.

Raises an error if

  • the lavalink permission is not granted

play

lavalink
zephyr.lavalink.play(guild_id, encoded_track, user_data)

Play an encoded track.

Parameters

guild_idstring

Guild id.

encoded_trackstring

Encoded track string from load_tracks.

user_datastring

Optional stable id attached to the track as Lavalink userData and echoed back in playback events. Use this to correlate events to a playback (the encoded string is not stable across events).

Returns

table

The updated player.

Raises an error if

  • the lavalink permission is not granted

pause

lavalink
zephyr.lavalink.pause(guild_id)

Pause the player.

Parameters

guild_idstring

Guild id.

Returns

table

The updated player.

Raises an error if

  • the lavalink permission is not granted

resume

lavalink
zephyr.lavalink.resume(guild_id)

Resume the player.

Parameters

guild_idstring

Guild id.

Returns

table

The updated player.

Raises an error if

  • the lavalink permission is not granted

stop

lavalink
zephyr.lavalink.stop(guild_id)

Stop the current track.

Parameters

guild_idstring

Guild id.

Returns

table

The updated player.

Raises an error if

  • the lavalink permission is not granted

skip

lavalink
zephyr.lavalink.skip(guild_id)

Skip the current track.

Parameters

guild_idstring

Guild id.

Returns

nil

Nothing.

Raises an error if

  • the lavalink permission is not granted

volume

lavalink
zephyr.lavalink.volume(guild_id, value)

Set the player volume.

Parameters

guild_idstring

Guild id.

valuenumber

Volume in Lavalink's 0..1000 range.

Returns

table

The updated player.

Raises an error if

  • the lavalink permission is not granted

seek

lavalink
zephyr.lavalink.seek(guild_id, position_ms)

Seek the current track.

Parameters

guild_idstring

Guild id.

position_msnumber

Seek position in milliseconds.

Returns

table

The updated player.

Raises an error if

  • the lavalink permission is not granted

player

lavalink
zephyr.lavalink.player(guild_id)

Return the current player state.

Parameters

guild_idstring

Guild id.

Returns

table

The current player.

Raises an error if

  • the lavalink permission is not granted

version

lavalink
zephyr.lavalink.version(guild_id)

Return the connected Lavalink node version.

Parameters

guild_idstring

Guild id.

Returns

string

The Lavalink node version.

Raises an error if

  • the lavalink permission is not granted