use diself::gateway::Connection;
use diself::Result;
#[tokio::main]
async fn main() -> Result<()> {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::DEBUG)
.init();
println!("🦀 Testing Discord Gateway connection...\n");
let gateway_url = "wss://gateway.discord.gg/?v=10&encoding=json";
let mut connection = Connection::connect(gateway_url).await?;
println!("✅ Connected! Waiting for HELLO...\n");
if let Some(payload) = connection.receive().await? {
println!("📨 Received payload:");
println!("{}\n", serde_json::to_string_pretty(&payload)?);
if let Some(op) = payload.get("op") {
if op == 10 {
println!("✅ Received HELLO opcode!");
if let Some(interval) = payload["d"]["heartbeat_interval"].as_u64() {
println!("💓 Heartbeat interval: {}ms", interval);
}
}
}
}
println!("\n🎉 Test successful!");
Ok(())
}