duan602728596 / qqtools

QQ群工具,提供48系成员直播监听,48系成员信息监听,微博监听,抖音监听,小红书监听,B站直播监听,群成员自动欢迎,定时消息,自定义命令等功能。
https://yzb1g5r02h.feishu.cn/docx/R123d4UKKovQx0x1dM2cDce7n9c
GNU Affero General Public License v3.0
273 stars 57 forks source link

基于go-cqhttp连接方式的自定义命令功能不能正确处理消息段数组 #169

Closed ghost closed 8 months ago

ghost commented 8 months ago

错误报告

基于go-cqhttp连接方式的自定义命令功能不能正确处理消息段数组

复现步骤

qqtools发送以下符合onebot-11标准的群消息(敏感字段已用星号代替)

{
    "message_type": "group",
    "sub_type": "normal",
    "message_id": **********,
    "group_id": **********,
    "user_id": **********,
    "anonymous": null,
    "message": [
        {
            "type": "text",
            "data": {
                "text": "test"
            }
        }
    ],
    "raw_message": "",
    "font": 0,
    "sender": {
        "user_id": **********,
        "nickname": "**********",
        "card": null,
        "sex": "unknown",
        "age": 0,
        "area": "",
        "level": "2",
        "role": "member",
        "title": ""
    },
    "time": 1704251194,
    "self_id": **********,
    "post_type": "message"
}

并设置qqtools自定义命令: image

然后qqtools未回复消息

(若将raw_message字段填充上文本消息内容,则qqtools可以正确响应)

预期行为

自定义命令功能正确处理符合onebot-11的消息段数组

使用环境

ghost commented 8 months ago

问题应该是出在这几行代码: https://github.com/duan602728596/qqtools/blob/95b8c8c64d40a4221e7f059f85834aa18b90c7dd/packages/qqtools/src/QQ/QQBotModals/GoCQHttp.ts#L43-L51

我不太看得懂ts的语法,但感觉大概是if判断写得有问题,导致没有优先按照消息段数组来解析命令,而是从raw_message中来解析命令了

ghost commented 8 months ago

噢我发现使用最新commit在本地build后,没有这个问题了 看来我上面贴出来的代码是对的,只不过还没有release最新版而已