MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接
    1. 主页
    2. HatoYuze
    • 资料
    • 关注 0
    • 粉丝 0
    • 主题 2
    • 帖子 14
    • 最佳 5
    • 有争议的 0
    • 群组 1

    HatoYuze

    @HatoYuze

    9
    声望
    24
    资料浏览
    14
    帖子
    0
    粉丝
    0
    关注
    注册时间 最后登录

    HatoYuze 取消关注 关注
    CaptchaFree

    HatoYuze 发布的最佳帖子

    • 人生重开模拟器

      やり直すんだ。そして、次はうまくやる。

      life-restart-bot

      基于 mirai-console 的人生重开模拟器一则

      由于 skiko 不支持 x86 系统,本插件无法在 x86 位数系统中运行!
      如果您须要在 x86 系统中运行,请使用 Release v0.3.0

      项目地址: https://github.com/HatoYuze/life-restart-bot
      您可能需要前置插件 project-mirai/chat-command

      如果您愿意为本项目点一个 star 的话,就是对本项目最好的支持✨

      支持功能

      • 支持自定义并添加模拟器事件
      • 在群聊/好友 中使用指令模拟重开
      • 支持绘图返回功能(使用
        skia)

      如何使用?

      可详见项目 README 中的描述

      • 下载 release 中的 life-restart-bot-xxx-mirai2.jar
      • 随后丢进你的 mcl 的 plugins 中
      • 对目标授予 com.github.hatoyuze.restarter.life-restarter:command-execute 权限
        在授予权限后,发送指令 /remake start 即可开始人生模拟器

      如果您想要添加自定义事件,可前往 /mcl/config/com.github.hatoyuze.restarter.life-restarter/register.yml 文件

      将文件的 enabledCustomizedEvent 设定为 true
      随后按照所要求的格式填写文件即可,例如

      events:
        - id: 50001
          event: 你在使用社交软件水群的时候,发现有群友在使用聊天机器人。
          include: AGE<60
          exclude: 'EVT![50001,50002]'
          postEvent: 你感到很好奇。
          branch:
            - '(INT>5)&(MNY>3):50002'
        - id: 50002
          event: 你开始自己学着编写自己的 QQ 机器人, 由于各种各样的费用你用了很多钱。
          NoRandom: true
          grade: 1
          effect: 
            MNY: -1
            INT: 1
            SPR: 1
      
      enableAge:
        12..=50:
          - 50001
      

      使用例:

      dcb0b8af-4de3-4845-9f98-2857df9cf9f3-image.png
      53227d9b-3dc2-4be0-8f9c-3b86a2fad020-image.png
      聊天记录内容:

      自版本 0.4.0 以后,将默认使用图片结果返回,您也可以使用 remake text 获取聊天记录结果
      6911321c-0e23-480c-bb82-a59010e40317-image.png
      71d5ef35-aa3b-4322-b65e-40b6e35f62d8-image.png

      发布在 插件发布
      HatoYuze
      HatoYuze
    • HanaMozeBot

      断断续续写了两三年的bot,但是最近没什么精力继续维护了,故开源希望能起到抛砖引玉的作用 现在还会有人用mirai吗

      仓库链接为 HatoYuze/HanaMozeBot,是我的bot同一功能重构了三次的最终产物,同时在结构上进行了不断的改进(存疑),希望能帮到各位

      Bot的人设名称是墨泽酱,是我之前受软糖酱影响开启的项目,也因此抄了部分功能过去

      9f713fee-a495-4dcb-b01b-1dce247dd7fa-moze_sig.png 在签到界面会出现的人设图

      项目支持

      • 一个账号系统(维护有签到,货币,经验值等杂七杂八的功能,这个也是抄的软糖酱)
        为签到系统提供了一个图形化页面(在UTC+8的7~19点提供浅色ui,反之为深色ui),大约形如图下:
        69064419-f48e-4b13-83a0-4dc7463c26d7-1756408790718.jpg
        926d3fd0-9124-4693-a8fe-ac0d9a068d13-1756408917990.jpg

      你可能觉得这个页面有点熟悉,事实上这个也是抄的软糖的,但是没有找到软糖的浅色版本:(

      • 今日诗词(使用 www.jinrishici.com 的api)
        44e5847a-58dc-4013-a112-8d8665493336-1756408987473.jpg
        1320586e-7465-45f1-ac83-10b48b6d152a-1756409031967.jpg

      这个是不是也怪怪的?这是因为我先画的浅色版本,深色版本是速通的换色版

      项目的绘图部分都使用了 skiko 作为支持,对于老旧的x86系统可能要遗憾离场了,因为万恶的skiko自出生其就没有x86的编译版

      接下来是些比较无趣的纯文字返回的指令

      • random waifu 随机老婆,功能和别的差不多,会在本地缓存目标的头像,这里关于缓存部分好像有bug,但是能run就行
      • random dick 随机几把,纯粹的随机数比较,纯粹的享受,作为我写了3年从未移除的功能
      • random pc 随机胖次,依旧纯粹的字符串随机,词库来源于万能的群友
      • letter 开字母功能,可以多群联机,但对于别名,词库需要创造者自行处理 (我没测试过同时调用会不会造成资源竞争的bug)
      • drawer color 画一个色块出来,不提供参数时随机一个rgb值,支持hex和rgb格式(当然还有透明度参数,但默认为255)
      • cryptography 对同名图的套壳,但仅支持sha hmac的加密 ,我也不知道有什么用
      • sign 上文的签到
      • poem 上文的今日诗词

      用户账户内部使用了 ktorm 作为数据库层,可由 config/database.yml 设置内容, 连接好数据库后会创建一个名为 moze_users 的表,详情可见 data/database/UserDataStorage.kt

      还有我用于凌晨0点自动更新数据的DailyRefreshTasks轮子

      如何使用?

      和普通插件一样使用,在今日诗词部分的token会在初始化时调用 https://v2.jinrishici.com/token 并自动存储于 data/runtime_command_data ,在下一次调用时优先访问存储的token(有关token可参考今日诗词的文档,但这个api不要多用,容易被今日诗词风控)

      data/runtime_command_data.yml 中的大多数据是用于存储和指令有关的数据的,其中大多数据为自动刷新的数据,如果您需要更改里面的内容,请保证操作时间在凌晨过后,避免忘记刷新其内部的数据

      同时,本插件还内置了一套 project-mirai/chat-command/ 实现,用于将 /mz 的前缀转换为 / 并执行 mirai-console-command 的匹配工作,这里面可能写得不够完善,如果您的机器人已经装上了 chat-command 插件,可能导致一个指令被重复匹配,您可以通过删除 PluginMain.kt#L40 的语句 eventChannel.commandSubscribe() 重新编译解决问题

      项目的 gradle-wrapper.properties 中的 gradle 为原生地址,可能较慢,建议将其替换为国内镜像 https\://mirrors.cloud.tencent.com/gradle/ 加快下载速度

      个人认为项目的码风还算健康,如果有希望入坑mirai机器人的新人,也可以在本插件中进行进一步扩展作为自己的第一步

      项目内部基于反射,对 command目录下所有有 @CommandImpl 注解的对象自动注册为指令系统,在 java 指令类中添加这个注解同样也可以自动注册,只需要保证这个类是单例模式且提供 INSTANCE 静态字段即可

      部分内部轮子的说明

      RateLimiter

      com.github.hatoyuze.mozebot.hana.command

      一个简单的限制频率的实现,内部使用 LinkedBlockingQueue实现,先发送(调用 submit 方法)的任务将得到优先执行

      • maxConcurrentTasks 最多同时进行的操作数,每一个操作都使用协程相互独立
      • timeWindowMillis 每一次操作的间隔时间,单位为毫秒

      方法submit

      • task 将会执行的任务,返回的内容也将作为函数的返回值
      • onRemove 当内部等待 60s 后仍未进入等待队列,将调用该参数,其默认行为为抛出错误

      调用示例:

      object PoemCommand : SimpleCommand(PluginMain, "poem") {
          private val limiter = RateLimiter<PoemSentenceData>(5, 250)
      
          @Handler
          suspend fun handleCommand(commandContext: CommandContext) = commandContext.run {
              val data = limiter.submit(task = {
                  DailyPoemApi.getDailyPoemData() // 将被限制的任务,可用此来进行限流
              }).await()
              ....
          }
      }
      

      DailyRefreshTasks

      com.github.hatoyuze.mozebot.hana.data

      内建有注解Refresh,可用于自动更新字段

      使用 Refresh 标注自动更新的目标KProperty1,此目标必须为可变参数(var)

      之后的每一次数据都将于每日的0时准点,修改为初始化时的初始数据

      当目标未初始化时,始终设置为null

      你需要通过 DailyRefreshTasks.initRefresh 加载后,功能才会生效,这也意味着数据的载体应该继承自DailyRefreshTasks

      示例:

      object Example : DailyDailyRefreshTasks {
           init {
               initRefresh()
           }
      
           @Refresh
           var data: Int by lazy { 0 }
       }
      

      它也可以与 mirai-console 的 AutoSavePluginData 混合使用,上诉描述的初始数据将变为by value 块内容
      对于 List 的数据,将改为调用 clear() 方法

      ResourceManager

      com.github.hatoyuze.mozebot.hana.data

      对插件所有的文件I/O操作的管理,当 isTesting 设置为 true 时,数据将存储为 系统临时目录 或 当前工作目录
      该文件内还提供了对协程 launch async 操作的包装,当isTesting时,所创建的协程将基于GlobalScope反之则为PluginMain

      发布在 插件发布
      HatoYuze
      HatoYuze
    • RE: 人生重开模拟器

      喜报:成功支持绘图功能~
      测了一遍没啥问题,但是不排除并发的时候可能会有一些绘图错误
      晚点儿再看吧ᓚᘏᗢ

      发布在 插件发布
      HatoYuze
      HatoYuze
    • RE: 人生重开模拟器

      上述 bug 已被修复~
      欢迎各位更新资源 -> Version 0.5.0

      发布在 插件发布
      HatoYuze
      HatoYuze
    • RE: 人生重开模拟器

      @1002469706 关于天赋的问题会在下个版本进行处理,也就是使这个天赋无法再次被抽中
      不过参数这个问题我也不知道为什么

      发布在 插件发布
      HatoYuze
      HatoYuze

    HatoYuze 发布的最新帖子

    • HanaMozeBot

      断断续续写了两三年的bot,但是最近没什么精力继续维护了,故开源希望能起到抛砖引玉的作用 现在还会有人用mirai吗

      仓库链接为 HatoYuze/HanaMozeBot,是我的bot同一功能重构了三次的最终产物,同时在结构上进行了不断的改进(存疑),希望能帮到各位

      Bot的人设名称是墨泽酱,是我之前受软糖酱影响开启的项目,也因此抄了部分功能过去

      9f713fee-a495-4dcb-b01b-1dce247dd7fa-moze_sig.png 在签到界面会出现的人设图

      项目支持

      • 一个账号系统(维护有签到,货币,经验值等杂七杂八的功能,这个也是抄的软糖酱)
        为签到系统提供了一个图形化页面(在UTC+8的7~19点提供浅色ui,反之为深色ui),大约形如图下:
        69064419-f48e-4b13-83a0-4dc7463c26d7-1756408790718.jpg
        926d3fd0-9124-4693-a8fe-ac0d9a068d13-1756408917990.jpg

      你可能觉得这个页面有点熟悉,事实上这个也是抄的软糖的,但是没有找到软糖的浅色版本:(

      • 今日诗词(使用 www.jinrishici.com 的api)
        44e5847a-58dc-4013-a112-8d8665493336-1756408987473.jpg
        1320586e-7465-45f1-ac83-10b48b6d152a-1756409031967.jpg

      这个是不是也怪怪的?这是因为我先画的浅色版本,深色版本是速通的换色版

      项目的绘图部分都使用了 skiko 作为支持,对于老旧的x86系统可能要遗憾离场了,因为万恶的skiko自出生其就没有x86的编译版

      接下来是些比较无趣的纯文字返回的指令

      • random waifu 随机老婆,功能和别的差不多,会在本地缓存目标的头像,这里关于缓存部分好像有bug,但是能run就行
      • random dick 随机几把,纯粹的随机数比较,纯粹的享受,作为我写了3年从未移除的功能
      • random pc 随机胖次,依旧纯粹的字符串随机,词库来源于万能的群友
      • letter 开字母功能,可以多群联机,但对于别名,词库需要创造者自行处理 (我没测试过同时调用会不会造成资源竞争的bug)
      • drawer color 画一个色块出来,不提供参数时随机一个rgb值,支持hex和rgb格式(当然还有透明度参数,但默认为255)
      • cryptography 对同名图的套壳,但仅支持sha hmac的加密 ,我也不知道有什么用
      • sign 上文的签到
      • poem 上文的今日诗词

      用户账户内部使用了 ktorm 作为数据库层,可由 config/database.yml 设置内容, 连接好数据库后会创建一个名为 moze_users 的表,详情可见 data/database/UserDataStorage.kt

      还有我用于凌晨0点自动更新数据的DailyRefreshTasks轮子

      如何使用?

      和普通插件一样使用,在今日诗词部分的token会在初始化时调用 https://v2.jinrishici.com/token 并自动存储于 data/runtime_command_data ,在下一次调用时优先访问存储的token(有关token可参考今日诗词的文档,但这个api不要多用,容易被今日诗词风控)

      data/runtime_command_data.yml 中的大多数据是用于存储和指令有关的数据的,其中大多数据为自动刷新的数据,如果您需要更改里面的内容,请保证操作时间在凌晨过后,避免忘记刷新其内部的数据

      同时,本插件还内置了一套 project-mirai/chat-command/ 实现,用于将 /mz 的前缀转换为 / 并执行 mirai-console-command 的匹配工作,这里面可能写得不够完善,如果您的机器人已经装上了 chat-command 插件,可能导致一个指令被重复匹配,您可以通过删除 PluginMain.kt#L40 的语句 eventChannel.commandSubscribe() 重新编译解决问题

      项目的 gradle-wrapper.properties 中的 gradle 为原生地址,可能较慢,建议将其替换为国内镜像 https\://mirrors.cloud.tencent.com/gradle/ 加快下载速度

      个人认为项目的码风还算健康,如果有希望入坑mirai机器人的新人,也可以在本插件中进行进一步扩展作为自己的第一步

      项目内部基于反射,对 command目录下所有有 @CommandImpl 注解的对象自动注册为指令系统,在 java 指令类中添加这个注解同样也可以自动注册,只需要保证这个类是单例模式且提供 INSTANCE 静态字段即可

      部分内部轮子的说明

      RateLimiter

      com.github.hatoyuze.mozebot.hana.command

      一个简单的限制频率的实现,内部使用 LinkedBlockingQueue实现,先发送(调用 submit 方法)的任务将得到优先执行

      • maxConcurrentTasks 最多同时进行的操作数,每一个操作都使用协程相互独立
      • timeWindowMillis 每一次操作的间隔时间,单位为毫秒

      方法submit

      • task 将会执行的任务,返回的内容也将作为函数的返回值
      • onRemove 当内部等待 60s 后仍未进入等待队列,将调用该参数,其默认行为为抛出错误

      调用示例:

      object PoemCommand : SimpleCommand(PluginMain, "poem") {
          private val limiter = RateLimiter<PoemSentenceData>(5, 250)
      
          @Handler
          suspend fun handleCommand(commandContext: CommandContext) = commandContext.run {
              val data = limiter.submit(task = {
                  DailyPoemApi.getDailyPoemData() // 将被限制的任务,可用此来进行限流
              }).await()
              ....
          }
      }
      

      DailyRefreshTasks

      com.github.hatoyuze.mozebot.hana.data

      内建有注解Refresh,可用于自动更新字段

      使用 Refresh 标注自动更新的目标KProperty1,此目标必须为可变参数(var)

      之后的每一次数据都将于每日的0时准点,修改为初始化时的初始数据

      当目标未初始化时,始终设置为null

      你需要通过 DailyRefreshTasks.initRefresh 加载后,功能才会生效,这也意味着数据的载体应该继承自DailyRefreshTasks

      示例:

      object Example : DailyDailyRefreshTasks {
           init {
               initRefresh()
           }
      
           @Refresh
           var data: Int by lazy { 0 }
       }
      

      它也可以与 mirai-console 的 AutoSavePluginData 混合使用,上诉描述的初始数据将变为by value 块内容
      对于 List 的数据,将改为调用 clear() 方法

      ResourceManager

      com.github.hatoyuze.mozebot.hana.data

      对插件所有的文件I/O操作的管理,当 isTesting 设置为 true 时,数据将存储为 系统临时目录 或 当前工作目录
      该文件内还提供了对协程 launch async 操作的包装,当isTesting时,所创建的协程将基于GlobalScope反之则为PluginMain

      发布在 插件发布
      HatoYuze
      HatoYuze
    • RE: 人生重开模拟器

      修复了上诉问题,支持了分页等功能,由于是赶工写的,可能有一些问题,故暂时设成 pre-release 了 (;´д`)ゞ
      详情可参见 -> https://github.com/HatoYuze/life-restart-bot/releases/tag/v0.6.0

      发布在 插件发布
      HatoYuze
      HatoYuze
    • RE: 人生重开模拟器

      @1002469706 关于天赋的问题会在下个版本进行处理,也就是使这个天赋无法再次被抽中
      不过参数这个问题我也不知道为什么

      发布在 插件发布
      HatoYuze
      HatoYuze
    • RE: 人生重开模拟器

      @firefairy 你开个issue吧* 我有点懒了,说不定你开的这个issue可以鼓励一下我

      发布在 插件发布
      HatoYuze
      HatoYuze
    • RE: 人生重开模拟器

      @1002469706 可修改game.yml中的 userDailyGamingLimit 配置项,相关文档可见 https://github.com/HatoYuze/life-restart-bot/blob/master/docs/config-game-doc.md

      发布在 插件发布
      HatoYuze
      HatoYuze
    • RE: 人生重开模拟器

      上述 bug 已被修复~
      欢迎各位更新资源 -> Version 0.5.0

      发布在 插件发布
      HatoYuze
      HatoYuze
    • RE: 人生重开模拟器

      @LemonNeko 没有找到知名度高的好感度插件,您能举个例子吗
      或者我给插件提供几个对外接口(

      发布在 插件发布
      HatoYuze
      HatoYuze
    • RE: 人生重开模拟器

      @LJ-XD 我自己没群呢( 你可以去 572360632 提,我也在群里面(
      至于快乐值特别大那个是因为修仙事件的设置好像就是这样的,越老越开心(?

      发布在 插件发布
      HatoYuze
      HatoYuze
    • RE: 人生重开模拟器

      喜报:成功支持绘图功能~
      测了一遍没啥问题,但是不排除并发的时候可能会有一些绘图错误
      晚点儿再看吧ᓚᘏᗢ

      发布在 插件发布
      HatoYuze
      HatoYuze
    • RE: 人生重开模拟器

      @LJ-XD 已修复~~
      可见最新 release Version 0.3.0
      同时也把分配属性点给支持了!

      发布在 插件发布
      HatoYuze
      HatoYuze