botcat-capoo 1.0.3

A NapCat based QQ bot implemented in Rust
Documentation
use serde::{Deserialize, Serialize};
use serde_json::Value;

#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
#[serde(tag = "type", content = "data", rename_all = "snake_case")]
pub enum MessageSegment {
    Text {
        text: String,
    },
    At {
        qq: String,
    },
    Reply {
        id: String,
    },
    Face {
        id: String,
        #[serde(skip_serializing_if = "Option::is_none")]
        raw: Option<Value>,
        #[serde(rename = "resultId", skip_serializing_if = "Option::is_none")]
        result_id: Option<String>,
        #[serde(rename = "chainCount", skip_serializing_if = "Option::is_none")]
        chain_count: Option<u64>,
    },
    Mface {
        emoji_id: String,
        emoji_package_id: String,
        #[serde(skip_serializing_if = "Option::is_none")]
        key: Option<String>,
        #[serde(skip_serializing_if = "Option::is_none")]
        summary: Option<String>,
    },
    Dice {
        #[serde(skip_serializing_if = "Option::is_none")]
        result: Option<String>,
    },
    Rps {
        #[serde(skip_serializing_if = "Option::is_none")]
        result: Option<String>,
    },
    Poke {
        #[serde(rename = "type")]
        poke_type: String,
        id: String,
    },
    Image {
        file: String,
        url: Option<String>,
        summary: Option<String>,
        sub_type: Option<u64>,
        file_size: Option<String>,
        key: Option<String>,
        emoji_id: Option<String>,
        emoji_package_id: Option<String>,
    },
    Record {
        file: String,
        file_size: Option<String>,
        path: Option<String>,
    },
    Video {
        file: String,
        url: Option<String>,
        file_size: Option<String>,
        thumb: Option<String>,
    },
    File {
        file: String,
        file_id: Option<String>,
        file_size: Option<String>,
    },
    Json {
        data: Value,
    },
    Music {
        #[serde(rename = "type")]
        platform: String,
        id: Option<String>,
        url: Option<String>,
        image: Option<String>,
        singer: Option<String>,
        title: Option<String>,
        content: Option<String>,
    },
    Forward,
}