BSTluo / koishi-plugin-word-core

5 stars 2 forks source link

群聊中添加删除回答等操作后,无法触发提示文本,例如“添加到【default】词库成功” #12

Closed DeepseaXX closed 6 days ago

DeepseaXX commented 1 month ago

私聊中所有消息都可以正常触发,

群聊中触发关键词后的回复是正常的,但诸如word.add之类的,返回文本是发不出来的

日志如下

session Error: Error with request send_group_msg, args: {"group_id":775756367,"message":[{"type":"at","data":{"name":"Ana Amari"}},{"type":"text","data":{"text":" 添加到【default】词库成功,序号为【1】"}}]}, retcode: 1200
                            at _Internal._get (C:\Users\XxDee\AppData\Roaming\Koishi\Desktop\data\instances\default\node_modules\koishi-plugin-adapter-onebot\lib\index.js:119:11)
                            at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
                            at async _Internal.<computed> [as sendGroupMsg] (C:\Users\XxDee\AppData\Roaming\Koishi\Desktop\data\instances\default\node_modules\koishi-plugin-adapter-onebot\lib\index.js:162:20)
                            at async OneBotMessageEncoder.flush (C:\Users\XxDee\AppData\Roaming\Koishi\Desktop\data\instances\default\node_modules\koishi-plugin-adapter-onebot\lib\index.js:761:330)
                            at async OneBotMessageEncoder.send (C:\Users\XxDee\AppData\Roaming\Koishi\Desktop\data\instances\default\node_modules\@satorijs\core\lib\index.cjs:620:5)
                            at async Proxy.sendMessage (C:\Users\XxDee\AppData\Roaming\Koishi\Desktop\data\instances\default\node_modules\@satorijs\core\lib\index.cjs:355:22)
                            at async C:\Users\XxDee\AppData\Roaming\Koishi\Desktop\data\instances\default\node_modules\@koishijs\core\lib\index.cjs:2061:7
                            at async Proxy.withScope (C:\Users\XxDee\AppData\Roaming\Koishi\Desktop\data\instances\default\node_modules\@koishijs\core\lib\index.cjs:1968:22)
                            at async next (C:\Users\XxDee\AppData\Roaming\Koishi\Desktop\data\instances\default\node_modules\@koishijs\core\lib\index.cjs:824:16)
                            at async next (C:\Users\XxDee\AppData\Roaming\Koishi\Desktop\data\instances\default\node_modules\@koishijs\core\lib\index.cjs:824:16)
BSTluo commented 1 month ago

唔...看上去这个插件在报错koishi-plugin-adapter-onebot,好像是onebot插件...其他的指令会发生这样的事情木?

DeepseaXX commented 1 month ago

印象里其他插件没有遇到过。

简单测试了一下,word-core内 能成功正常返回的指令大概只有word id, 而 word get xxx虽然能返回,但是ai tag本身显示为<at name="Ana Amari" /> 此关键词含有以下回答:(下略)没有转义成功, 其他的add、addauthor、alldb、readedit、resetsave、unkip均发送失败, retcode1200,下面相同

BSTluo commented 1 month ago

唔有点奇怪...唔在沙盒下的群聊模式能够正常使用吗?(koishi内的沙盒)

DeepseaXX commented 1 month ago

napcatqq(qq的无头端?) 也有错误提示 (虚拟机上复制不出来我就ocr了)

