What happened / 发生了什么
群聊未 @ 的消息走了内置“主动回复”路径,它只传了 event.message_str,而纯图片消息的文本为空,也没有把 image_urls 传给 LLM,所以主代理根本看不到图片
修复方式:
py312\Lib\site-packages\astrbot\builtin_stars\astrbot\main.py
178行起改动为
prompt = event.message_str
image_urls = []
image_attachment_parts = []
for comp in event.message_obj.message:
if isinstance(comp, Image):
try:
image_path = await comp.convert_to_file_path()
image_urls.append(image_path)
image_attachment_parts.append(
f"[Image Attachment: path {image_path}]",
)
except BaseException as e:
logger.error(f"主动回复处理图片失败: {e}")
if image_attachment_parts:
prompt_parts = image_attachment_parts.copy()
if prompt:
prompt_parts.append(prompt)
prompt = "\n".join(prompt_parts)
if not prompt and image_urls:
prompt = "<attachment>"
if not conv:
logger.error("未找到对话,无法主动回复")
return
yield event.request_llm(
prompt=prompt,
session_id=event.session_id,
image_urls=image_urls,
conversation=conv,
)
except BaseException as e:
main.py
Reproduce / 如何复现?
启动主动回复,并且概率设置位100%,传递时候会遗漏图片,无法触发下一步操作(例如子代理等)
AstrBot version, deployment method (e.g., Windows Docker Desktop deployment), provider used, and messaging platform used. / AstrBot 版本、部署方式(如 Windows Docker Desktop 部署)、使用的提供商、使用的消息平台适配器
AstrBot(Windows)
v4.24.2
OS
Windows
Logs / 报错日志
无,直接见发生了什么的修复方法
Are you willing to submit a PR? / 你愿意提交 PR 吗?
Code of Conduct
What happened / 发生了什么
群聊未 @ 的消息走了内置“主动回复”路径,它只传了 event.message_str,而纯图片消息的文本为空,也没有把 image_urls 传给 LLM,所以主代理根本看不到图片
修复方式:
py312\Lib\site-packages\astrbot\builtin_stars\astrbot\main.py
178行起改动为
main.py
Reproduce / 如何复现?
启动主动回复,并且概率设置位100%,传递时候会遗漏图片,无法触发下一步操作(例如子代理等)
AstrBot version, deployment method (e.g., Windows Docker Desktop deployment), provider used, and messaging platform used. / AstrBot 版本、部署方式(如 Windows Docker Desktop 部署)、使用的提供商、使用的消息平台适配器
AstrBot(Windows)
v4.24.2
OS
Windows
Logs / 报错日志
无,直接见发生了什么的修复方法
Are you willing to submit a PR? / 你愿意提交 PR 吗?
Code of Conduct