mirror of
https://github.com/jie65535/mirai-console-jnr-plugin.git
synced 2025-06-02 17:49:11 +08:00
添加了间隔重置计数的功能
This commit is contained in:
parent
ef2325d11e
commit
393db710e8
@ -53,6 +53,8 @@ groupCoolDownTriggerCountMin: 6
|
||||
groupCoolDownTriggerCountMax: 12
|
||||
# 达到最低次数后的触发概率,1~100,按百分比触发
|
||||
groupCoolDownTriggerProbability: 50
|
||||
# 间隔多长时间重置计数(分钟),0表示不重置
|
||||
groupCoolDownInterval: 10
|
||||
# 用户私聊回复间隔(秒),0表示无限制
|
||||
userInterval: 0
|
||||
```
|
||||
|
@ -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 表示无限制
|
||||
|
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user