onebot_api/event/
message.rs1use 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}