diff --git a/main.py b/main.py index 30ae51c..549db97 100644 --- a/main.py +++ b/main.py @@ -78,7 +78,7 @@ if __name__ == "__main__": logger.warning("收到中断信号,正在优雅关闭...") loop.run_until_complete(graceful_shutdown()) except Exception as e: - logger.error(f"主程序异常: {str(e)}") + logger.exception(f"主程序异常: {str(e)}") if loop and not loop.is_closed(): loop.run_until_complete(graceful_shutdown()) loop.close() diff --git a/src/recv_handler.py b/src/recv_handler.py index f6f14bf..d4e5f15 100644 --- a/src/recv_handler.py +++ b/src/recv_handler.py @@ -80,7 +80,7 @@ class RecvHandler: format_info: FormatInfo = FormatInfo( content_format=["text", "image", "emoji"], accept_format=["text", "image", "emoji", "reply"], - ) # 格式化信息,暂时为空,等待启用 + ) # 格式化信息 if message_type == MessageType.private: sub_type = raw_message.get("sub_type") if sub_type == MessageType.Private.friend: @@ -213,7 +213,7 @@ class RecvHandler: seg_message: list[Seg]: 处理后的消息段列表 """ real_message: list = raw_message.get("message") - if len(real_message) == 0: + if not real_message: return None seg_message: List[Seg] = [] for sub_message in real_message: @@ -232,7 +232,7 @@ class RecvHandler: if not in_reply: ret_seg = await self.handle_reply_message(sub_message) if ret_seg: - seg_message += ret_seg + seg_message.append(ret_seg) else: logger.warning("reply处理失败") else: @@ -298,6 +298,9 @@ class RecvHandler: else json.dumps(response) ) messages = response.get("data").get("messages") + if not messages: + logger.warning("转发消息内容为空或获取失败") + return None ret_seg = await self.handle_forward_message(messages) if ret_seg: seg_message.append(ret_seg) @@ -392,7 +395,11 @@ class RecvHandler: 处理回复消息 """ - message_id = raw_message.get("data").get("id") + raw_message_data: dict = raw_message.get("data") + if raw_message_data: + message_id = raw_message_data.get("id") + else: + return None message_detail: dict = await get_message_detail(self.server_connection, message_id) if not message_detail: logger.warning("获取被引用的消息详情失败") @@ -419,8 +426,8 @@ class RecvHandler: # message_time: int = raw_message.get("time") message_time: float = time.time() # 应可乐要求,现在是float了 - group_id = raw_message.get("group_id") - user_id = raw_message.get("user_id") + group_id = str(raw_message.get("group_id")) + user_id = str(raw_message.get("user_id")) handled_message: Seg = None match notice_type: @@ -441,6 +448,9 @@ class RecvHandler: handled_message: Seg = await self.handle_poke_notify(raw_message) case _: logger.warning("不支持的notify类型") + case _: + logger.warning("不支持的notice类型") + return None if not handled_message: logger.warning("notice处理失败或不支持") return None @@ -517,6 +527,8 @@ class RecvHandler: else: logger.warning("无法获取bot的昵称,戳一戳消息可能无效") target_name = "你" + else: + return None try: first_txt = raw_info[2].get("text", "戳了戳") second_txt = raw_info[4].get("text", "")