fix: at和回复只显示qq号的问题
This commit is contained in:
@@ -536,7 +536,8 @@ class MessageHandler:
|
||||
logger.debug("机器人被at")
|
||||
self_info: dict = await get_self_info(self.get_server_connection())
|
||||
if self_info:
|
||||
return Seg(type="text", data=f"@<{self_info.get('nickname')}:{self_info.get('user_id')}>")
|
||||
# 返回包含昵称和用户ID的at格式,便于后续处理
|
||||
return Seg(type="at", data=f"{self_info.get('nickname')}:{self_info.get('user_id')}")
|
||||
else:
|
||||
return None
|
||||
else:
|
||||
@@ -544,7 +545,8 @@ class MessageHandler:
|
||||
self.get_server_connection(), group_id=group_id, user_id=qq_id
|
||||
)
|
||||
if member_info:
|
||||
return Seg(type="text", data=f"@<{member_info.get('nickname')}:{member_info.get('user_id')}>")
|
||||
# 返回包含昵称和用户ID的at格式,便于后续处理
|
||||
return Seg(type="at", data=f"{member_info.get('nickname')}:{member_info.get('user_id')}")
|
||||
else:
|
||||
return None
|
||||
|
||||
@@ -688,7 +690,7 @@ class MessageHandler:
|
||||
logger.warning("无法获取被引用的人的昵称,返回默认值")
|
||||
seg_message.append(Seg(type="text", data="[回复 未知用户:"))
|
||||
else:
|
||||
seg_message.append(Seg(type="text", data=f"[回复<{sender_nickname}:{sender_id}>:"))
|
||||
seg_message.append(Seg(type="text", data=f"[回复<{sender_nickname}>:"))
|
||||
seg_message += reply_message
|
||||
seg_message.append(Seg(type="text", data="],说:"))
|
||||
return seg_message
|
||||
|
||||
@@ -149,6 +149,15 @@ class MessageRecv(Message):
|
||||
self.is_emoji = False
|
||||
self.is_video = False
|
||||
return segment.data # type: ignore
|
||||
elif segment.type == "at":
|
||||
self.is_picid = False
|
||||
self.is_emoji = False
|
||||
self.is_video = False
|
||||
# 处理at消息,格式为"昵称:QQ号"
|
||||
if segment.data and ":" in segment.data:
|
||||
nickname, qq_id = segment.data.split(":", 1)
|
||||
return f"@{nickname}"
|
||||
return f"@{segment.data}" if segment.data else "@未知用户"
|
||||
elif segment.type == "image":
|
||||
# 如果是base64图片数据
|
||||
if isinstance(segment.data, str):
|
||||
@@ -503,12 +512,16 @@ class MessageProcessBase(Message):
|
||||
return await get_voice_text(seg.data)
|
||||
return "[发了一段语音,网卡了加载不出来]"
|
||||
elif seg.type == "at":
|
||||
return f"[@{seg.data}]"
|
||||
# 处理at消息,格式为"昵称:QQ号"
|
||||
if seg.data and ":" in seg.data:
|
||||
nickname, qq_id = seg.data.split(":", 1)
|
||||
return f"@{nickname}"
|
||||
return f"@{seg.data}" if seg.data else "@未知用户"
|
||||
elif seg.type == "reply":
|
||||
if self.reply and hasattr(self.reply, "processed_plain_text"):
|
||||
# print(f"self.reply.processed_plain_text: {self.reply.processed_plain_text}")
|
||||
# print(f"reply: {self.reply}")
|
||||
return f"[回复<{self.reply.message_info.user_info.user_nickname}:{self.reply.message_info.user_info.user_id}> 的消息:{self.reply.processed_plain_text}]" # type: ignore
|
||||
return f"[回复<{self.reply.message_info.user_info.user_nickname}> 的消息:{self.reply.processed_plain_text}]" # type: ignore
|
||||
return None
|
||||
else:
|
||||
return f"[{seg.type}:{str(seg.data)}]"
|
||||
|
||||
Reference in New Issue
Block a user