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
use std::os::raw::c_char; use crate::targets::{ message::{Message, SendMessage}, user::User, }; #[derive(Debug, Clone)] pub enum PrivateMessageType { Friend, Group, Discuss, Other, } impl From<i32> for PrivateMessageType { fn from(i: i32) -> Self { match i { 11 => PrivateMessageType::Friend, 2 => PrivateMessageType::Group, 3 => PrivateMessageType::Discuss, _ => PrivateMessageType::Other, } } } #[derive(Debug)] pub struct PrivateMessageEvent { pub sub_type: i32, pub msg: Message, pub font: i32, pub user: User, } impl PrivateMessageEvent { pub fn new(sub_type: i32, msg_id: i32, user_id: i64, msg: *const c_char, font: i32) -> Self { PrivateMessageEvent { sub_type, msg: Message::new(msg, msg_id), font, user: User::new(user_id), } } pub fn get_message(&self) -> &Message { &self.msg } pub fn reply(&self, msg: impl ToString) -> crate::api::Result<i32> { self.user.send_message(msg) } pub fn get_sub_type(&self) -> PrivateMessageType { PrivateMessageType::from(self.sub_type) } }