[−][src]Crate spectacles_gateway
Spectacles Gateway
This library provides an interface for spawning Discord shards with the Discord Gateway.
Getting Started
This crate uses non-blocking, asynchronous I/O provided with the tokio runtime.
To begin spawning shards, simply create a new ShardManager
, and choose a ShardStrategy
.
use spectacles_gateway::{ShardManager, ShardStrategy}; use std::env::var; use tokio::prelude::*; fn main() { let token = var("DISCORD_TOKEN").expect("Failed to parse Discord token"); // Creating a shard manager tokio::run(ShardManager::new(token, ShardStrategy::Recommended) .map(|mut manager| { // Here we obtain our two streams, responsible for spawned shards and events. let (spawner, events) = manager.start_spawn(); // We poll each stream concurrently in separate threads. tokio::spawn(spawner.for_each(|shard| { // Freshly spawned shard println!("Shard {:?} has successfully spawned.", shard.lock().info); Ok(()) })); tokio::spawn(events.for_each(|event| { // Event, which contains the shard it belongs to, as well as the Discord packet 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); }) ); }
Structs
EventHandler | A stream of incoming Discord events for a shard. |
Shard | A Spectacles Gateway shard. |
ShardEvent | Information about a Discord Gateway event received for a shard. |
ShardManager | The central hub for all shards, where shards are spawned and maintained. |
Spawner | A stream of shards being spawned and emitting the ready event. |
Enums
Error | Represents a global error which can occur throughout the library. |
ShardStrategy | The strategy in which you would like to spawn shards. |
Type Definitions
ManagerShard | An alias for a shard spawned with the sharding manager. |
Result | A modified result type which encompasses the global error type. |
ShardMap | A collection of shards, keyed by shard ID. |