2024-09-20 21:25:16 [ERROR] xQc(201579037)|发生错误 TypeError: Cannot read properties of undefined (reading 'toString'
at NTQQGroupApi.getGroupMember (file:///C:/Users/XxDee/NapCat/napcat.mjs:6067:46)
at Object.at (file:///C:/Users/XxDee/NapCat/napcat.mjs:20138:56)
at OneBotMsgApi.createSendElements (file:///C:/Users/XxDee/NapCat/napcat.mjs:20482:64)
at SendGroupMsg._handle (file:///C:/Users/XxDee/NapCat/napcat.mjs:27888:42)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async 0B11ActiveWebSocketAdapter.handleMessage (file:///C:/Users/XxDee/NapCat/napcat.mjs:12404:21)
at async SendGroupMsg.websocketHandle (file:///C:/Users/XxDee/NapCat/napcat.mjs:27759:23)
DeepseaXX commented 1 month ago

沙盒是正常的

我也在思考中…………

BSTluo commented 1 month ago

那应该是适配器的问题...

BSTluo commented 1 month ago

唔wait)我查一下我的适配器能不能用

DeepseaXX commented 1 month ago

我可能知道为什么了 看了一下我使用的其他也会主动at用户的,能正常工作的插件,都是通过at uid实现的 也就是说我用的对接onebot的adapter,貌似是不支持通过user name来at用户的方式, 只有word.id能正常发出来也是因为里面不包含at tag , (但是这样就显得word get xxx很奇怪了?一会再看看)

BSTluo commented 1 month ago

a.............思考确实

DeepseaXX commented 1 month ago

然后我想删除试试, 删多了, 正在重装...

BSTluo commented 1 month ago

soga!唔

BSTluo commented 1 month ago

我的koishi内存溢出了....怪)))我先修修我的koishi)x

DeepseaXX commented 1 month ago

然后把at name 改成at uid的方式貌似就会正常工作? 但我刚才又通过改const uid的方式,把add时的uid全改成了我的id

反正删除之后也不是不能用……先用着

BSTluo commented 1 month ago

嗯嗯嗯!

BSTluo commented 1 month ago

我的适配器因为好久煤更新已经炸了!(悲)

DeepseaXX commented 1 month ago

顺便作者对于使用userid at或者使用username at有什么观点吗? 比如可能存在某种适配器只能使用name at,而比如onebot适配器只有userid这样的?

BSTluo commented 1 month ago

说实话...我感觉这个好多时候应该适配器端去解决这样的问题的说...总不能够在插件端对每个平台做区分的吧...这样的话每次多一个平台需要额外修改一次,总感觉很麻烦...又或者是在插件侧增加一个开关,可以设置是使用at id还是at name,不过这样也没有本质上解决问题,如果存在多个适配器的话,一个只能使用at id,一个只能使用at name的话,依然会出现问题..... 我自己写的适配器的话是对这部分进行过处理...好像会将at id自动转换为at name,但是部分平台的适配器很难做到这一点,因为很难获取到id和name的对应关系...总之感觉这部分我也暂时没有想法

BSTluo commented 1 month ago

或者说,也许我可以做两个选项,要手动填写平台的值,比如 image 然后后面需要使用者手动添加平台名称

BSTluo commented 1 month ago

不过也还是没有在本质上完成适配的说... 词库有个(@:name:对方昵称)(@:id:对方userid)的语法,可以转换成koishi的at,但是假如说a平台只能at name,b平台只能at id,那回复中包含这个语法的词库必定是不适配的...这个问题也超大,而且如果要解决这个问题的话也会非常刺激的样子

DeepseaXX commented 6 days ago

不过也还是没有在本质上完成适配的说... 词库有个(@:name:对方昵称)(@:id:对方userid)的语法,可以转换成koishi的at,但是假如说a平台只能at name,b平台只能at id,那回复中包含这个语法的词库必定是不适配的...这个问题也超大,而且如果要解决这个问题的话也会非常刺激的样子

归根结底还是onebot适配器的问题,onebot适配器应该负责koishi平台的提供的所有标准接口,哪怕是无法处理也应该在适配器层面把问题消化掉……嗯…… 不哦确实做成开关让用户选择哪种艾特方式/不艾特,作为一个feature我认为也是完全合理的(

(一直没有发现回复)

BSTluo commented 6 days ago

思考考,话说要不要...试试其他适配器(?)

不过也还是没有在本质上完成适配的说... 词库有个(@:name:对方昵称)(@:id:对方userid)的语法,可以转换成koishi的at,但是假如说a平台只能at name,b平台只能at id,那回复中包含这个语法的词库必定是不适配的...这个问题也超大,而且如果要解决这个问题的话也会非常刺激的样子

归根结底还是onebot适配器的问题,onebot适配器应该负责koishi平台的提供的所有标准接口,哪怕是无法处理也应该在适配器层面把问题消化掉……嗯…… 不哦确实做成开关让用户选择哪种艾特方式/不艾特,作为一个feature我认为也是完全合理的(

(一直没有发现回复)

DeepseaXX commented 6 days ago

初衷就是想玩qq波特,但是官方的那个群聊bot的限制太大,加上群聊bot还是只限制企业账号使用,所以也没有换适配器的想法……

反正至今我还是在每次更新之后手动删除所有at tag,(并且把word add的userid改成我的qq号实现的) 只能说这种大家都可以随便加,(但是不可以随便删)的玩法非常的刺激,词库已经变成了脑洞大合集了……

BSTluo commented 6 days ago

初衷就是想玩qq波特,但是官方的那个群聊bot的限制太大,加上群聊bot还是只限制企业账号使用,所以也没有换适配器的想法……

嘛~其实还有很多第三方的啦(小提示:去康康koishi非官方群的公告))

DeepseaXX commented 6 days ago

居然还有非官方群……

看了一下唯一不是onebot的那个用的是ll插件,而我ll之前用的时候挂机不到一天左右就会内存爆炸直接闪退,最后才用的无头napcat……

BSTluo commented 6 days ago

唔...satori内个可以木? (我现在使用感觉好像还好