Closed Touch-Night closed 2 days ago
groupId怎么能是private:xxx呢🤔 翻koishi源码,只有两种消息类型: [Group|Channel] 和 private, 前者有 groupId 和 channelId 且相同,后者只有 channelId
私聊时的channelId是private:xxx
那改回来吧,mock插件年久失修,debug到现在还没找到兼容的方法。要测试的话我手动改一下好了
另外,const groupId: string = session.guildId || session.channelId;
是否有些不妥当。毕竟从字面意义上来看group明显有别于private
私聊时的channelId是private:xxx
是的,群聊是群号,私聊是private:xxx,所以一般情况下只需要传递channelId即可 至于为什么finalReplyId和groupId不一致时会报错,猜测应该是传入的session覆盖了先前的finalReplyId(koi貌似是根据channelId判断群聊或者私聊,用guildId指定从哪个群发起的群聊/私聊)导致channel和guild不匹配,错误地调用了send_private_msg
鉴于finalReplyId要么是groupId(quoteGroup也算),要么是由LLM返回的replyTo,标题建议修改为手动指定 finalReplyId 时,发送消息报错
(一句不一致
让我多花了好多时间
如果groupId和finalReplyId一致,即使finalReplyId是手动指定的,也不会报错
猜测应该是传入的session覆盖了先前的finalReplyId(koi貌似是根据channelId判断群聊或者私聊,用guildId指定从哪个群发起的群聊/私聊)导致channel和guild不匹配,错误地调用了send_private_msg
建议也去koishi那反馈下
https://github.com/HydroGest/YesImBot/blob/3625be3e5ed0c594397ce6478de663fe4a321fec/src/index.ts#L499 在finalReplyTo为"private:1762918301",且groupId为"186782726"时报错如下:
而在finalReplyTo为"186782726",groupId为"private:1762918301"时,报错却如下:
改为
finalBotMsgId = (await session.bot.sendMessage(finalReplyTo, sentence, null))[0];
后恢复正常@MiaowFISH