Skip to main content

onebot_api/event/
message.rs

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