koishijs / koishi-plugin-dialogue

Dialogue System for Koishi
https://dialogue.koishi.chat
MIT License
6 stars 4 forks source link

Bug: TypeError: items is not iterable #11

Closed ifrvn closed 1 year ago

ifrvn commented 1 year ago

Describe the bug

对于设置了多个nickname的机器人(如[ '四季酱', 'name2', 'name3' ]),当使用了其中一个称呼来设置仅有称呼的问题

# 四季酱 欸嘿

再用其他未设置问题的称呼来触发,会报TypeError: items is not iterable

image

Steps to reproduce

  1. 给机器人设置多个称呼

image

  1. 用其中一个称呼添加一个只有称呼的问题

image

  1. 对话中分别发送三个称呼来测试

image

只有四季酱正确响应了,另外两个称呼均报错

Expected behavior

对于其他称呼,也应该正确作出回答:“你好!要来点四季酱吗?”

Versions

Additional context

log:

TypeError: items is not iterable
        at Session.suggest (D:\dev\bot\node_modules\.pnpm\@koishijs+plugin-suggest@1.1.5_koishi@4.11.0\node_modules\@koishijs\plugin-suggest\src\index.ts:43:22)
        at <anonymous> (D:\dev\bot\node_modules\.pnpm\@koishijs+core@4.11.0\node_modules\@koishijs\core\src\command\index.ts:84:36)
        at Object.compose (D:\dev\bot\node_modules\.pnpm\@koishijs+core@4.11.0\node_modules\@koishijs\core\src\internal.ts:55:45)
        at Array.<anonymous> (D:\dev\bot\node_modules\.pnpm\@koishijs+core@4.11.0\node_modules\@koishijs\core\src\internal.ts:346:35)
        at next (D:\dev\bot\node_modules\.pnpm\@koishijs+core@4.11.0\node_modules\@koishijs\core\src\internal.ts:351:22)
        at triggerDialogue (D:\dev\bot\node_modules\.pnpm\koishi-plugin-dialogue@4.0.5_koishi@4.11.0\node_modules\koishi-plugin-dialogue\src\receiver.ts:166:22)
        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
        at next (D:\dev\bot\node_modules\.pnpm\@koishijs+core@4.11.0\node_modules\@koishijs\core\src\internal.ts:351:16)
        at _DriftBottlePlugin.callback (d:\dev\bot\plugins\drift-bottle\src\index.ts:207:12)
        at next (D:\dev\bot\node_modules\.pnpm\@koishijs+core@4.11.0\node_modules\@koishijs\core\src\internal.ts:351:16)
shigma commented 1 year ago

请移除 @koishijs/plugin-suggest 插件。

ifrvn commented 1 year ago

请移除 @koishijs/plugin-suggest 插件。

OK,现在不报错了。

不过对于其他称呼还是没有回答。不知道这个能不能改进?(现在的实现是feature还是bug?)

ilharp commented 1 year ago
# 四季酱 欸嘿

在这条命令中,你添加了一个新的问答,该问答的问题是 四季酱,回答是 欸嘿。只有当用户发送 四季酱 的时候会响应 欸嘿,该流程全程和 Koishi 全局设置的称呼没有关系。

如果你想使用称呼触发问答,可以参考 dialogue 插件的文档。

ifrvn commented 1 year ago
# 四季酱 欸嘿

在这条命令中,你添加了一个新的问答,该问答的问题是 四季酱,回答是 欸嘿。只有当用户发送 四季酱 的时候会响应 欸嘿,该流程全程和 Koishi 全局设置的称呼没有关系。

如果你想使用称呼触发问答,可以参考 dialogue 插件的文档。

了解,我看了文档中关于“称呼匹配”和“称呼本身作为问题触发”的部分,均是对“称呼+问题”匹配机制的相关说明,没有对单纯的称呼的回答做其他说明。仔细想了想,我的Expected behavior确实也不太合理。