avilliai / Manyana

功能整合
GNU Affero General Public License v3.0
305 stars 27 forks source link

💡 [建议] <考虑将aiReply.py中屏蔽词的精确匹配修改为模糊匹配> #12

Closed lux-QAQ closed 4 months ago

lux-QAQ commented 4 months ago

我同时安装了其他机器人插件,这导致我在聊天中用指令触发其他非Manyana插件时误触发AI聊天。例如:

@BOT 支付宝到账 100

会触发AI,但是由于指令不是固定的原因导致屏蔽词不能很好地生效,于是我做对aiReply.py了以下修改来兼容其他插件的指令。

text = str(event.message_chain).replace("@" + str(bot.qq) + "", '').replace(" ", "").replace("/g", "")
                for saa in noRes:
                    if saa == text:
                        logger.warning("与屏蔽词匹配,Gemini不回复")
                        return

修改为

text = str(event.message_chain).replace("@" + str(bot.qq) + "", '').replace(" ", "").replace("/g", "")
                for saa in noRes:
                    if saa in text:
                        logger.warning("与屏蔽词匹配,Gemini不回复")
                        return
avilliai commented 4 months ago

按照你的改法,一旦用户的提问中,包含config/noResponse.yaml中列出的关键词,将直接导致bot拒绝回复。 在不考虑来自其他插件的指令的情况下,关键词精确匹配基本满足需求。 考虑到不同插件的指令冲突,最好的处理方式是使用正则表达式进行过滤,而非用 in 但正则对大部分用户而言存在一定学习成本,如果你只有这一个支付宝到账语音指令冲突,那么在Manyana中集成该功能是最省事的处理方式。 正则屏蔽和集成该功能均列入更新计划。

avilliai commented 4 months ago

已更新,通过编辑config/noResponse.yaml实现,四种匹配方式。 image