onebot_api/message/
receive_segment.rs

1use serde::Deserialize;
2
3#[derive(Deserialize, Debug, Clone)]
4#[serde(tag = "type")]
5pub enum ReceiveSegment {
6	#[serde(rename = "text")]
7	Text { data: TextData },
8
9	#[serde(rename = "face")]
10	Face { data: FaceData },
11
12	#[serde(rename = "image")]
13	Image { data: ImageData },
14
15	#[serde(rename = "record")]
16	Record { data: RecordData },
17
18	#[serde(rename = "video")]
19	Video { data: VideoData },
20
21	#[serde(rename = "at")]
22	At { data: AtData },
23
24	#[serde(rename = "rps")]
25	Rps { data: RpsData },
26
27	#[serde(rename = "dice")]
28	Dice { data: DiceData },
29
30	#[serde(rename = "shake")]
31	Shake { data: ShakeData },
32
33	#[serde(rename = "poke")]
34	Poke { data: PokeData },
35
36	#[serde(rename = "anonymous")]
37	Anonymous { data: AnonymousData },
38
39	#[serde(rename = "share")]
40	Share { data: ShareData },
41
42	#[serde(rename = "contact")]
43	Contact { data: ContactData },
44
45	#[serde(rename = "location")]
46	Location { data: LocationData },
47
48	#[serde(rename = "music")]
49	Music { data: MusicData },
50
51	#[serde(rename = "reply")]
52	Reply { data: ReplyData },
53
54	#[serde(rename = "forward")]
55	Forward { data: ForwardData },
56
57	#[serde(rename = "node")]
58	Node { data: NodeData },
59
60	#[serde(rename = "xml")]
61	Xml { data: XmlData },
62
63	#[serde(rename = "json")]
64	Json { data: JsonData },
65}
66
67#[derive(Deserialize, Debug, Clone)]
68pub struct TextData {
69	pub text: String,
70}
71
72#[derive(Deserialize, Debug, Clone)]
73pub struct FaceData {
74	pub id: String,
75}
76
77#[derive(Deserialize, Debug, Clone)]
78pub struct ImageData {
79	pub file: String,
80	#[serde(rename = "type")]
81	pub image_type: Option<String>,
82	pub url: String,
83}
84
85#[derive(Deserialize, Debug, Clone)]
86pub struct RecordData {
87	pub file: String,
88	pub magic: String,
89	pub url: String,
90}
91
92#[derive(Deserialize, Debug, Clone)]
93pub struct VideoData {
94	pub file: String,
95	pub url: String,
96}
97
98#[derive(Deserialize, Debug, Clone)]
99pub struct AtData {
100	pub qq: String,
101}
102
103#[derive(Deserialize, Debug, Clone)]
104pub struct RpsData {}
105
106#[derive(Deserialize, Debug, Clone)]
107pub struct DiceData {}
108
109#[derive(Deserialize, Debug, Clone)]
110pub struct ShakeData {}
111
112#[derive(Deserialize, Debug, Clone)]
113pub struct PokeData {
114	#[serde(rename = "type")]
115	pub poke_type: String,
116	pub id: String,
117	pub name: String,
118}
119
120#[derive(Deserialize, Debug, Clone)]
121pub struct AnonymousData {}
122
123#[derive(Deserialize, Debug, Clone)]
124pub struct ShareData {
125	pub url: String,
126	pub title: String,
127	pub content: String,
128	pub image: String,
129}
130
131#[derive(Deserialize, Debug, Clone)]
132pub struct ContactData {
133	#[serde(rename = "type")]
134	pub contact_type: String,
135	pub id: String,
136}
137
138#[derive(Deserialize, Debug, Clone)]
139pub struct LocationData {
140	pub lat: String,
141	pub lon: String,
142	pub title: String,
143	pub content: String,
144}
145
146#[derive(Deserialize, Debug, Clone)]
147pub struct MusicData {}
148
149#[derive(Deserialize, Debug, Clone)]
150pub struct ReplyData {
151	pub id: String,
152}
153
154#[derive(Deserialize, Debug, Clone)]
155pub struct ForwardData {
156	pub id: String,
157}
158
159#[derive(Deserialize, Debug, Clone)]
160pub struct NodeData {
161	pub user_id: String,
162	pub nickname: String,
163	pub content: Vec<ReceiveSegment>,
164}
165
166#[derive(Deserialize, Debug, Clone)]
167pub struct XmlData {
168	pub data: String,
169}
170
171#[derive(Deserialize, Debug, Clone)]
172pub struct JsonData {
173	pub data: String,
174}