1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
use std::collections::HashMap;
use bytes::Bytes;
pub mod builder;
pub mod decoder;
#[derive(Debug, Default, Clone)]
pub struct GroupSystemMessages {
pub self_invited: Vec<SelfInvited>,
pub join_group_requests: Vec<JoinGroupRequest>,
}
#[derive(Debug, Default, Clone)]
pub struct SelfInvited {
pub msg_seq: i64,
pub msg_time: i64,
pub invitor_uin: i64,
pub invitor_nick: String,
pub group_code: i64,
pub group_name: String,
pub actor_uin: i64,
pub actor_nick: String,
}
#[derive(Debug, Default, Clone)]
pub struct JoinGroupRequest {
pub msg_seq: i64,
pub msg_time: i64,
pub message: String,
pub req_uin: i64,
pub req_nick: String,
pub group_code: i64,
pub group_name: String,
pub actor_uin: i64,
pub suspicious: bool,
pub invitor_uin: Option<i64>,
pub invitor_nick: Option<String>,
}
#[derive(Debug, Default, Clone)]
pub struct FriendSystemMessages {
pub requests: Vec<NewFriendRequest>,
}
#[derive(Debug, Default, Clone)]
pub struct NewFriendRequest {
pub msg_seq: i64,
pub message: String,
pub req_uin: i64,
pub req_nick: String,
}
#[derive(Debug, Default, Clone)]
pub struct RichSigInfo {
pub status: u8,
pub uin: i64,
pub dw_time: i64,
pub infos: HashMap<u8, Bytes>,
}
impl RichSigInfo {
pub fn get_signature(&self) -> String {
String::from_utf8_lossy(&self.infos.get(&3).cloned().unwrap_or_default()).into_owned()
}
}