fix some bugs

This commit is contained in:
Dream-Rainy 2023-03-15 14:37:03 +08:00
parent 1443068c0d
commit 4f88af791a
No known key found for this signature in database
GPG Key ID: AB2FBC9C8DAB2AD5
3 changed files with 36 additions and 14 deletions

View File

@ -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
```

View File

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

View File

@ -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<Long, LocalDateTime>()
private val userLastReply = mutableMapOf<Long, LocalDateTime>()
private var jnrCount = 1
private var groupJnrCount = mutableMapOf<Long, Long>()
private var coolDownTime = (JNRPluginConfig.groupCoolDownTimeLowerBound..JNRPluginConfig.groupCoolDownTimeUpperBound).random().toInt()
private var isReply = true
private val groupCoolDownTime = mutableMapOf<Long, LocalDateTime>()
@ -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("已尝试戳回发送者")
}