onebot_api/event/
message.rs

1use crate::message::receive_segment::ReceiveSegment;
2use serde::{Deserialize, Serialize};
3use serde_json::Value;
4
5#[derive(Deserialize, Debug, Clone)]
6pub enum Sex {
7	#[serde(rename = "male")]
8	Male,
9	#[serde(rename = "female")]
10	Female,
11	#[serde(rename = "unknown")]
12	Unknown,
13}
14
15#[derive(Deserialize, Debug, Clone)]
16#[serde(tag = "message_type")]
17pub enum MessageEvent {
18	#[serde(rename = "private")]
19	Private {
20		sub_type: PrivateMessageSubType,
21		message_id: i32,
22		user_id: i64,
23		message: Vec<ReceiveSegment>,
24		raw_message: String,
25		font: i32,
26		sender: PrivateMessageSender,
27	},
28
29	#[serde(rename = "group")]
30	Group {
31		sub_type: GroupMessageSubType,
32		message_id: i32,
33		group_id: i64,
34		user_id: i64,
35		anonymous: Option<GroupMessageAnonymous>,
36		message: Vec<ReceiveSegment>,
37		raw_message: String,
38		font: i32,
39		sender: GroupMessageSender,
40	},
41}
42
43#[derive(Deserialize, Debug, Clone)]
44pub struct PrivateMessageSender {
45	user_id: Option<i64>,
46	nickname: Option<String>,
47	sex: Option<Sex>,
48	age: Option<i32>,
49}
50
51#[derive(Deserialize, Debug, Clone)]
52pub enum PrivateMessageSubType {
53	#[serde(rename = "friend")]
54	Friend,
55	#[serde(rename = "group")]
56	Group,
57	#[serde(rename = "other")]
58	Other,
59}
60
61#[derive(Deserialize, Serialize, Debug, Clone)]
62pub struct GroupMessageAnonymous {
63	id: i64,
64	name: String,
65	flag: String,
66}
67
68#[derive(Deserialize, Debug, Clone)]
69pub struct GroupMessageSender {
70	user_id: Option<i64>,
71	nickname: Option<String>,
72	card: Option<String>,
73	sex: Option<Sex>,
74	age: Option<i32>,
75	area: Option<String>,
76	level: Option<String>,
77	role: Option<GroupMessageSenderRole>,
78	title: Option<String>,
79}
80
81#[derive(Deserialize, Debug, Clone)]
82pub enum GroupMessageSenderRole {
83	#[serde(rename = "owner")]
84	Owner,
85	#[serde(rename = "admin")]
86	Admin,
87	#[serde(rename = "member")]
88	Member,
89}
90
91#[derive(Deserialize, Debug, Clone)]
92pub enum GroupMessageSubType {
93	#[serde(rename = "normal")]
94	Normal,
95	#[serde(rename = "anonymous")]
96	Anonymous,
97	#[serde(rename = "notice")]
98	Notice,
99}