flow_bot/event/
notice.rs

1use std::collections::HashMap;
2
3use serde::Deserialize;
4use serde_json::Value;
5
6#[derive(Deserialize, Debug, Clone)]
7pub struct GroupFile {
8    pub id: String,
9    pub name: String,
10    pub size: i64,
11    pub busid: i64,
12}
13
14#[derive(Deserialize, Debug, Clone)]
15pub struct GroupUpload {
16    pub group_id: i64,
17    pub user_id: i64,
18    pub file: GroupFile,
19}
20
21#[derive(Deserialize, Debug, Clone)]
22#[serde(rename_all = "snake_case")]
23pub enum GroupAdminSubType {
24    Set,
25    Unset,
26}
27
28#[derive(Deserialize, Debug, Clone)]
29pub struct GroupAdmin {
30    pub group_id: i64,
31    pub user_id: i64,
32    pub sub_type: GroupAdminSubType,
33}
34
35#[derive(Deserialize, Debug, Clone)]
36#[serde(rename_all = "snake_case")]
37pub enum GroupDecreaseSubType {
38    Leave,
39    Kick,
40    KickMe,
41}
42
43#[derive(Deserialize, Debug, Clone)]
44pub struct GroupDecrease {
45    pub group_id: i64,
46    pub user_id: i64,
47    pub operator_id: i64,
48    pub sub_type: GroupDecreaseSubType,
49}
50
51#[derive(Deserialize, Debug, Clone)]
52#[serde(rename_all = "snake_case")]
53pub enum GroupIncreaseSubType {
54    Approve,
55    Invite,
56}
57
58#[derive(Deserialize, Debug, Clone)]
59pub struct GroupIncrease {
60    pub group_id: i64,
61    pub user_id: i64,
62    pub operator_id: i64,
63    pub sub_type: GroupIncreaseSubType,
64}
65
66#[derive(Deserialize, Debug, Clone)]
67#[serde(rename_all = "snake_case")]
68pub enum GroupBanSubType {
69    Ban,
70    LiftBan,
71}
72
73#[derive(Deserialize, Debug, Clone)]
74pub struct GroupBan {
75    pub group_id: i64,
76    pub user_id: i64,
77    pub operator_id: i64,
78    pub sub_type: GroupBanSubType,
79    pub duration: i64,
80}
81
82#[derive(Deserialize, Debug, Clone)]
83pub struct FriendAdd {
84    pub user_id: i64,
85}
86
87#[derive(Deserialize, Debug, Clone)]
88pub struct GroupRecall {
89    pub group_id: i64,
90    pub user_id: i64,
91    pub operator_id: i64,
92    pub message_id: i64,
93}
94
95#[derive(Deserialize, Debug, Clone)]
96pub struct FriendRecall {
97    pub user_id: i64,
98    pub message_id: i64,
99}
100
101#[derive(Deserialize, Debug, Clone)]
102#[serde(tag = "notice_type")]
103#[serde(rename_all = "snake_case")]
104pub enum Notice {
105    GroupUpload(GroupUpload),
106    GroupAdmin(GroupAdmin),
107    GroupDecrease(GroupDecrease),
108    GroupIncrease(GroupIncrease),
109    GroupBan(GroupBan),
110    FriendAdd(FriendAdd),
111    GroupRecall(GroupRecall),
112    FriendRecall(FriendRecall),
113    Notify {
114        #[serde(flatten)]
115        data: HashMap<String, Value>,
116    },
117}