H-K-Y / Genshin_Impact_bot

原神bot,这是一个基于nonebot和HoshinoBot的原神娱乐及信息查询插件,包含原神抽卡,丘丘语翻译,找资源点等功能
GNU General Public License v3.0
389 stars 85 forks source link

能否增加特殊符号作为命令前缀,以避免误触发关键字? #55

Closed Cathgao closed 2 years ago

Cathgao commented 2 years ago

日常群聊中经常会有“在哪”等关键字,会造成bot误触发而回复,造成不必要的误会和打扰。请问能否像yobot(PCR机器人)一样可以设置一个特殊字符的命令前缀,如#,只对有前缀的命令进行处理,如#清心在哪? 感激不尽

1shin-7 commented 2 years ago

若使用的是nonebot2版本,修改.env.dev文件即可

COMMAND_START = ["#"]
H-K-Y commented 2 years ago

hoshino的hoshino/config/bot.py里COMMAND_START可以设置前缀的

Cathgao commented 2 years ago

hoshino的hoshino/config/bot.py里COMMAND_START可以设置前缀的

您好,我当前使用的是hoshinobot,bot.py里已经设置

COMMAND_START = {"#"}    # 命令前缀(空字符串匹配任何消息)
COMMAND_SEP = set()     # 命令分隔符(hoshino不需要该特性,保持为set()即可)

但前缀不生效,#会直接传递到原神bot里 QQ图片20210928193349

H-K-Y commented 2 years ago

实在不行你就改资源查询的指令吧, Genshin_Impact_bot/query_resource_points/init.py 第7行是后缀触发,第8行是前缀触发,你自己把指令改一下吧

Cathgao commented 2 years ago

实在不行你就改资源查询的指令吧, Genshin_Impact_bot/query_resource_points/init.py 第7行是后缀触发,第8行是前缀触发,你自己把指令改一下吧

这个方法可行

看了下hoshino那边的issue,似乎是没有实现COMMAND_START这个功能

命令前缀是nonebot的特性,Hoshino并没有用到。
当前版本使用的on_prefix等触发器不会识别命令前缀。
命令前缀仅对on_command装饰器起作用。
对于on_prefix和on_fullmatch装饰器,要实现命令前缀并不困难,你通过可以修改hoshino/trigger.py的add方法来实现。
对于on_suffix和on_keyword似乎没有较好的方法添加。对于on_rex可以通过直接修改正则表达式来实现。

Ice-Cirno/HoshinoBot#117