mirror of
http://shenjack.top:5100/shenjack/icalingua-python-bot.git
synced 2024-11-23 12:41:05 +08:00
更新消息格式和房间ID处理***
***更新消息格式和房间ID处理
This commit is contained in:
parent
b41617bb06
commit
f2624dbcca
|
@ -87,7 +87,7 @@ impl<'de> Deserialize<'de> for Message {
|
||||||
|
|
||||||
impl Display for Message {
|
impl Display for Message {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
write!(f, "{}|{}|{}", self.sender_id, self.sender_name, self.content)
|
write!(f, "{}|{}|{}|{}", self.msg_id(), self.sender_id, self.sender_name, self.content)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,8 +115,12 @@ impl Display for NewMessage {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
write!(
|
write!(
|
||||||
f,
|
f,
|
||||||
"{}|{}|{}|{}",
|
"{}|{}|{}|{}|{}",
|
||||||
self.room_id, self.msg.sender_id, self.msg.sender_name, self.msg.content
|
self.msg_id(),
|
||||||
|
self.room_id,
|
||||||
|
self.msg.sender_id,
|
||||||
|
self.msg.sender_name,
|
||||||
|
self.msg.content
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,22 @@ pub mod messages;
|
||||||
pub mod all_rooms;
|
pub mod all_rooms;
|
||||||
pub mod online_data;
|
pub mod online_data;
|
||||||
|
|
||||||
|
/// 房间 id
|
||||||
|
/// 群聊 < 0
|
||||||
|
/// 私聊 > 0
|
||||||
pub type RoomId = i64;
|
pub type RoomId = i64;
|
||||||
pub type UserId = i64;
|
pub type UserId = i64;
|
||||||
pub type MessageId = String;
|
pub type MessageId = String;
|
||||||
|
|
||||||
|
pub trait RoomIdTrait {
|
||||||
|
fn is_room(&self) -> bool;
|
||||||
|
fn is_chat(&self) -> bool { !self.is_room() }
|
||||||
|
fn as_room_id(&self) -> RoomId;
|
||||||
|
fn as_chat_id(&self) -> RoomId;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl RoomIdTrait for RoomId {
|
||||||
|
fn is_room(&self) -> bool { (*self).is_negative() }
|
||||||
|
fn as_room_id(&self) -> RoomId { -(*self).abs() }
|
||||||
|
fn as_chat_id(&self) -> RoomId { (*self).abs() }
|
||||||
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ use crate::data_struct::messages::NewMessage;
|
||||||
use crate::data_struct::MessageId;
|
use crate::data_struct::MessageId;
|
||||||
use crate::py::{class, verify_plugins, PyStatus};
|
use crate::py::{class, verify_plugins, PyStatus};
|
||||||
|
|
||||||
pub fn get_func<'a>(py_module: &'a PyAny, path: &PathBuf, name: &'a str) -> Option<&'a PyAny> {
|
pub fn get_func<'py>(py_module: &'py PyAny, path: &PathBuf, name: &'py str) -> Option<&'py PyAny> {
|
||||||
// 要处理的情况:
|
// 要处理的情况:
|
||||||
// 1. 有这个函数
|
// 1. 有这个函数
|
||||||
// 2. 没有这个函数
|
// 2. 没有这个函数
|
||||||
|
@ -57,7 +57,7 @@ pub async fn new_message_py(message: &NewMessage, client: &Client) {
|
||||||
let args = (msg, client);
|
let args = (msg, client);
|
||||||
if let Some(py_func) = get_func(py_module.as_ref(py), &path, "on_message") {
|
if let Some(py_func) = get_func(py_module.as_ref(py), &path, "on_message") {
|
||||||
if let Err(e) = py_func.call1(args) {
|
if let Err(e) = py_func.call1(args) {
|
||||||
warn!("failed to call function<on_new_message>: {:?}", e);
|
warn!("failed to call function<on_message>: {:?}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue
Block a user