This release adds some QoL features that have been frequently requested, and adds support for plugin events.
**Documentation:**
https://wavelink.dev
**Support:**
[Discord Server](https://discord.gg/RAKc3HF)
> [!CAUTION]
> You can no longer use a **BETA** version of Lavalink on this release. Please upgrade your Lavalink to a stable version 4+.
Additions
**Playable:**
- [Playable.extras](https://wavelink.dev/en/latest/wavelink.html#wavelink.Playable.extras)
<sub>Updates to support `userData` field in Lavalink.</sub>
**Node:**
- [Node.fetch_info](https://wavelink.dev/en/latest/wavelink.html#wavelink.Node.fetch_info)
- [Node.fetch_stats](https://wavelink.dev/en/latest/wavelink.html#wavelink.Node.fetch_stats)
- [Node.fetch_version](https://wavelink.dev/en/latest/wavelink.html#wavelink.Node.fetch_version)
- [Node.fetch_player_info](https://wavelink.dev/en/latest/wavelink.html#wavelink.Node.fetch_player_info)
- [Node.fetch_players](https://wavelink.dev/en/latest/wavelink.html#wavelink.Node.fetch_players)
<sub>All the above endpoints have been made public.</sub>
> [!IMPORTANT]
> [Node.fetch_player_info](https://wavelink.dev/en/latest/wavelink.html#wavelink.Node.fetch_player_info) and [Node.fetch_players](https://wavelink.dev/en/latest/wavelink.html#wavelink.Node.fetch_players) are not the same as [Node.get_player](https://wavelink.dev/en/latest/wavelink.html#wavelink.Node.get_player). Please read the documentation before using these endpoints for more details.
**Payloads:**
- [StatsResponsePayload](https://wavelink.dev/en/latest/wavelink.html#wavelink.StatsResponsePayload)
- [PlayerStatePayload](https://wavelink.dev/en/latest/wavelink.html#wavelink.PlayerStatePayload)
- [VoiceStatePayload](https://wavelink.dev/en/latest/wavelink.html#wavelink.VoiceStatePayload)
- [PlayerResponsePayload](https://wavelink.dev/en/latest/wavelink.html#wavelink.PlayerResponsePayload)
- [GitResponsePayload](https://wavelink.dev/en/latest/wavelink.html#wavelink.GitResponsePayload)
- [VersionResponsePayload](https://wavelink.dev/en/latest/wavelink.html#wavelink.VersionResponsePayload)
- [PluginResponsePayload](https://wavelink.dev/en/latest/wavelink.html#wavelink.PluginResponsePayload)
- [InfoResponsePayload](https://wavelink.dev/en/latest/wavelink.html#wavelink.InfoResponsePayload)
- [ExtraEventPayload](https://wavelink.dev/en/latest/wavelink.html#wavelink.ExtraEventPayload)
<sub>These payloads correspond to all the data received in the above endpoints, minus [ExtraEventPayload](https://wavelink.dev/en/latest/wavelink.html#wavelink.ExtraEventPayload) which will be received in the [on_wavelink_extra_event](https://wavelink.dev/en/latest/wavelink.html#wavelink.on_wavelink_extra_event) event.
**Events:**
- [on_wavelink_extra_event](https://wavelink.dev/en/latest/wavelink.html#wavelink.on_wavelink_extra_event)
<sub>An event fired when an event that is unknown/unhandled by default is received, usually from Lavalink Plugins.</sub>
> [!WARNING]
> Make sure you know the source of your event when using [on_wavelink_extra_event](https://wavelink.dev/en/latest/wavelink.html#wavelink.on_wavelink_extra_event). Lavalink **does not** provide this information by default.
**Utils:**
- [ExtrasNamespace](https://wavelink.dev/en/latest/wavelink.html#wavelink.ExtrasNamespace)
<sub>`ExtrasNamespace` is a container class that holds all the information sent to Lavalink via the `userData` field which can be set by passing a `dict` of `str` keys to `Any` value (Must be convertible to JSON) to [Playable.extras](https://wavelink.dev/en/latest/wavelink.html#wavelink.Playable.extras). Please see documentation for more details.</sub>
Changes
Internally Wavelink now sends a different payload to Lavalink when playing a track or skipping. This is inline with Lavalink changes. Please upgrade your Lavalink to a stable version 4+ if you are currently on a beta version.