Spectacles Gateway
A rich Spectacles gateway client for Rust.
About
This crate allows you to interact with the Discord gateway. Please refer to the Discord Gateway Docs for more background on how to use this crate.
Features
- Asynchronous websocket message handling.
- Zero-Downtime shard spawning.
- Integrates seamlessly with the spectacles-brokers package.
Example - Basic Sharder
use std::env::var;
use spectacles_gateway::{ShardManager, ShardStrategy};
use spectacles_model::gateway::ReceivePacket;
use futures::future::Future;
fn main() {
let token = var("DISCORD_TOKEN").expect("No Discord Token was provided.");
tokio::run(ShardManager::new(token, ShardStrategy::Recommended)
.map(|mut manager| {
let (spawner, events) = manager.start_spawn();
tokio::spawn(spawner.for_each(|shard| {
println!("Shard {:?} has successfully spawned.", shard.lock().info);
Ok(())
}));
tokio::spawn(events.for_each(|event| {
if let Some(evt) = event.packet.t {
println!("Received event from Shard {:?}: {:?}", event.shard.lock().info, evt);
};
Ok(())
}));
})
.map_err(|err| {
eprintln!("Failed to bootstrap sharding manager. {:?}", err);
})
);
}