Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[Bug] Telegram 群聊中发给其他机器人的命令会误唤醒 AstrBot

Đang mở Phù hợp với người mới
#10,240 4 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@fzf404 đang làm issue này rồi.

Từ ngày 26/9/2026.

  • #10241 của @fzf404 — đang mở
  • #10244 của @EterUltimate — đã đóng, không merge

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
76/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
python
Lĩnh vực
backend

Hướng nghiên cứu

Bắt đầu từ logic chuẩn hóa lệnh nhắm mục tiêu của Telegram adapter và theo dõi cách các tin nhắn đi vào event bus và giai đoạn đánh thức chung. Xác minh ba trường hợp được mô tả: các đích của bot hiện tại bị loại bỏ hậu tố, các đích của bot khác bị bỏ qua, và các lệnh không có đích vẫn giữ nguyên hành vi hiện tại.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

问题描述

在 Telegram 群聊中,当 AstrBot 收到形如 /help@OtherBot 的命令时,Telegram 适配器只会对发给当前机器人的命令移除 @bot_username,但会将发给其他机器人的命令原样传入事件总线。

AstrBot 的通用唤醒阶段会先根据 / 前缀判断消息是否唤醒,再匹配具体命令。因此 /help@OtherBot 虽然并非发给当前机器人,仍可能唤醒 AstrBot 并进入后续 LLM 处理。

如何复现

  1. 在同一个 Telegram 群聊中加入 AstrBot 和另一个机器人,并确保 AstrBot 能收到普通群消息。
  2. 向另一个机器人发送命令,例如 /help@OtherBot。
  3. 观察 AstrBot 也收到该消息,并可能进入唤醒或 LLM 回复流程。

预期行为

  • /help@CurrentBot:由当前 AstrBot 接收,并规范为 /help。
  • /help@OtherBot:在 Telegram 适配层忽略,不进入 AstrBot 事件总线。
  • /help:保持现有行为,由 AstrBot 的唤醒和命令配置决定是否处理。

实际行为

发给其他机器人的定向命令会保留 / 前缀进入 AstrBot 通用唤醒流程,可能错误唤醒当前机器人。

修复建议

在 Telegram 适配器现有的定向命令规范化逻辑中:

  1. 使用大小写不敏感的方式比较命令目标与当前 Bot 用户名;
  2. 目标为当前 Bot 时移除用户名后缀;
  3. 目标为其他 Bot 时停止转换该消息;
  4. 不改变无目标裸命令的现有行为。

该问题与 #10232 的共同点是都需要在 Telegram 适配层正确表达消息归属,但一个处理命令目标,另一个处理被回复消息的发送者标识,建议分别修复和审核。

环境

  • AstrBot:当前 master
  • 平台:Telegram
  • 部署方式:Docker Compose
  • 该问题不会产生异常日志
Ngôn ngữ chính
Python
Star
41.7k
Fork
3k
Merge trung bình
22 giờ 53 phút
Pull request đã merge (30 ngày)
138

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của AstrBotDevs/AstrBot

Tất cả issue của AstrBotDevs/AstrBot

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.