修复bot自己给别人发消息时没有PushContent字段导致判断错误,并修复bot自己发消息自己回复问题

This commit is contained in:
Dong_master
2025-03-16 19:08:56 +08:00
parent bd0438df76
commit eb841fb73e
3 changed files with 17 additions and 4 deletions

View File

@@ -170,7 +170,8 @@ class PlatformManager:
self.ap.logger.debug(f"Traceback: {traceback.format_exc()}")
tasks.append(exception_wrapper(adapter))
for task in tasks:
self.ap.task_mgr.create_task(
task,

View File

@@ -67,7 +67,7 @@ class GewechatMessageConverter(adapter.MessageConverter):
if message["Data"]["MsgType"] == 1:
# 检查消息开头,如果有 wxid_sbitaz0mt65n22:\n 则删掉
regex = re.compile(r"^wxid_.*:")
# print(message)
print(message)
line_split = message["Data"]["Content"]["string"].split("\n")
@@ -78,15 +78,20 @@ class GewechatMessageConverter(adapter.MessageConverter):
pattern = r'@\S+'
at_string = f"@{bot_account_id}"
content_list = []
if message['Wxid'] == message['Data']['FromUserName']['string']:
return platform_message.MessageChain()
if at_string in message["Data"]["Content"]["string"]:
content_list.append(platform_message.At(target=bot_account_id))
content_list.append(platform_message.Plain(message["Data"]["Content"]["string"].replace(at_string, '', 1)))
# 更优雅的替换改名后@机器人仅仅限于单独AT的情况
elif '在群聊中@了你' in message["Data"]["PushContent"]:
elif "PushContent" in message['Data'] and '在群聊中@了你' in message["Data"]["PushContent"]:
content_list.append(platform_message.At(target=bot_account_id))
content_list.append(platform_message.Plain(re.sub(pattern, '', message["Data"]["Content"]["string"])))
else:
content_list = [platform_message.Plain(message["Data"]["Content"]["string"])]
if message['Wxid'] == message['Data']['FromUserName']['string']:
pass
else:
content_list = [platform_message.Plain(message["Data"]["Content"]["string"])]
return platform_message.MessageChain(content_list)

View File

@@ -15,6 +15,9 @@ import asyncio
from urllib.parse import urlparse
async def get_gewechat_image_base64(
gewechat_url: str,
gewechat_file_url: str,
@@ -67,6 +70,7 @@ async def get_gewechat_image_base64(
}
) as response:
if response.status != 200:
print(response)
raise Exception(f"获取gewechat图片下载失败: {await response.text()}")
resp_data = await response.json()
@@ -108,6 +112,9 @@ async def get_gewechat_image_base64(
raise Exception(f"获取图片失败: {str(e)}") from e
async def get_wecom_image_base64(pic_url: str) -> tuple[str, str]:
"""
下载企业微信图片并转换为 base64