Gateway: Generic Shard and Twilight v0.8 Support (#109)

This PR adds support for twilight v0.8, mainly adapting to significant API changes introduced by v0.7. As a result of these, twilight no longer accepts arbitrary JSON input, so it seemed sensible to adapt our `Shard` design to no longer require the same.

Adding to this, I've added in a trait to allow an arbitrary `Shard` to be installed, given only an implementation of a method to send a `VoiceStateUpdate`. Together, `Sharder::Generic` (songbird::shards::VoiceUpdate) and `Shard::Generic` (songbird::shards::GenericSharder) should allow any library to be hooked in to Songbird.

This PR was tested using `cargo make ready` and by manually testing `examples/twilight`.
This commit is contained in:
Kyle Simpson
2022-01-13 12:17:41 +00:00
parent 12c76a9046
commit b4ce84546b
9 changed files with 187 additions and 54 deletions

View File

@@ -13,6 +13,7 @@ repository = "https://github.com/serenity-rs/songbird.git"
version = "0.2.2"
[dependencies]
derivative = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tracing = { version = "0.1", features = ["log"] }
@@ -104,12 +105,12 @@ default-features = false
[dependencies.twilight-gateway]
optional = true
version = ">=0.5, <0.7"
version = "0.8"
default-features = false
[dependencies.twilight-model]
optional = true
version = ">=0.5, <0.7"
version = "0.8"
default-features = false
[dependencies.typemap_rev]