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