From 393db710e8c6ddff06cfaa207b7f4a4caa04f797 Mon Sep 17 00:00:00 2001 From: Dream-Rainy <88184993+Dream-Rainy@users.noreply.github.com> Date: Wed, 15 Mar 2023 21:53:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E9=97=B4=E9=9A=94?= =?UTF-8?q?=E9=87=8D=E7=BD=AE=E8=AE=A1=E6=95=B0=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ src/main/kotlin/top/jie65535/jnr/JNRPluginConfig.kt | 2 ++ src/main/kotlin/top/jie65535/jnr/JNudgeReply.kt | 10 +++++++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4568ef9..c3d4d43 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,8 @@ groupCoolDownTriggerCountMin: 6 groupCoolDownTriggerCountMax: 12 # 达到最低次数后的触发概率,1~100,按百分比触发 groupCoolDownTriggerProbability: 50 +# 间隔多长时间重置计数(分钟),0表示不重置 +groupCoolDownInterval: 10 # 用户私聊回复间隔(秒),0表示无限制 userInterval: 0 ``` diff --git a/src/main/kotlin/top/jie65535/jnr/JNRPluginConfig.kt b/src/main/kotlin/top/jie65535/jnr/JNRPluginConfig.kt index 983d4f6..2d4e8ec 100644 --- a/src/main/kotlin/top/jie65535/jnr/JNRPluginConfig.kt +++ b/src/main/kotlin/top/jie65535/jnr/JNRPluginConfig.kt @@ -59,6 +59,8 @@ object JNRPluginConfig : AutoSavePluginConfig("jnr") { var groupCoolDownTriggerCountMax: Long by value(12L) @ValueDescription("达到最低次数后的触发概率,1~100,按百分比触发") var groupCoolDownTriggerProbability: Int by value(50) + @ValueDescription("间隔多长时间重置计数(分钟),0表示不重置") + var groupCoolDownInterval: Long by value(10L) /** * 用户间隔(单位秒) * 0 表示无限制 diff --git a/src/main/kotlin/top/jie65535/jnr/JNudgeReply.kt b/src/main/kotlin/top/jie65535/jnr/JNudgeReply.kt index 8f03398..5510f98 100644 --- a/src/main/kotlin/top/jie65535/jnr/JNudgeReply.kt +++ b/src/main/kotlin/top/jie65535/jnr/JNudgeReply.kt @@ -36,6 +36,7 @@ object JNudgeReply : KotlinPlugin( private var coolDownTime = (JNRPluginConfig.groupCoolDownTimeLowerBound..JNRPluginConfig.groupCoolDownTimeUpperBound).random().toInt() private var isReply = true private val groupCoolDownTime = mutableMapOf() + private var groupCountingInterval = mutableMapOf() override fun onEnable() { JNRPluginConfig.reload() @@ -65,15 +66,22 @@ object JNudgeReply : KotlinPlugin( } } else if (JNRPluginConfig.groupCoolDownTimeUpperBound > 0) { val randomNumber = (1..100).random() - if (groupCoolDownTime[subject.id] == null) + if (groupCoolDownTime[subject.id] == null) { groupCoolDownTime[subject.id] = now groupJnrCount[subject.id] = 1 + groupCountingInterval[subject.id] = now + } + if (JNRPluginConfig.groupCoolDownInterval != 0L && groupCountingInterval[subject.id]?.plusMinutes(JNRPluginConfig.groupCoolDownInterval)!! <= now){ + groupJnrCount[subject.id] = 1 + groupCountingInterval[subject.id] = now + } if (!isReply && (groupCoolDownTime[subject.id]?.plusMinutes(coolDownTime.toLong())!! > now)){ logger.info("cd中,跳过") }else if ((randomNumber <= JNRPluginConfig.groupCoolDownTriggerProbability && groupJnrCount[subject.id]!! >= JNRPluginConfig.groupCoolDownTriggerCountMin) || (groupJnrCount[subject.id]!! >= JNRPluginConfig.groupCoolDownTriggerCountMax)){ groupCoolDownTime[subject.id] = now isReply = false groupJnrCount[subject.id] = 1 + groupCountingInterval[subject.id] = now val s = String.format(JNRPluginConfig.replyMessageForRest, coolDownTime.toString()) sendRecordMessage(this.subject,s.deserializeMiraiCode()) } else {