Skip to content

解析 @ 消息时,若被 @ 的 QQ 号在屏蔽列表中,会错误显示为另一个已退群成员的昵称 #1715

@CDGZ-ofc

Description

@CDGZ-ofc

检查项

  • 我确认此问题在所有分支的最新版本中依旧存在
  • 我确认在 Issues 列表中并无其他人已经提出过与此问题相同或相似的问题
  • 我使用了 Docker

使用的分支

main

具体版本号

v1.0.0-pre.21

遇到的问题

在群聊中,当其他成员 @ 一个已被 Bot 屏蔽的 QQ 号时,MaiBot 没有正确显示该 QQ 号(或显示为原始 QQ 号),而是错误地将其映射为另一个已经退群的成员的昵称/标识。这导致消息内容被曲解,影响正常的消息处理和用户交互。

报错信息

示例日志片段已进行脱敏简化

OneBot 原始事件(正确):

23:03:56 SUCCESS [Event] 群 40000721 | 我(100000000): ID:98765432 @20000000  测试喵喵1
23:04:00 SUCCESS [Event] 群 40000721 | 我(100000000): ID:87654321 @20000000  测试喵喵2
23:04:09 SUCCESS [Event] 群 40000721 | 我(100000000): ID:76543210 @30000000   @20000000  测试喵喵3

MaiBot 日志(错误解析):

2026-05-18 23:03:56 [INFO] [chat] [曲库菌粉丝群]我:@已退群用户  测试喵喵1
2026-05-18 23:04:00 [INFO] [chat] [曲库菌粉丝群]我:@已退群用户  测试喵喵2
2026-05-18 23:04:09 [INFO] [chat] [曲库菌粉丝群]我:@麦麦   @已退群用户  测试喵喵3

如何重现此问题?

重现步骤

  • Bot 已配置屏蔽列表,其中包含某个 QQ 号(如 20000000)。
  • 群内另一成员(例如 )发送消息,其中 @ 了该被屏蔽的 QQ 号(@20000000)。
  • 观察 Bot 日志中对该消息的解析和显示结果。

实际行为

  • OneBot 原始事件正确识别被 @ 的 QQ 号为 20000000
  • 但在 MaiBot 日志中,该 @ 被错误地显示为另一个已退群成员的昵称(例如 @已退群用户),而非原始 QQ 号或屏蔽标记。
  • 同时,Bot 自身被 @ 时(QQ 30000000)显示正常(例如 @麦麦)。

预期行为

  • 当 @ 的对象是被屏蔽的 QQ 号时,Bot 应至少保留原始 QQ 号或显示为类似 @已屏蔽用户 的占位符,而不应错误地映射为其他不相关的已退群成员。
  • 不应出现将一个 QQ 号解析为另一个完全无关的昵称的情况。

可能造成问题的原因

No response

系统环境

环境信息

  • MaiBot:v1.0.0-pre.21
  • OneBot:SnowLuma-v1.7.9
  • 系统:Ubuntu 24.04.3 LTS (Noble Numbat)
  • 内核版本:6.17.0-14-generic
  • 架构:x86_64 (64位)

Python 版本

Python 3.12.3

补充信息

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    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