添加了间隔重置计数的功能

This commit is contained in:
Dream-Rainy 2023-03-15 21:53:59 +08:00
parent ef2325d11e
commit 393db710e8
No known key found for this signature in database
GPG Key ID: AB2FBC9C8DAB2AD5
3 changed files with 13 additions and 1 deletions

View File

@ -53,6 +53,8 @@ groupCoolDownTriggerCountMin: 6
groupCoolDownTriggerCountMax: 12
# 达到最低次数后的触发概率,1~100按百分比触发
groupCoolDownTriggerProbability: 50
# 间隔多长时间重置计数分钟0表示不重置
groupCoolDownInterval: 10
# 用户私聊回复间隔0表示无限制
userInterval: 0
```

View File

@ -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 表示无限制

View File

@ -36,6 +36,7 @@ object JNudgeReply : KotlinPlugin(
private var coolDownTime = (JNRPluginConfig.groupCoolDownTimeLowerBound..JNRPluginConfig.groupCoolDownTimeUpperBound).random().toInt()
private var isReply = true
private val groupCoolDownTime = mutableMapOf<Long, LocalDateTime>()
private var groupCountingInterval = mutableMapOf<Long, LocalDateTime>()
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 {