Skip to main content

botcat_capoo/model/message/
segment.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
5#[serde(tag = "type", content = "data", rename_all = "snake_case")]
6pub enum MessageSegment {
7    Text {
8        text: String,
9    },
10    At {
11        qq: String,
12    },
13    Reply {
14        id: String,
15    },
16    Face {
17        id: String,
18        #[serde(skip_serializing_if = "Option::is_none")]
19        raw: Option<Value>,
20        #[serde(rename = "resultId", skip_serializing_if = "Option::is_none")]
21        result_id: Option<String>,
22        #[serde(rename = "chainCount", skip_serializing_if = "Option::is_none")]
23        chain_count: Option<u64>,
24    },
25    Mface {
26        emoji_id: String,
27        emoji_package_id: String,
28        #[serde(skip_serializing_if = "Option::is_none")]
29        key: Option<String>,
30        #[serde(skip_serializing_if = "Option::is_none")]
31        summary: Option<String>,
32    },
33    Dice {
34        #[serde(skip_serializing_if = "Option::is_none")]
35        result: Option<String>,
36    },
37    Rps {
38        #[serde(skip_serializing_if = "Option::is_none")]
39        result: Option<String>,
40    },
41    Poke {
42        #[serde(rename = "type")]
43        poke_type: String,
44        id: String,
45    },
46    Image {
47        file: String,
48        url: Option<String>,
49        summary: Option<String>,
50        sub_type: Option<u64>,
51        file_size: Option<String>,
52        key: Option<String>,
53        emoji_id: Option<String>,
54        emoji_package_id: Option<String>,
55    },
56    Record {
57        file: String,
58        file_size: Option<String>,
59        path: Option<String>,
60    },
61    Video {
62        file: String,
63        url: Option<String>,
64        file_size: Option<String>,
65        thumb: Option<String>,
66    },
67    File {
68        file: String,
69        file_id: Option<String>,
70        file_size: Option<String>,
71    },
72    Json {
73        data: Value,
74    },
75    Music {
76        #[serde(rename = "type")]
77        platform: String,
78        id: Option<String>,
79        url: Option<String>,
80        image: Option<String>,
81        singer: Option<String>,
82        title: Option<String>,
83        content: Option<String>,
84    },
85    Forward,
86}