Non-exhaustive list of changes:
Additions
- Lavalink `filters` support.
- Support Java's modified utf by including a dedicated `utfm` codec.
- This should provide fewer erroneous decodes, as well as displaying previously-unsupported characters.
- Support Lavalink's new exception format (105, contributors: apex2504).
- `Utils.timestamp_to_mills` helper function.
- `PlayerUpdateEvent.connected`.
- Custom source support + DeferredAudioTrack.
- `player.destroy`.
- Support for `volume` and `pause` kwargs in `play()`.
- `lavalink.listener` decorator.
- ssl support for nodes (wss/https).
- `/plugins` route support (124, contributors: apex2504).
- `node_unavailable()` method added to `BasePlayer`.
- Docstrings.
Changes
- `user_id` now accepts `int` or `str`.
- HTTP-based functions now raise appropriate errors rather than returning false/misleading values.
- Renamed `lavalink.exceptions` to `lavalink.errors` to be more inline with `Error` naming.
- Websocket closures now have a default error messages.
- Websocket closures now better attempts to extract the close code.
- `ConnectionResetError` should be better handled.
- Updated a few logging messages to better show which module emitted the log.
- `position` and `encoder_version` properties are now exposed in decoded AudioTracks.
- Documented `player.channel_id`.
- `player.guild_id` is now an `int`.
- `TrackEndEvent.track` is now marked `Optional` to cover any potential scenarios where track decoding fails.
- Marked `set_gain`, `set_gains`, and `reset_equalizer` as deprecated.
- Their equivalents are listed in the docs, so endeavour to change this as they will probably be removed on the next minor/major version.
- `player.add` parameter has been re-ordered to be more logical.
- The behaviour of the `requester` param in `player.add` has been altered so that non-zero values now overwrite the track's requester.
- `get_tracks` now returns a `LoadResult` class rather than the raw JSON (dict).
- Best effort was made to ensure this was backwards compatible, however it's marked as breaking as it's a large change, so you should verify you're unaffected.
- `AudioTrack` supports construction from another `AudioTrack` instance.
- Docstrings.
Fixes
- Lavalink.py client will no longer dispatch to empty hooks.
- Altered how Lavalink's `TrackStartEvent` is processed internally to avoid emitting `NoneType` events.
- Docstrings.
Notes
- Any non-essential functions (basically `routeplanner_*` functions in Client) have been moved to Node. They didn't make sense as they required a Node instance, so it seemed more logical to incorporate them directly into the Node instance itself.
- Refactored logging formats.