mirror of https://github.com/Mai-with-u/MaiBot.git
commit
6d70cf7528
|
|
@ -149,8 +149,51 @@ class ChatBot:
|
||||||
async def handle_notice_message(self, message: MessageRecv):
|
async def handle_notice_message(self, message: MessageRecv):
|
||||||
if message.message_info.message_id == "notice":
|
if message.message_info.message_id == "notice":
|
||||||
message.is_notify = True
|
message.is_notify = True
|
||||||
logger.info("notice消息")
|
logger.debug("notice消息")
|
||||||
print(message)
|
try:
|
||||||
|
seg = message.message_segment
|
||||||
|
mi = message.message_info
|
||||||
|
sub_type = None
|
||||||
|
scene = None
|
||||||
|
msg_id = None
|
||||||
|
recalled_id = None
|
||||||
|
|
||||||
|
if getattr(seg, "type", None) == "notify" and isinstance(getattr(seg, "data", None), dict):
|
||||||
|
sub_type = seg.data.get("sub_type")
|
||||||
|
scene = seg.data.get("scene")
|
||||||
|
msg_id = seg.data.get("message_id")
|
||||||
|
recalled = seg.data.get("recalled_user_info") or {}
|
||||||
|
if isinstance(recalled, dict):
|
||||||
|
recalled_id = recalled.get("user_id")
|
||||||
|
|
||||||
|
op = mi.user_info
|
||||||
|
gid = mi.group_info.group_id if mi.group_info else None
|
||||||
|
|
||||||
|
# 撤回事件打印;无法获取被撤回者则省略
|
||||||
|
if sub_type == "recall":
|
||||||
|
op_name = getattr(op, "user_cardname", None) or getattr(op, "user_nickname", None) or str(getattr(op, "user_id", None))
|
||||||
|
recalled_name = None
|
||||||
|
try:
|
||||||
|
if isinstance(recalled, dict):
|
||||||
|
recalled_name = (
|
||||||
|
recalled.get("user_cardname")
|
||||||
|
or recalled.get("user_nickname")
|
||||||
|
or str(recalled.get("user_id"))
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if recalled_name and str(recalled_id) != str(getattr(op, "user_id", None)):
|
||||||
|
logger.info(f"{op_name} 撤回了 {recalled_name} 的消息")
|
||||||
|
else:
|
||||||
|
logger.info(f"{op_name} 撤回了消息")
|
||||||
|
else:
|
||||||
|
logger.debug(
|
||||||
|
f"[notice] sub_type={sub_type} scene={scene} op={getattr(op,'user_nickname',None)}({getattr(op,'user_id',None)}) "
|
||||||
|
f"gid={gid} msg_id={msg_id} recalled={recalled_id}"
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
logger.info("[notice] (简略) 收到一条通知事件")
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
@ -215,8 +258,7 @@ class ChatBot:
|
||||||
message.message_segment = Seg(type="seglist", data=modified_message.message_segments)
|
message.message_segment = Seg(type="seglist", data=modified_message.message_segments)
|
||||||
|
|
||||||
if await self.handle_notice_message(message):
|
if await self.handle_notice_message(message):
|
||||||
# return
|
return
|
||||||
pass
|
|
||||||
|
|
||||||
# 处理消息内容,生成纯文本
|
# 处理消息内容,生成纯文本
|
||||||
await message.process()
|
await message.process()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue