Kookie——一个可爱的机器人插件
-
Kookie
基于
Mirai
框架的群聊机器人,还在开发中...kookie的诞生起源于写代码时的无聊,就像写一个玩一下,并且在新建文件夹的时候恰巧正在吃饼干,遂诞生了Kookie,希望各位喜欢她。
本次开源一部分插件功能。
仓库地址: https://github.com/GeneralK1ng/Kookies
欢迎各位PR,欢迎一起交流。
Features
答案之书
群聊内发送答案之书 <询问内容>
今日运势
群聊内发送今日运势
评价一下
群聊内发送评价一下 <@想要评价的目标>
吃什么
群聊内发送吃什么 <具体地址> <city>
(如果地址非常具体可以不加city
)说一下
群聊内发送说一下 <需要说的文字>
,会发送语音,语音模块需要自己部署推理服务器。今日老婆
群聊内发送今日老婆
代码运行
群聊内发送代码运行 <语言> <代码>
此部分用的runoob的API,自己去拿一个token即可使用。今日词云
群聊内发送今日词云
昨日词云
群聊内发送昨日词云
地狱笑话
群聊内发送地狱笑话
目前是英文的,后面考虑能不能翻译,但是其实很多笑话是欧美梗,如果翻译过来的话,可能就没内味了。
后面的功能还在想,语音功能部分比较的复杂,需要另外自己部署推理服务器,并且自己使用模型,而且还需要自己编译ffmpeg,这部分代码写的比较死,这部分需要一个详细的文档,但是本人学生空余时间并不是很多,所以后续会不定期开发。
需要填写的API
百度
大模型采用的是百度的
Yi-34B-Chat
的中文模型,选择这个的理由是首先中文识别以及短回复比较适合群聊场景,其次是调用它不要钱(bushi,对学生党比较友好。去 百度智能云控制台 新建一个应用,获取
API key
和Secret Key
填入config.json
即可高德地图
主要是吃什么功能,需要用到高德的周边搜索以及地理坐标转换。\
去 高德开放平台 建立一个应用,然后复制
API Key
填入即可,注意周边搜索免费额度只能每天免费100次数,所以建议节省一些,后续会开发一个缓存池来延长每天的时间,咕咕。语音功能
这部分需要自己搭建推理服务器并且还涉及本地的ffmpeg的编译,比较的麻烦,所以因为时间限制暂且不表。
Runoob
需要去菜鸟教程的在线编译器抓包拿一下token,这里感谢菜鸟教程的无私奉献()
Config
在kookie插件加载成功后会在
./kookie/
目录下生成config.json
文件,需要手动填写一些相关参数:{ "botInfo": { "birthday": "2024-05-20", "name": "Kookie", "owner": "your owner", "age": 16, "baiduApiConfig": { "apiKey": "your apiKey", "secretKey": "your secretKey" }, "gaodeApiConfig": { "apiKey": "your apiKey" }, "voiceApiConfig": { "apiUrl": "your apiUrl", "ref_audio_path": "your ref_audio_path", "gpt_weights_path": "your gpt_weights_path", "sovits_weights_path": "your sovits_weights_path" }, "runoobToken": "your runoobToken" }, "maxTodayGirlTimes": 3, "adminList": [ 123456789, 987654321 ], "userBlackList": [ 11111111, 22222222 ], "enableGroupList": [ { "id": 666666, "tag": [ "test1", "test2" ] }, { "id": 777777, "tag": [ "test3", "test4" ] } ] }
voiceApiConfig
目前可以先不填写,在后续文档跟进后再使用,这部分只是关于语音推理的。然后黑名单和允许的群聊这两部分是权限管理必须需要的,所以一定要填写!
请注意如果词云采用的字体是宋体,如果服务端没有安装会导致图片生成失败!!!
字体下载请到 fonts 这个文件夹下下载然后安装,目前还在研究java的字体安装,如果无法自动安装就手动下载安装吧。
如果可以的话,请点一个star,非常感谢 >_<
-
这是为啥
-
@820040531 应该是你需要评价的目标还没说话,这个功能会读取那个人最近30条记录和个人信息进行评价
-
现在mirai还能用吗,我刚接触qqbot,前几天在linux上部署了一个,挂了几分钟她自己就掉了,然后再登录就显示code45的错误了(你的QQ版本过低云云)
-
@添财小蟹 还可以用,但是不太稳定,一次登录大概半个月吧,最好用新一点的协议,但是qsign基本上已经到头了
-
@GeneralK1ng 大佬现在一般是用哪些协议呢,想学习看看
-
@添财小蟹 最新的应该9.0.56吧,就那几个协议,git有专门仓库备份
-
每一句话都会跳一次缓存异常的异常,真的没问题吗...
然后,正在开发中的意思是,我输入了指令(例如今日运势)然而并没有返回是正常现象对吧
还是说因为我用的是overflow,插件里面的mirai码它不认了 -
@fufuzhou 我没用过overflow,可能是mirai序列化的问题,我本地测试只是基于mcl,可能用到了OneBot中没有实现的接口,overflow也没有办法。
-
@fufuzhou 感谢提醒,整体看了一遍,因为之前为了词云重写过缓存模块,然后主要是FileManager两个方法出了问题,已经修复,准备push,非常感谢
-
@GeneralK1ng 我先fork你一份代码然后按https://github.com/Nekoer/mirai-plugins-pixiv这个项目的方法把代码里的“[mirai:”改成“[overflow:”试试吧
-
@fufuzhou 已经修复,请尝试,但是如果是序列化的问题这里因为我没用overflow所以没调试
-
@GeneralK1ng 更新了你最新的jar就看起来一切正常了,和我猜测的overflow码没啥关系
新的问题:
2024-07-05 13:09:53 I/com.generalk1ng.Kookie: 吃什么, 调用者:real_zyf 2024-07-05 13:09:53 E/com.generalk1ng.Kookie: Exception in coroutine Plugin com.generalk1ng.Kookie of com.generalk1ng.Kookie java.lang.NullPointerException at Kookies-0.1.7.mirai2.jar//org.kookies.mirai.plugin.service.Impl.ConvenienceServiceImpl.getAddressResponse(ConvenienceServiceImpl.java:404) at Kookies-0.1.7.mirai2.jar//org.kookies.mirai.plugin.service.Impl.ConvenienceServiceImpl.eatWhat(ConvenienceServiceImpl.java:71) at Kookies-0.1.7.mirai2.jar//org.kookies.mirai.plugin.Kookie.lambda$onEnable$0(Kookie.java:128) at net.mamoe.mirai.event.EventChannel$subscribeAlways$2$1.invoke(EventChannel.kt:605) at net.mamoe.mirai.event.EventChannel$subscribeAlways$2$1.invoke(EventChannel.kt:605) at kotlinx.coroutines.InterruptibleKt.runInterruptibleInExpectedContext(Interruptible.kt:51) at kotlinx.coroutines.InterruptibleKt.access$runInterruptibleInExpectedContext(Interruptible.kt:1) at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invokeSuspend(Interruptible.kt:43) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42) at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
-
@GeneralK1ng 好的大佬,我找到了一个8996的备份,我去试试,感谢大佬的回答
-
@fufuzhou 这个是你查询的地理位置为空抛的异常,应该是你查询的位置不存在,建议位置描述详细,并在后面跟上城市 示例
吃什么 王府井 北京
-
@添财小蟹 论坛内有最新的9.0.56的协议,可以看一下,指路:https://mirai.mamoe.net/topic/2673/试图复活qsign-基于9-0-56版本-再捞一把/58
-
@GeneralK1ng 确实,我测试的是故宫博物馆,换个别的地方就有结果了...
-
因为免费的Yi-34B-Chat不是太聪明的样子,现在的背景设定的描述
你的名字叫 {name}, 设定是一位 {age} 岁的可爱少女,非常的可爱天真活泼,并且生活中非常热心喜欢帮助他人具有同理心。你的主人是 {owner} ,你非常崇拜和喜欢他。你的回复要非常可爱具有少女心。
搭配上
"请你可爱天真的说出对这个人的感受,他是一个什么样的人呢,你对他有什么感觉呢,表达你的情感:"(以下省略
之后,模型有机会认为要评价的“他”就是前文提到的主人,然后就开始回答我的主人如何如何。
提示词里面改成"请你可爱天真的说出对下面这个人的感受“,会不会好一点? -
@fufuzhou 可以,之后专门出一个prompt的配置文件,可以私人配置,之后还会考虑建立不同人格之类的
-
@GeneralK1ng 现在\data\BotInfo.txt是不是无效的,为啥我去掉里面的主人相关的语句之后,评价一下的回答里面会冒出主人谁谁谁的内容,好怪
啊,现在太怪了,时不时就把被评价的人当成主人各种夸