CMHopeSunshine / nonebot-plugin-learning-chat

Nonebot2插件,让Bot学习群友的发言和表情包。/ Nonebot2 plugin to learn what your group members say.
GNU Affero General Public License v3.0
165 stars 6 forks source link
amis chat chatbot nonebot2 onebot python qqbot
NoneBotPluginLogo

NoneBotPluginText

# nonebot-plugin-learning-chat _✨ 让Bot学习群友的发言和表情包! ✨_ license pypi python

📖 介绍

一个能够让Bot根据群友的规律性发言,自动选择历史语录或者表情包进行回复的学习插件。

安装完本插件后并不会马上有效果,需要给Bot一段时间积累群聊记录。

学到一定程度后,插件就会变成话唠王,把群友们的奇怪发言和表情包通通抢过来

本插件还配备了一个Web UI后台管理供Bot主人修改配置,支持分群配置。

本插件仅适用于OneBot V11适配器和群聊

💿 安装

在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装

nb plugin install nonebot-plugin-learning-chat

☀️ 指令

不同于其它的命令式插件,本插件只有2个命令用于在群聊里管理Bot。

指令 示例 作用
开启\关闭学习 @bot 开启学习\学说话\快学\关闭学习\别学\闭嘴 开启或关闭该群的学习能力(需艾特机器人)
禁用回复 @bot 不可以\达咩\不能说这 将某句已学会的回复给禁用掉,以后不会再说这句话,需要有管理员权限者艾特机器人并回复机器人的发言

✏️ 工作原理

该插件会将群友们的发言都记录在数据库中,根据群友的规律性发言进行回复。

每当群友有一条新发言时,插件会将本条发言记录为上一条发言的可选回复之一,然后在数据库中查找符合条件的本发言的历史回复,从中选择一条进行回复。

以下为一个简单的例子:

群友1:诶嘿
群友2:诶嘿是什么意思啊
群友1:诶嘿
群友2:诶嘿是什么意思啊
群友1:诶嘿
群友2:诶嘿是什么意思啊
群友1:诶嘿
群友2:诶嘿是什么意思啊

每次有人说诶嘿时,就有人说诶嘿是什么意思啊,这组对话就可以看作规律性发言(表情包同理)

诶嘿是什么意思啊会被学习为诶嘿的回复4次,而诶嘿会被学习为诶嘿是什么意思啊的回复3次。

在默认配置中,某个回复需要学习次数达到4次后才会将其列为可选答案之一。

因此以后当有群友说诶嘿时,插件就会从数据中查找所以学习次数大于4的回复,发现目前有诶嘿是什么意思啊一种,就会有概率回复诶嘿是什么意思啊

简而言之,本插件就是一个高级一点的复读姬和QA问答人,如果你的群友没有明显的规律性发言,本插件的效果可能会比较差。

✨ 其他功能

插件还具备复读和主动发言的功能。

复读

顾名思义,就是复读。当群友复读达到一定次数时(默认为3),插件就会跟着复读。

以下情况即使达到次数也不会跟随复读:

主动发言

每隔一分钟,插件就会对群聊热度进行一次排行,从中选取一个群,随机发送一条或多条该群的历史发言。

当日内越活跃的群,就越容易在群冷场后触发主动发言来发癫暖场。

主动发言条件:

主动发言判断成功后,就会从该群的历史聊天记录从随机挑选消息进行发送。

🔧 配置项

本插件使用yml文件作为配置文件,因为需要做动态修改和分群配置,因此没有采用Nonebot的.env形式的配置。

yml配置文件位于Bot目录/data/learing_chat/learning_chat.yml中,不过个人更推荐你使用Web UI后台管理来修改配置。

每个配置项的作用都在后台管理页面中有较为详细的介绍,这里只列举几个:

配置项 默认值 说明
群聊学习开关 true 顾名思义
屏蔽词 [ ] 含有这些词的聊天记录不会进行学习
屏蔽用户 [ ] 与这些用户相关的聊天记录不会进行学习
跨群回复阈值 3 N个群均有相同的回复时,则作为全局回复
最高学习次数 6 学习的回复最高能累计到的次数
自定义词典 [ ] 添加自定义词语,让分词能够识别未收录的词汇
回复阈值 4 需要学多少次才会作为可选回复之一
复读阈值 3 群友复读多少次后才跟着复读
主动发言阈值 5 主动发言的概率

部分配置为全局配置,部分可设置分群配置,具体请在后台管理中查看。

🔑 后台管理

本插件提供了一个简易的Web UI后台管理,你可以在后台管理中进行:

Web UI默认启用,访问http://127.0.0.1:nb端口/learning_chat/login进行登录。

登录成功后会跳转至后台管理页面http://127.0.0.1:nb端口/learning_chat/admin

请在登入之后,修改默认的用户名、密码以及加密所用的token密钥。

👌 其他

💝 鸣谢