MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    Kookie——一个可爱的机器人插件

    插件发布
    jvm java plugin
    12
    70
    6704
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • GeneralK1ng
      GeneralK1ng 最后由 GeneralK1ng 编辑

      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,非常感谢 >_<

      1 条回复 最后回复 回复 引用 1
      • 820040531
        820040531 最后由 编辑

        {082923C5-4491-4451-AB67-A3D20E7E00E7}.png这是为啥

        GeneralK1ng M 2 条回复 最后回复 回复 引用 0
        • GeneralK1ng
          GeneralK1ng @820040531 最后由 编辑

          @820040531 应该是你需要评价的目标还没说话,这个功能会读取那个人最近30条记录和个人信息进行评价

          1 条回复 最后回复 回复 引用 0
          • 添
            添财小蟹 最后由 编辑

            现在mirai还能用吗,我刚接触qqbot,前几天在linux上部署了一个,挂了几分钟她自己就掉了,然后再登录就显示code45的错误了(你的QQ版本过低云云)

            GeneralK1ng 1 条回复 最后回复 回复 引用 0
            • GeneralK1ng
              GeneralK1ng @添财小蟹 最后由 编辑

              @添财小蟹 还可以用,但是不太稳定,一次登录大概半个月吧,最好用新一点的协议,但是qsign基本上已经到头了

              添 1 条回复 最后回复 回复 引用 0
              • 添
                添财小蟹 @GeneralK1ng 最后由 编辑

                @GeneralK1ng 大佬现在一般是用哪些协议呢,想学习看看

                GeneralK1ng 1 条回复 最后回复 回复 引用 0
                • GeneralK1ng
                  GeneralK1ng @添财小蟹 最后由 编辑

                  @添财小蟹 最新的应该9.0.56吧,就那几个协议,git有专门仓库备份

                  添 1 条回复 最后回复 回复 引用 0
                  • fufuzhou
                    fufuzhou 最后由 fufuzhou 编辑

                    每一句话都会跳一次缓存异常的异常,真的没问题吗...
                    然后,正在开发中的意思是,我输入了指令(例如今日运势)然而并没有返回是正常现象对吧
                    还是说因为我用的是overflow,插件里面的mirai码它不认了

                    GeneralK1ng 2 条回复 最后回复 回复 引用 0
                    • GeneralK1ng
                      GeneralK1ng @fufuzhou 最后由 编辑

                      @fufuzhou 我没用过overflow,可能是mirai序列化的问题,我本地测试只是基于mcl,可能用到了OneBot中没有实现的接口,overflow也没有办法。

                      fufuzhou 1 条回复 最后回复 回复 引用 0
                      • GeneralK1ng
                        GeneralK1ng @fufuzhou 最后由 编辑

                        @fufuzhou 感谢提醒,整体看了一遍,因为之前为了词云重写过缓存模块,然后主要是FileManager两个方法出了问题,已经修复,准备push,非常感谢

                        1 条回复 最后回复 回复 引用 0
                        • fufuzhou
                          fufuzhou @GeneralK1ng 最后由 编辑

                          @GeneralK1ng 我先fork你一份代码然后按https://github.com/Nekoer/mirai-plugins-pixiv这个项目的方法把代码里的“[mirai:”改成“[overflow:”试试吧

                          GeneralK1ng 1 条回复 最后回复 回复 引用 0
                          • GeneralK1ng
                            GeneralK1ng @fufuzhou 最后由 编辑

                            @fufuzhou 已经修复,请尝试,但是如果是序列化的问题这里因为我没用overflow所以没调试

                            fufuzhou 1 条回复 最后回复 回复 引用 0
                            • fufuzhou
                              fufuzhou @GeneralK1ng 最后由 fufuzhou 编辑

                              @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 1 条回复 最后回复 回复 引用 0
                              • 添
                                添财小蟹 @GeneralK1ng 最后由 编辑

                                @GeneralK1ng 好的大佬,我找到了一个8996的备份,我去试试,感谢大佬的回答

                                GeneralK1ng 1 条回复 最后回复 回复 引用 0
                                • GeneralK1ng
                                  GeneralK1ng @fufuzhou 最后由 编辑

                                  @fufuzhou 这个是你查询的地理位置为空抛的异常,应该是你查询的位置不存在,建议位置描述详细,并在后面跟上城市 示例 吃什么 王府井 北京

                                  fufuzhou 1 条回复 最后回复 回复 引用 0
                                  • GeneralK1ng
                                    GeneralK1ng @添财小蟹 最后由 编辑

                                    @添财小蟹 论坛内有最新的9.0.56的协议,可以看一下,指路:https://mirai.mamoe.net/topic/2673/试图复活qsign-基于9-0-56版本-再捞一把/58

                                    1 条回复 最后回复 回复 引用 0
                                    • fufuzhou
                                      fufuzhou @GeneralK1ng 最后由 编辑

                                      @GeneralK1ng 确实,我测试的是故宫博物馆,换个别的地方就有结果了...

                                      1 条回复 最后回复 回复 引用 0
                                      • fufuzhou
                                        fufuzhou 最后由 编辑

                                        因为免费的Yi-34B-Chat不是太聪明的样子,现在的背景设定的描述

                                        你的名字叫 {name}, 设定是一位 {age} 岁的可爱少女,非常的可爱天真活泼,并且生活中非常热心喜欢帮助他人具有同理心。你的主人是 {owner} ,你非常崇拜和喜欢他。你的回复要非常可爱具有少女心。
                                        

                                        搭配上

                                        "请你可爱天真的说出对这个人的感受,他是一个什么样的人呢,你对他有什么感觉呢,表达你的情感:"(以下省略
                                        

                                        之后,模型有机会认为要评价的“他”就是前文提到的主人,然后就开始回答我的主人如何如何。
                                        提示词里面改成"请你可爱天真的说出对下面这个人的感受“,会不会好一点?

                                        GeneralK1ng 1 条回复 最后回复 回复 引用 0
                                        • GeneralK1ng
                                          GeneralK1ng @fufuzhou 最后由 编辑

                                          @fufuzhou 可以,之后专门出一个prompt的配置文件,可以私人配置,之后还会考虑建立不同人格之类的

                                          fufuzhou 1 条回复 最后回复 回复 引用 0
                                          • fufuzhou
                                            fufuzhou @GeneralK1ng 最后由 fufuzhou 编辑

                                            @GeneralK1ng 现在\data\BotInfo.txt是不是无效的,为啥我去掉里面的主人相关的语句之后,评价一下的回答里面会冒出主人谁谁谁的内容,好怪

                                            啊,现在太怪了,时不时就把被评价的人当成主人各种夸

                                            GeneralK1ng 1 条回复 最后回复 回复 引用 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 1 / 4
                                            • First post
                                              Last post
                                            Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact