讓Bot學習群友的發言和表情符號!
一個能讓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
進行登入。
chat
admin
登入成功後會跳轉至後台管理頁面http://127.0.0.1:nb端口/learning_chat/admin
。
請在登入之後,修改預設的使用者名稱、密碼以及加密所使用的token金鑰。
pip install ujson
pip install jieba_fast
DEBUG
等級日誌可以查看到插件的學習和回覆過程。