botcat_capoo/model/message/
segment.rs1use 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}