- JSON -> ORJSON: switched libraries, due to performance increases. (only if you do `pip install ongaku[speedups]`, which also enables a few other performance improvers.)
- SearchResult -> typing.Sequence[Track]: This has been changed, so there is less boilerplate within ongaku. This may break your code, so please check it.
- channel_id and guild_id: channel and guild id related things, have been modified, so they now support either giving them a guild/channel object, or just a snowflake.
- abc/impl: Most items have been separated into two different places. ABC (abstract classes) and Impl (implementation) ABC's are for the classes, and what they hold, where as Impl, is the actual implementation of it (the ones you can actually call/build)
- Tests: The long awaited tests. All files, and anything called has tests, meaning that most bugs should not exist in the code anymore.
- `Exception` to `Error`: All exceptions, now end with `Error`, not `Exception` to match other python exceptions.
- integer timestamp to `datetime.datetime`: Some fields used to send a UNIX timestamp, and it was set to an integer. It is now set to `datetime.datetime`.
- Client:
- session handling: All session handling has been completely redesigned. auto_sessions no longer exists, and has been replaced by a `SessionHandler`'s, so now anyone can easily build their own sessions within, and change to different session types.
- create, fetch and deleting sessions can now be done within the client directly.
- server connection: All server connections have been re-built, to support more than one server connection (it will not use multiple servers, but it does use the other servers as fallbacks).
- all methods within ongaku have been re-written to be cleaner, and easier to understand.
- Added arc and tanjun injection support ([more here](gs/injection.md))
- async to sync: fetching a player no longer requires an async function. You can simply call `.fetch_player()` without `await` at the start.
- Players and sessions must be unique: Adding a player with the same guild id as another player or creating a session with the same name as another session, will raise a `UniqueError`.
- Routeplanner:
- Docs: added route planner docs.
- ABC: added route planner abstract classes.
- Session:
- Kill players: Sessions now kill, and delete all players when shutting down.
- request: You can now make requests to a session! simply call `.request()` and add your arguments, and away you go!
- Player:
- Add: Add now supports a singular track, a sequence of tracks or a playlist.
- Fixed issue where the track would continue playing, if you disconnected the bot.
- Shuffle: Shuffle the current queue!
- Volume reset: Allow for you to reset the volume
- async to sync: Made a few methods like `set_autoplay` and `shuffle` to become sync.
- autoplay: Autoplay now starts a new track on `LOADFAILED` as well as `FINISHED`
- Rest:
- ClientSession: Client session is now re-used instead of creating and deleting a session, every time a new rest action is done.
- RoutePlanner: added route planner endpoints (`fetch_routeplanner_status`, `update_routeplanner_address` and `update_all_routeplanner_addresses`)
- new handling: All rest methods are now handled in a new way, that both makes them safer, and the code is also shorter.
- all events are no longer split apart. They are all within rest. e.g. from `rest.player.update()` to `rest.update_player()`
- fixed update session method: Update session now includes two arguments (resuming, timeout) which were not included, and would result in an error if called.
- Events:
- Session and client: All events now have the client, and session attached to them.
- Payload event: Ever wanted just a plain payload event, maybe for debugging, or client side stuff? Here you go!
- Fixes:
- Fixed rare disconnection issue where the endpoint would fail.
- Errors now actually report their errors in the terminal, meaning that if your lavalink server is not online, and you try to connect, you will get warnings if it can't do it.
- Other, unlisted errors should be fixed.
- Documentation:
- All documentation has been re-written, to make it easier to understand parts of the code, and give more detailed explanations of what things do.