@eric归梦 Global Moderator 表示那是什么(滑稽
StageGuard 发布的最佳帖子
-
RE: Mirai现在有保存聊天记录的插件吗
你可以尝试自己写一个:
bot.subscribeAlways { val imageLink: MutableMap<String> = mutableMapOf() //图片ID和链接 message.filterIsInstance<Image>().forEach { i -> imageLink.add(i.imageId to i.queryUrl()) } val serializedMessage = message.serializeToMiraiCode() // 序列化后的消息 }
-
SuperCourseTimetableBot - 基于 mirai-console 的 超级课表上课提醒QQ机器人插件
SuperCourseTimetableBot
一个基于 mirai 和 mirai-console 的 超级课程表 提醒 mirai-console 插件。
开源地址:https://github.com/KonnyakuCamp/SuperCourseTimetableBot
特性
-
Interactive Conversation Mode - 交互式聊天模式的用户接口
抛弃了传统的命令式交互,采用了更友好的交互式聊天模式。
-
允许用户更方便地修改时间表信息
可能超级课表上的作息时间表与学校不吻合,用户可以发送 修改时间表 来修改。
在 交互式聊天模式 的优势下,修改时间表的步骤变得非常容易。
-
允许用户自定义提醒时间
用户发送 修改提前提醒时间 即可通过步骤引导修改。
-
适配几乎所有使用超级课程表的高校
插件工作时,为每个正在使用的用户的高校分别计算当前周数和时间表,互不冲突。
-
数据库存储数据
使用 MySQL 或 MariaDB 存储用户的数据,当用户数量较多时依然保持良好的数据读取性能。
使用
部署
请前往 Github 主页查看详情。
贡献
欢迎任何
使用者大佬们贡献这个项目,你可以通过反馈 BUG,提出 Pull Request 申请,在这个主题下回复,或修改文档错别字来贡献这个项目。 -
-
OsuMapSuggester - 一个可以为 osu!standard 玩家推图的 mirai-console 插件
OsuMapSuggester
一个可以为 osu!standard 玩家推图的 mirai-console 插件。
查看开发进度:#1
特性
插件可以从 osu!standard 玩家的 Best Performance 分析 aim, speed and accuracy 能力和 PerformancePlus 以及其他因素来推断玩家的类型(跳跳人或串串人之类的)。
然后插件可以针对这个玩家的弱点或强项给这个玩家推荐特定类型的谱面。(未实现)
用户也可以通过以下方式来自定义谱面类型规则。
除此之外,还有其他以下特性:
- 查询玩家的Best Performance 并以图片显示。
- 和其他玩家对比Best Performance。
- 以 Full Combo 重新计算Best Performance 和排名。
- 显示玩家技能雷达图。
- 查询玩家最近一次成绩,包括类似 osu!lazer 的 Accuracy Heatmap 和 PP 曲线图等属性,并以图片显示。
- ...
开始
使用
如果你已经加了拥有此功能的 BOT 所在的群,想查看使用方法,请前往 Wiki 界面。
部署
准备工作
-
MySQL 或 MariaDB 数据库, 并需要为插件创建一个数据库。
-
有公网 IP 的服务器。
-
mirai-console 运行环境
运行
- 克隆并用 IntelliJ IDEA 打开工程. 同步 gradle 项目后运行
mirai/buildPlugin
gradle 任务来构建项目。
如果你不想用 IntelliJ IDEA,也可以克隆后在命令行运行
chmod +x gradlew && ./gradlew buildPlugin
指令来构建. 构建完成后的 jar 输出在build/mirai
.- 把构建好的 jar 包放入
<mirai-console目录>/plugins/
中,启动 mirai console,不出意外的话你会看到以下输出:
2021-07-26 20:22:37 E/OsuMapSuggester: Failed to connect database: com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: Access denied for user 'user'@'host' (using password: YES/NO). 2021-07-26 20:22:37 E/OsuMapSuggester: Retry to connect database in 10 seconds.
- 停止 mirai console, 编辑配置文件
config/OsuMapSuggester/OsuMapSuggester.Config.yml
qq: 1234567890 # 为这个 BOT 启用插件 database: address: localhost # 数据库地址 port: 3306 # 端口 user: root # 账号 password: testpwd # 密码 table: osu!beatmap suggester # 数据库名称(在准备工作第一步创建的数据库) maximumPoolSize: 10 osuAuth: clientId: 0 # OAuth clientId secret: '' # OAuth client secret # 回调地址,必须和 OAuth 设置的相同(不包含 /authCallback) # 注意这个地址是为了生成绑定账号的 OAuth 链接。 authCallbackBaseUrl: 'http://localhost:8081' v1ApiKey: '' # vi api 密钥 frontend: host: localhost # 前端主机地址,注意这个地址是实际主机地址 port: 8081 # 前端端口
- 保存,重新运行 mirai console,登录设定的账号后,看到以下输出则意味着工作正常:
2021-07-26 20:34:27 I/OsuMapSuggester: Subscribed group and friend messages.
问题反馈
这个项目仍在活跃开发中,并不稳定并且有许多 BUG。
如果你在使用过程中遇到了致命 BUG,请新建一个 Issue 并加上
bug
标签。同时欢迎 pr;或者如果有好的想法,也可以新建一个 Issue 加上
feature
标签。效果
-
最近成绩
-
与其他玩家最好成绩对比
-
自定义谱面规则
-
触发推图
-
在插件开启的前端创建 / 编辑自己的谱面集规则
许可证
OsuMapSuggester Copyright (C) 2021 StageGuard This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
mirai Copyright (C) 2019-2021 Mamoe Technologies and contributors. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
StageGuard 发布的最新帖子
-
为测试 mirai 添加外置 EncryptService
我们为 mirai 添加了新的协议内容,需要登录测试但被风控登不上时,就需要配置外置 EncryptService 辅助登录。
关闭 android target
PC 测试运行需要关闭 android target,在 mirai 项目根目录下创建
local.properties
,添加以下属性:projects.mirai-core.targets=jvm;!android
添加完后重新加载 gradle 项目即可。
配置程序运行入口
在
mirai-core/src/jvmTest/kotlin
sourceSet 中创建一个新的文件RunMirai.kt
作为程序入口。fun main() { prepareEnvironmentForDebugRun() val bot = DebugRunHelper.newBot(123456789L, BotAuthorization { session, info -> session.authByPassword("password") }) { protocol = BotConfiguration.MiraiProtocol.ANDROID_PHONE fileBasedDeviceInfo() } runBlocking { bot.login() bot.join() } }
prepareEnvironmentForDebugRun()
和DebugRunHelper.newBot()
是位于jvmTest
的工具函数。为测试模块添加依赖
以 fix-protocol-version 为例,从 release 下载 jar,放在
mirai-core/src/jvmTest/lib
中。编辑
mirai-core/build.gradle.kts
,找到以下配置代码:findByName("jvmTest")?.apply { dependencies { // ... } }
在
dependencies
里添加:implementation(files("src/jvmTest/lib/fix-protocol-version-1.9.6.mirai2.jar")) implementation("org.asynchttpclient:async-http-client:2.12.3") // fix-protocol-version 的依赖项
配置 EncryptService
编辑
RunMirai.kt
,在DebugRunHelper.newBot()
之前手动注册 EncryptService。import net.mamoe.mirai.utils.Services import xyz.cssxsh.mirai.tool.KFCFactory fun main() { prepareEnvironmentForDebugRun() Services.register( EncryptService.Factory::class.qualifiedName!!, KFCFactory::class.qualifiedName!!, ) { KFCFactory(File("...")) } val bot = DebugRunHelper.newBot(...) }
添加运行配置
IDEA 点击 Edit Configurations,添加运行配置
注意 classpath of module 选择
mirai.mirai-core.jvmTest
,main class 为RunMirai.kt
的类名。保存之后直接运行即可。
注意:若准备提交 Pull Request,请注意不要提交
mirai-core/build.gradle.kts
的修改,我们只是临时修改构建配置,目的是登录测试。