From 4f88af791ac1a9812b8532fa6d9df7ea006bb348 Mon Sep 17 00:00:00 2001 From: Dream-Rainy <88184993+Dream-Rainy@users.noreply.github.com> Date: Wed, 15 Mar 2023 14:37:03 +0800 Subject: [PATCH] fix some bugs --- README.md | 16 ++++++++++++++++ .../kotlin/top/jie65535/jnr/JNRPluginConfig.kt | 16 +++++++++------- .../kotlin/top/jie65535/jnr/JNudgeReply.kt | 18 +++++++++++------- 3 files changed, 36 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 14d2720..8d8c9f7 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ MiraiConsolePlugin 自定义戳一戳回复消息 - `#group.mute:30` 禁言30s, 可以自定义禁言时间, 单位秒 - `#ignore` 忽略 +Tips:可以在#nudge之后直接添加消息以在回戳时同时回复消息 ## 配置文件 文件位置:`config/me.jie65535.mirai-console-jnr-plugin/jnr.yml` @@ -37,6 +38,21 @@ priority: HIGH isIntercept: true # 群回复间隔(秒),0表示无限制 groupInterval: 0 +# 群共享冷却时间上界(分钟),0表示无限制 +# 请不要和群回复间隔一起打开,避免出现问题 +groupCoolDownTimeUpperBound: 0 +# 群共享冷却时间下界(分钟),0表示无限制 +# 以下界<=x<=上界为范围产生随机数随机休息时间 +groupCoolDownTimeLowerBound: 0 +# 冷却触发发送语句 +# %s为占位符,可不加,用来在消息中显示冷却时长 +replyMessageForRest: 呜呜,被戳傻了。休息%s分钟 +# 群共享冷却默认触发最低次数 +groupCoolDownTriggerCountMin: 6 +# 群共享冷却默认触发最高次数,到此次数必定触发 +groupCoolDownTriggerCountMax: 12 +# 达到最低次数后的触发概率,1~100,按百分比触发 +groupCoolDownTriggerProbability: 50 # 用户私聊回复间隔(秒),0表示无限制 userInterval: 0 ``` diff --git a/src/main/kotlin/top/jie65535/jnr/JNRPluginConfig.kt b/src/main/kotlin/top/jie65535/jnr/JNRPluginConfig.kt index 02f8f7d..8cf9531 100644 --- a/src/main/kotlin/top/jie65535/jnr/JNRPluginConfig.kt +++ b/src/main/kotlin/top/jie65535/jnr/JNRPluginConfig.kt @@ -44,19 +44,21 @@ object JNRPluginConfig : AutoSavePluginConfig("jnr") { /** * 群共享冷却时间 * 本设定优先级低于群间隔时间 - * 如需使用请将群间隔时间设置为0*/ - @ValueDescription("群共享冷却时间上界,0表示无限制") + * 如需使用请将群间隔时间设置为0 + * 请不要一起打开 + * */ + @ValueDescription("群共享冷却时间上界(分钟),0表示无限制") var groupCoolDownTimeUpperBound: Long by value(0L) - @ValueDescription("群共享冷却时间下界,0表示无限制") + @ValueDescription("群共享冷却时间下界(分钟),0表示无限制") var groupCoolDownTimeLowerBound: Long by value(0L) - @ValueDescription("冷却触发发送语句") + @ValueDescription("冷却触发发送语句,%s为占位符,可不加,用来在消息中显示冷却时长") var replyMessageForRest: String by value("呜呜,被戳傻了。休息%s分钟") @ValueDescription("群共享冷却默认触发最低次数") - var groupCoolDownTriggerCountMin: Long by value(0L) + var groupCoolDownTriggerCountMin: Long by value(6L) @ValueDescription("群共享冷却默认触发最高次数,到此次数必定触发") - var groupCoolDownTriggerCountMax: Long by value(0L) + var groupCoolDownTriggerCountMax: Long by value(12L) @ValueDescription("达到最低次数后的触发概率,1~100,按百分比触发") - var groupCoolDownTriggerProbability: Int by value(0) + var groupCoolDownTriggerProbability: Int by value(50) /** * 用户间隔(单位秒) * 0 表示无限制 diff --git a/src/main/kotlin/top/jie65535/jnr/JNudgeReply.kt b/src/main/kotlin/top/jie65535/jnr/JNudgeReply.kt index f536528..14c0a2b 100644 --- a/src/main/kotlin/top/jie65535/jnr/JNudgeReply.kt +++ b/src/main/kotlin/top/jie65535/jnr/JNudgeReply.kt @@ -1,6 +1,5 @@ package top.jie65535.jnr -import kotlinx.serialization.descriptors.PrimitiveKind import net.mamoe.mirai.console.command.CommandManager.INSTANCE.register import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin @@ -33,7 +32,7 @@ object JNudgeReply : KotlinPlugin( ) { private val groupLastReply = mutableMapOf() private val userLastReply = mutableMapOf() - private var jnrCount = 1 + private var groupJnrCount = mutableMapOf() private var coolDownTime = (JNRPluginConfig.groupCoolDownTimeLowerBound..JNRPluginConfig.groupCoolDownTimeUpperBound).random().toInt() private var isReply = true private val groupCoolDownTime = mutableMapOf() @@ -66,18 +65,21 @@ object JNudgeReply : KotlinPlugin( } } else if (JNRPluginConfig.groupCoolDownTimeUpperBound > 0) { val randomNumber = (1..100).random() + logger.info(randomNumber.toString()) + logger.info(JNRPluginConfig.groupCoolDownTriggerProbability.toString()) if (groupCoolDownTime[subject.id] == null) groupCoolDownTime[subject.id] = now + groupJnrCount[subject.id] = 1 if (!isReply && (groupCoolDownTime[subject.id]?.plusMinutes(coolDownTime.toLong())!! > now)){ logger.info("cd中,跳过") - }else if ((randomNumber <= JNRPluginConfig.groupCoolDownTriggerProbability && jnrCount >= JNRPluginConfig.groupCoolDownTriggerCountMin) || (jnrCount >= JNRPluginConfig.groupCoolDownTriggerCountMax)){ + }else if ((randomNumber <= JNRPluginConfig.groupCoolDownTriggerProbability && groupJnrCount[subject.id]!! >= JNRPluginConfig.groupCoolDownTriggerCountMin) || (groupJnrCount[subject.id]!! >= JNRPluginConfig.groupCoolDownTriggerCountMax)){ groupCoolDownTime[subject.id] = now isReply = false - jnrCount = 1 + groupJnrCount[subject.id] = 1 val s = String.format(JNRPluginConfig.replyMessageForRest, coolDownTime.toString()) sendRecordMessage(this.subject,s.deserializeMiraiCode()) } else { - jnrCount += 1 + groupJnrCount[subject.id] = groupJnrCount[subject.id]!! + 1 coolDownTime = (JNRPluginConfig.groupCoolDownTimeLowerBound..JNRPluginConfig.groupCoolDownTimeUpperBound).random().toInt() isReply = true } @@ -124,8 +126,10 @@ object JNudgeReply : KotlinPlugin( // 戳回去 message.message.startsWith("#nudge") -> { event.from.nudge().sendTo(event.subject) - val messageTemp = message.message.substring(6) - sendRecordMessage(event.subject, messageTemp.deserializeMiraiCode()) + if (message.message.length > 6) { + val messageTemp = message.message.substring(6) + sendRecordMessage(event.subject, messageTemp.deserializeMiraiCode()) + } logger.info("已尝试戳回发送者") }