Releases: Remora/Remora.Discord
v1.0.0 - Initial full release
v1.0.0-beta3 - Partial types and unstable API
This release implements better support for partial types throughout the library, as well as improving the signatures of some endpoints and type definitions.
In addition, this release brings a quickstart guide and online documentation for the project - check out https://nihlus.github.io/Remora.Discord/ for the latest information about the most recent tagged release.
Notable Changes
- Partial types are now in place throughout the codebase, replacing their main types where appropriate
- Audit log changes now deserialize to the appropriate type (still exposed as an Optional, though)
- Guild templates are now available in Remora.Discord.Unstable, and will remain there until official documentation is merged.
- The transport layer of the gateway client is now abstracted out, and does not directly rely on websockets. As a result, the gateway now has integration tests for most expected state flows (reconnect, resume, etc)
- All REST API implementations now have 100% code coverage, and should be working as intended (superficially, at least)
- Rest errors now propagate properly
Bug Fixes
v1.0.0-beta2 - Fixes and v8 API
This release builds on the latest Discord documentation, and implements the v8 gateway and REST API.
Notable Changes
- The gateway client now defaults to the v8 API
- The REST API now defaults to the v8 API
- Some breaking changes have been introduced in the v6 to v8 transition. A major version increment would normally have taken place, but this is a beta release, so it was not deemed necessary.
Bug Fixes
- Fixed Http and Discord error information not surviving a
FromError
call.
v1.0.0-beta1 - Initial public release
This release marks the first public release of Remora.Discord onto nuget. It is a milestone release, containing a full implementation of the current REST API provided by Discord, as well as a fully-functional gateway client.
Currently, the documentation for the library is somewhat lacking - to get started, please take a look at the samples available in the repository to see how the library might be used.
At this point, no high-level abstractions - such as a command library or entity-oriented services - have been created, but are slated for a future release.
Features
REST
- Full API surface with cohesive signatures
- 100% code coverage in unit tests of the API implementations
- Client-side safeties to prevent API misuse (parameters too long, files too large, disallowed values, etc)
- Client-side rate limiting
- DI-friendly!
Gateway
- Full support for the v6 gateway protocol
- Reconnections and resumes supported
- User-facing ability to both receive and submit events and commands to and from the gateway
- Highly concurrent, fully asynchronous
- Graceful terminations
Package breakdown
Remora.Discord
Metapackage for the subsystems and components of the library.
Remora.Discord.Core
Common types for both abstractions and implementors. Currently a very small library with only three types - it may be merged into one of the others in the future.
Remora.Discord.Rest
Default implementation of the REST API.
Remora.Discord.Gateway
Default implementation of the gateway protocol, and a fully functional gateway client. If you're building a bot but don't want to take a dependency on the metapackage, this is probably what you want.
Remora.Discord.API.Abstractions
Abstract interfaces for all Discord types and API surfaces. Generally, consumer projects (such as plugins, command frameworks, etc) should depend on this library.
Remora.Discord.API
Default implementations of the abstract interfaces provided in API.Abstractions
.
Installation
Get it on nuget
Caveats, deficiencies, and gotchas
- The gateway client has no client-side rate limiting in place - be mindful when submitting commands to it
- The gateway client has no unit tests, and is not as rigorously tested as the REST API. If you run into any unexpected behaviour, please report it as soon as possible.