@WGzeyu 在 HanaMozeBot 中说:
有的,我mirai仍然跑的贼稳,不用签名没有验证码每次都是密码自动登录
就是退群事件收不了了,现在想调用发视频api又不敢更新
可以交流一下吗(
我想复活我的bot
@WGzeyu 在 HanaMozeBot 中说:
有的,我mirai仍然跑的贼稳,不用签名没有验证码每次都是密码自动登录
就是退群事件收不了了,现在想调用发视频api又不敢更新
可以交流一下吗(
我想复活我的bot
断断续续写了两三年的bot,但是最近没什么精力继续维护了,故开源希望能起到抛砖引玉的作用 现在还会有人用mirai吗
仓库链接为 HatoYuze/HanaMozeBot,是我的bot同一功能重构了三次的最终产物,同时在结构上进行了不断的改进(存疑),希望能帮到各位
Bot的人设名称是墨泽酱,是我之前受软糖酱影响开启的项目,也因此抄了部分功能过去
在签到界面会出现的人设图
UTC+8
的7~19点提供浅色ui,反之为深色ui),大约形如图下:你可能觉得这个页面有点熟悉,事实上这个也是抄的软糖的,但是没有找到软糖的浅色版本:(
这个是不是也怪怪的?这是因为我先画的浅色版本,深色版本是速通的换色版
项目的绘图部分都使用了
skiko
作为支持,对于老旧的x86
系统可能要遗憾离场了,因为万恶的skiko
自出生其就没有x86
的编译版
接下来是些比较无趣的纯文字返回的指令
random waifu
随机老婆,功能和别的差不多,会在本地缓存目标的头像,这里关于缓存部分好像有bug,但是能run就行random dick
随机几把,纯粹的随机数比较,纯粹的享受,random pc
随机胖次,依旧纯粹的字符串随机,词库来源于万能的群友letter
开字母功能,可以多群联机,但对于别名,词库需要创造者自行处理 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
静态字段即可
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()
....
}
}
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()
方法
com.github.hatoyuze.mozebot.hana.data
对插件所有的文件I/O操作的管理,当 isTesting
设置为 true
时,数据将存储为 系统临时目录 或 当前工作目录
该文件内还提供了对协程 launch async 操作的包装,当isTesting
时,所创建的协程将基于GlobalScope
反之则为PluginMain
修复了上诉问题,支持了分页等功能,由于是赶工写的,可能有一些问题,故暂时设成 pre-release
了 (;´д`)ゞ
详情可参见 -> https://github.com/HatoYuze/life-restart-bot/releases/tag/v0.6.0
@1002469706 可修改game.yml中的 userDailyGamingLimit 配置项,相关文档可见 https://github.com/HatoYuze/life-restart-bot/blob/master/docs/config-game-doc.md
やり直すんだ。そして、次はうまくやる。
基于 mirai-console
的人生重开模拟器一则
由于
skiko
不支持x86
系统,本插件无法在x86
位数系统中运行!
如果您须要在x86
系统中运行,请使用 Release v0.3.0
项目地址: https://github.com/HatoYuze/life-restart-bot
您可能需要前置插件 project-mirai/chat-command如果您愿意为本项目点一个
star
的话,就是对本项目最好的支持✨
skia
)可详见项目 README 中的描述
life-restart-bot-xxx-mirai2.jar
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
聊天记录内容:
自版本 0.4.0 以后,将默认使用图片结果返回,您也可以使用
remake text
获取聊天记录结果