Skip to content

[Bug] 主动回复遗漏图片信息传递 #8085

@Dominic485649

Description

@Dominic485649

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 吗?

  • Yes!

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:coreThe bug / feature is about astrbot's core, backendbugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions