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
|
groupCoolDownTriggerCountMax: 12
|
||||||
# 达到最低次数后的触发概率,1~100,按百分比触发
|
# 达到最低次数后的触发概率,1~100,按百分比触发
|
||||||
groupCoolDownTriggerProbability: 50
|
groupCoolDownTriggerProbability: 50
|
||||||
|
# 间隔多长时间重置计数(分钟),0表示不重置
|
||||||
|
groupCoolDownInterval: 10
|
||||||
# 用户私聊回复间隔(秒),0表示无限制
|
# 用户私聊回复间隔(秒),0表示无限制
|
||||||
userInterval: 0
|
userInterval: 0
|
||||||
```
|
```
|
||||||
|
@ -59,6 +59,8 @@ object JNRPluginConfig : AutoSavePluginConfig("jnr") {
|
|||||||
var groupCoolDownTriggerCountMax: Long by value(12L)
|
var groupCoolDownTriggerCountMax: Long by value(12L)
|
||||||
@ValueDescription("达到最低次数后的触发概率,1~100,按百分比触发")
|
@ValueDescription("达到最低次数后的触发概率,1~100,按百分比触发")
|
||||||
var groupCoolDownTriggerProbability: Int by value(50)
|
var groupCoolDownTriggerProbability: Int by value(50)
|
||||||
|
@ValueDescription("间隔多长时间重置计数(分钟),0表示不重置")
|
||||||
|
var groupCoolDownInterval: Long by value(10L)
|
||||||
/**
|
/**
|
||||||
* 用户间隔(单位秒)
|
* 用户间隔(单位秒)
|
||||||
* 0 表示无限制
|
* 0 表示无限制
|
||||||
|
@ -36,6 +36,7 @@ object JNudgeReply : KotlinPlugin(
|
|||||||
private var coolDownTime = (JNRPluginConfig.groupCoolDownTimeLowerBound..JNRPluginConfig.groupCoolDownTimeUpperBound).random().toInt()
|
private var coolDownTime = (JNRPluginConfig.groupCoolDownTimeLowerBound..JNRPluginConfig.groupCoolDownTimeUpperBound).random().toInt()
|
||||||
private var isReply = true
|
private var isReply = true
|
||||||
private val groupCoolDownTime = mutableMapOf<Long, LocalDateTime>()
|
private val groupCoolDownTime = mutableMapOf<Long, LocalDateTime>()
|
||||||
|
private var groupCountingInterval = mutableMapOf<Long, LocalDateTime>()
|
||||||
|
|
||||||
override fun onEnable() {
|
override fun onEnable() {
|
||||||
JNRPluginConfig.reload()
|
JNRPluginConfig.reload()
|
||||||
@ -65,15 +66,22 @@ object JNudgeReply : KotlinPlugin(
|
|||||||
}
|
}
|
||||||
} else if (JNRPluginConfig.groupCoolDownTimeUpperBound > 0) {
|
} else if (JNRPluginConfig.groupCoolDownTimeUpperBound > 0) {
|
||||||
val randomNumber = (1..100).random()
|
val randomNumber = (1..100).random()
|
||||||
if (groupCoolDownTime[subject.id] == null)
|
if (groupCoolDownTime[subject.id] == null) {
|
||||||
groupCoolDownTime[subject.id] = now
|
groupCoolDownTime[subject.id] = now
|
||||||
groupJnrCount[subject.id] = 1
|
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)){
|
if (!isReply && (groupCoolDownTime[subject.id]?.plusMinutes(coolDownTime.toLong())!! > now)){
|
||||||
logger.info("cd中,跳过")
|
logger.info("cd中,跳过")
|
||||||
}else if ((randomNumber <= JNRPluginConfig.groupCoolDownTriggerProbability && groupJnrCount[subject.id]!! >= JNRPluginConfig.groupCoolDownTriggerCountMin) || (groupJnrCount[subject.id]!! >= JNRPluginConfig.groupCoolDownTriggerCountMax)){
|
}else if ((randomNumber <= JNRPluginConfig.groupCoolDownTriggerProbability && groupJnrCount[subject.id]!! >= JNRPluginConfig.groupCoolDownTriggerCountMin) || (groupJnrCount[subject.id]!! >= JNRPluginConfig.groupCoolDownTriggerCountMax)){
|
||||||
groupCoolDownTime[subject.id] = now
|
groupCoolDownTime[subject.id] = now
|
||||||
isReply = false
|
isReply = false
|
||||||
groupJnrCount[subject.id] = 1
|
groupJnrCount[subject.id] = 1
|
||||||
|
groupCountingInterval[subject.id] = now
|
||||||
val s = String.format(JNRPluginConfig.replyMessageForRest, coolDownTime.toString())
|
val s = String.format(JNRPluginConfig.replyMessageForRest, coolDownTime.toString())
|
||||||
sendRecordMessage(this.subject,s.deserializeMiraiCode())
|
sendRecordMessage(this.subject,s.deserializeMiraiCode())
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user