47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
from typing import Optional
|
||
from utils.revoke.message_revoke_manager import MessageRevokeManager
|
||
from wechat_ipad import WechatAPIClient
|
||
|
||
|
||
class MessageAutoRevoke:
|
||
"""消息自动撤回工具类"""
|
||
|
||
def __init__(self, client: WechatAPIClient, default_delay: float = 90.0):
|
||
"""
|
||
初始化消息自动撤回工具
|
||
|
||
Args:
|
||
client: WechatAPIClient实例
|
||
default_delay: 默认撤回延时(秒)
|
||
"""
|
||
self.client = client
|
||
self.revoke_manager = MessageRevokeManager(default_delay)
|
||
# 设置撤回回调函数
|
||
self.revoke_manager.set_revoke_callback(self.client.revoke_message)
|
||
|
||
def add_message_to_revoke(self, wxid: str, client_msg_id: int, create_time: int, new_msg_id: int,
|
||
delay: Optional[float] = None) -> None:
|
||
"""
|
||
添加消息到撤回队列
|
||
|
||
Args:
|
||
wxid: 接收人wxid
|
||
client_msg_id: 消息ID
|
||
create_time: 消息创建时间
|
||
new_msg_id: 新消息ID
|
||
delay: 延迟撤回时间(秒),如果为None则使用默认值
|
||
"""
|
||
self.revoke_manager.add_message_to_revoke(wxid, client_msg_id, create_time, new_msg_id, delay)
|
||
|
||
def set_default_delay(self, delay: float) -> None:
|
||
"""
|
||
设置默认撤回延时
|
||
|
||
Args:
|
||
delay: 默认撤回延时(秒)
|
||
"""
|
||
self.revoke_manager.set_default_delay(delay)
|
||
|
||
def stop(self) -> None:
|
||
"""停止消息撤回任务"""
|
||
self.revoke_manager.stop() |