discord-selfbot 0.1.0

Discord selfbot API library for Rust
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GatewayPayload<T> {
    pub op: u8,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub d: Option<T>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub s: Option<u64>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub t: Option<String>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Hello {
    pub heartbeat_interval: u64,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Ready {
    pub v: u8,
    pub user: serde_json::Value,
    pub guilds: Vec<serde_json::Value>,
    pub session_id: String,
    pub resume_gateway_url: Option<String>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Identify {
    pub token: String,
    pub properties: ConnectionProperties,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub compress: Option<bool>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub large_threshold: Option<u16>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub shard: Option<[u16; 2]>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub presence: Option<serde_json::Value>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConnectionProperties {
    #[serde(rename = "$os")]
    pub os: String,
    #[serde(rename = "$browser")]
    pub browser: String,
    #[serde(rename = "$device")]
    pub device: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Resume {
    pub token: String,
    pub session_id: String,
    pub seq: u64,
}