[Bug] Sending a Telegram message chain twice duplicates mentions

Đang mở Phù hợp với người mới
#11,125 0 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

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

Từ ngày 14/11/2026.

  • #11126 của @123XieC — đang mở

Đá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
72/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

Mention được thêm vào đầu bên trong TelegramPlatformEvent.send_with_client, và hàm này làm thay đổi MessageChain của bên gọi. Hãy bắt đầu từ đó và kiểm tra cách văn bản của thành phần At được thêm vào thành phần Plain. Sao chép chuỗi trước khi thêm tiền tố, sau đó chạy đường gửi hai lần với một transport Telegram giả lập. Xác nhận rằng mỗi yêu cầu chỉ chứa đúng một tiền tố @alice và chuỗi gốc không bị thay đổi.

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

Mô tả

Bug description

The Telegram adapter prepends an At mention directly to the caller's Plain.text. A plugin that sends one MessageChain twice (for example, broadcasting a shared notice or retrying delivery) gets duplicate mentions in the second message. The original chain is also changed for subsequent use.

Reproduction

Create MessageChain([At(qq=1234, name="alice"), Plain("Please review")]) and call TelegramPlatformEvent.send_with_client twice with the same chain. A mock Telegram bot is enough to observe the outgoing requests.

Expected result

Each request sends @alice Please review, and the chain's plain component still contains Please review.

Actual result

The second request sends @alice @alice Please review. The component text now contains both prefixes.

Environment

Source at 23db1ad08064a8330a09077138ce8ecc05362219, Python 3.12, macOS. Reproduced with the production send method and the repository's mock Telegram transport.

Ngôn ngữ chính
Python
Star
46.4k
Fork
3.4k
Merge trung bình
1 ngày 10 giờ
Pull request đã merge (30 ngày)
111

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.