From f0eccaedafb94c2b4cd01848e357e02c2c6993a9 Mon Sep 17 00:00:00 2001 From: jie65535 Date: Mon, 10 Jan 2022 18:25:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=8F=92=E4=BB=B6=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 6 +- settings.gradle.kts | 2 +- .../example/mirai/plugin/JavaPluginMain.java | 51 ---------- src/main/kotlin/JHRCommand.kt | 24 +++++ src/main/kotlin/JHRPluginConfig.kt | 14 +++ src/main/kotlin/JHRPluginData.kt | 12 +++ src/main/kotlin/JHorseRacing.kt | 70 ++++++++++++++ src/main/kotlin/PluginMain.kt | 93 ------------------- ...t.mamoe.mirai.console.plugin.jvm.JvmPlugin | 2 +- src/test/kotlin/RunMirai.kt | 10 +- 10 files changed, 128 insertions(+), 156 deletions(-) delete mode 100644 src/main/java/org/example/mirai/plugin/JavaPluginMain.java create mode 100644 src/main/kotlin/JHRCommand.kt create mode 100644 src/main/kotlin/JHRPluginConfig.kt create mode 100644 src/main/kotlin/JHRPluginData.kt create mode 100644 src/main/kotlin/JHorseRacing.kt delete mode 100644 src/main/kotlin/PluginMain.kt diff --git a/build.gradle.kts b/build.gradle.kts index 04a890b..12270f5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,12 +1,12 @@ plugins { - val kotlinVersion = "1.4.30" + val kotlinVersion = "1.5.30" kotlin("jvm") version kotlinVersion kotlin("plugin.serialization") version kotlinVersion - id("net.mamoe.mirai-console") version "2.6.6" + id("net.mamoe.mirai-console") version "2.9.2" } -group = "org.example" +group = "top.jie65535" version = "0.1.0" repositories { diff --git a/settings.gradle.kts b/settings.gradle.kts index 064e7f6..48a267a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -6,4 +6,4 @@ pluginManagement { maven("https://dl.bintray.com/kotlin/kotlin-eap") } } -rootProject.name = "mirai-console-plugin-template" \ No newline at end of file +rootProject.name = "mirai-console-jhr-plugin" \ No newline at end of file diff --git a/src/main/java/org/example/mirai/plugin/JavaPluginMain.java b/src/main/java/org/example/mirai/plugin/JavaPluginMain.java deleted file mode 100644 index 6bba1d2..0000000 --- a/src/main/java/org/example/mirai/plugin/JavaPluginMain.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.example.mirai.plugin; - -import net.mamoe.mirai.console.plugin.jvm.JavaPlugin; -import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription; -import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescriptionBuilder; -import net.mamoe.mirai.event.Event; -import net.mamoe.mirai.event.EventChannel; -import net.mamoe.mirai.event.GlobalEventChannel; -import net.mamoe.mirai.event.events.FriendMessageEvent; -import net.mamoe.mirai.event.events.GroupMessageEvent; - - -/** - * 使用 Java 请把 - * {@code /src/main/resources/META-INF.services/net.mamoe.mirai.console.plugin.jvm.JvmPlugin} - * 文件内容改成 {@code org.example.mirai.plugin.JavaPluginMain}
- * 也就是当前主类全类名 - * - * 使用 Java 可以把 kotlin 源集删除且不会对项目有影响 - * - * 在 {@code settings.gradle.kts} 里改构建的插件名称、依赖库和插件版本 - * - * 在该示例下的 {@link JvmPluginDescription} 修改插件名称,id 和版本等 - * - * 可以使用 {@code src/test/kotlin/RunMirai.kt} 在 IDE 里直接调试, - * 不用复制到 mirai-console-loader 或其他启动器中调试 - */ - -public final class JavaPluginMain extends JavaPlugin { - public static final JavaPluginMain INSTANCE = new JavaPluginMain(); - private JavaPluginMain() { - super(new JvmPluginDescriptionBuilder("org.example.mirai-example", "0.1.0") - .info("EG") - .build()); - } - - @Override - public void onEnable() { - getLogger().info("日志"); - EventChannel eventChannel = GlobalEventChannel.INSTANCE.parentScope(this); - eventChannel.subscribeAlways(GroupMessageEvent.class, g -> { - //监听群消息 - getLogger().info(g.getMessage().contentToString()); - - }); - eventChannel.subscribeAlways(FriendMessageEvent.class, f -> { - //监听好友消息 - getLogger().info(f.getMessage().contentToString()); - }); - } -} diff --git a/src/main/kotlin/JHRCommand.kt b/src/main/kotlin/JHRCommand.kt new file mode 100644 index 0000000..48ff60b --- /dev/null +++ b/src/main/kotlin/JHRCommand.kt @@ -0,0 +1,24 @@ +package top.jie65535.jhr + +import net.mamoe.mirai.console.command.CommandSender +import net.mamoe.mirai.console.command.CompositeCommand + +object JHRCommand : CompositeCommand( + JHorseRacing, "jhr", + description = "HorseRacing Commands" +) { + @SubCommand + @Deprecated("开启赛马") + suspend fun CommandSender.enable(group: Long) { + if (JHRPluginConfig.enabledGroups.indexOf(group) == -1) + JHRPluginConfig.enabledGroups.add(group) + sendMessage("OK") + } + + @SubCommand + @Deprecated("开启赛马") + suspend fun CommandSender.disable(group: Long) { + JHRPluginConfig.enabledGroups.remove(group) + sendMessage("OK") + } +} \ No newline at end of file diff --git a/src/main/kotlin/JHRPluginConfig.kt b/src/main/kotlin/JHRPluginConfig.kt new file mode 100644 index 0000000..f91cf62 --- /dev/null +++ b/src/main/kotlin/JHRPluginConfig.kt @@ -0,0 +1,14 @@ +package top.jie65535.jhr + +import net.mamoe.mirai.console.data.AutoSavePluginConfig +import net.mamoe.mirai.console.data.ValueDescription +import net.mamoe.mirai.console.data.value + +object JHRPluginConfig : AutoSavePluginConfig("HorseRacingPluginConfig") { + + @ValueDescription("签到奖励") + val signInReward by value(5000) + + @ValueDescription("启用赛马的群") + var enabledGroups: MutableList by value() +} \ No newline at end of file diff --git a/src/main/kotlin/JHRPluginData.kt b/src/main/kotlin/JHRPluginData.kt new file mode 100644 index 0000000..1ceab33 --- /dev/null +++ b/src/main/kotlin/JHRPluginData.kt @@ -0,0 +1,12 @@ +package top.jie65535.jhr + +import net.mamoe.mirai.console.data.AutoSavePluginData +import net.mamoe.mirai.console.data.ValueDescription +import net.mamoe.mirai.console.data.value + +object JHRPluginData : AutoSavePluginData("HorseRacingPluginData") { + + @ValueDescription("用户存款") + val Scores: HashMap by value() + +} \ No newline at end of file diff --git a/src/main/kotlin/JHorseRacing.kt b/src/main/kotlin/JHorseRacing.kt new file mode 100644 index 0000000..ca00446 --- /dev/null +++ b/src/main/kotlin/JHorseRacing.kt @@ -0,0 +1,70 @@ +package top.jie65535.jhr + +import net.mamoe.mirai.Bot +import net.mamoe.mirai.console.command.CommandManager.INSTANCE.register +import net.mamoe.mirai.console.command.CommandManager.INSTANCE.unregister +import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription +import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin +import net.mamoe.mirai.event.EventChannel +import net.mamoe.mirai.event.GlobalEventChannel +import net.mamoe.mirai.event.events.BotInvitedJoinGroupRequestEvent +import net.mamoe.mirai.event.events.FriendMessageEvent +import net.mamoe.mirai.event.events.GroupMessageEvent +import net.mamoe.mirai.event.events.NewFriendRequestEvent +import net.mamoe.mirai.event.globalEventChannel +import net.mamoe.mirai.message.data.At +import net.mamoe.mirai.message.data.Image +import net.mamoe.mirai.message.data.Image.Key.queryUrl +import net.mamoe.mirai.message.data.PlainText +import net.mamoe.mirai.utils.info +import java.util.* + + +object JHorseRacing : KotlinPlugin( + JvmPluginDescription( + id = "top.jie65535.mirai-console-jhr-plugin", + name = "J Horse Racing", + version = "0.1.0" + ) { + author("jie65535") + info("赛马娘") + } +) { + var date: Date = Calendar.getInstance().time + + override fun onEnable() { + logger.info { "Plugin loaded" } + JHRPluginConfig.reload() + JHRPluginData.reload() + JHRCommand.register() + + val eventChannel = GlobalEventChannel.parentScope(this) + eventChannel.subscribeAlways { + // 确认该群是否启用赛马 + if (JHRPluginConfig.enabledGroups.indexOf(group.id) == -1) { + return@subscribeAlways + } + + val msg = message.contentToString() + // at机器人 + if (message.any { it is At && it.target == bot.id }) { + when { + msg.startsWith("#赛马") -> TODO() + msg.startsWith("#开始赛马") -> TODO() + } + } else { + when { + msg.startsWith("#签到") -> TODO() + msg.startsWith("#押马") -> TODO() + msg.startsWith("#余额") -> TODO() + } + } + } + } + + override fun onDisable() { + JHRCommand.unregister() + } + + +} diff --git a/src/main/kotlin/PluginMain.kt b/src/main/kotlin/PluginMain.kt deleted file mode 100644 index f7d51b4..0000000 --- a/src/main/kotlin/PluginMain.kt +++ /dev/null @@ -1,93 +0,0 @@ -package org.example.mirai.plugin - -import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription -import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin -import net.mamoe.mirai.event.EventChannel -import net.mamoe.mirai.event.GlobalEventChannel -import net.mamoe.mirai.event.events.BotInvitedJoinGroupRequestEvent -import net.mamoe.mirai.event.events.FriendMessageEvent -import net.mamoe.mirai.event.events.GroupMessageEvent -import net.mamoe.mirai.event.events.NewFriendRequestEvent -import net.mamoe.mirai.event.globalEventChannel -import net.mamoe.mirai.message.data.Image -import net.mamoe.mirai.message.data.Image.Key.queryUrl -import net.mamoe.mirai.message.data.PlainText -import net.mamoe.mirai.utils.info - -/** - * 使用 kotlin 版请把 - * `src/main/resources/META-INF.services/net.mamoe.mirai.console.plugin.jvm.JvmPlugin` - * 文件内容改成 `org.example.mirai.plugin.PluginMain` 也就是当前主类全类名 - * - * 使用 kotlin 可以把 java 源集删除不会对项目有影响 - * - * 在 `settings.gradle.kts` 里改构建的插件名称、依赖库和插件版本 - * - * 在该示例下的 [JvmPluginDescription] 修改插件名称,id和版本,etc - * - * 可以使用 `src/test/kotlin/RunMirai.kt` 在 ide 里直接调试, - * 不用复制到 mirai-console-loader 或其他启动器中调试 - */ - -object PluginMain : KotlinPlugin( - JvmPluginDescription( - id = "org.example.mirai-example", - name = "插件示例", - version = "0.1.0" - ) { - author("作者名称或联系方式") - info( - """ - 这是一个测试插件, - 在这里描述插件的功能和用法等. - """.trimIndent() - ) - // author 和 info 可以删除. - } -) { - override fun onEnable() { - logger.info { "Plugin loaded" } - //配置文件目录 "${dataFolder.absolutePath}/" - val eventChannel = GlobalEventChannel.parentScope(this) - eventChannel.subscribeAlways{ - //群消息 - //复读示例 - if (message.contentToString().startsWith("复读")) { - group.sendMessage(message.contentToString().replace("复读", "")) - } - if (message.contentToString() == "hi") { - //群内发送 - group.sendMessage("hi") - //向发送者私聊发送消息 - sender.sendMessage("hi") - //不继续处理 - return@subscribeAlways - } - //分类示例 - message.forEach { - //循环每个元素在消息里 - if (it is Image) { - //如果消息这一部分是图片 - val url = it.queryUrl() - group.sendMessage("图片,下载地址$url") - } - if (it is PlainText) { - //如果消息这一部分是纯文本 - group.sendMessage("纯文本,内容:${it.content}") - } - } - } - eventChannel.subscribeAlways{ - //好友信息 - sender.sendMessage("hi") - } - eventChannel.subscribeAlways{ - //自动同意好友申请 - accept() - } - eventChannel.subscribeAlways{ - //自动同意加群申请 - accept() - } - } -} diff --git a/src/main/resources/META-INF/services/net.mamoe.mirai.console.plugin.jvm.JvmPlugin b/src/main/resources/META-INF/services/net.mamoe.mirai.console.plugin.jvm.JvmPlugin index 0bed70b..d7f958f 100644 --- a/src/main/resources/META-INF/services/net.mamoe.mirai.console.plugin.jvm.JvmPlugin +++ b/src/main/resources/META-INF/services/net.mamoe.mirai.console.plugin.jvm.JvmPlugin @@ -1 +1 @@ -org.example.mirai.plugin.PluginMain \ No newline at end of file +top.jie65535.jhr.JHorseRacing \ No newline at end of file diff --git a/src/test/kotlin/RunMirai.kt b/src/test/kotlin/RunMirai.kt index 9fdb837..0ca6097 100644 --- a/src/test/kotlin/RunMirai.kt +++ b/src/test/kotlin/RunMirai.kt @@ -1,4 +1,4 @@ -package org.example.mirai.plugin +package top.jie65535.jhr import net.mamoe.mirai.alsoLogin import net.mamoe.mirai.console.MiraiConsole @@ -9,12 +9,8 @@ import net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader suspend fun main() { MiraiConsoleTerminalLoader.startAsDaemon() - //如果是Kotlin - PluginMain.load() - PluginMain.enable() - //如果是Java -// JavaPluginMain.INSTANCE.load() -// JavaPluginMain.INSTANCE.enable() + JHorseRacing.load() + JHorseRacing.enable() val bot = MiraiConsole.addBot(123456, "") { fileBasedDeviceInfo()