mirror of
https://github.com/jie65535/mirai-console-jnr-plugin.git
synced 2025-07-28 18:59:15 +08:00
新增了冷却方式
新增了冷却方式,将回戳也改为模糊识别,可以一并回复消息
This commit is contained in:
parent
c2ef779a72
commit
d800bd3103
@ -41,6 +41,21 @@ object JNRPluginConfig : AutoSavePluginConfig("jnr") {
|
|||||||
@ValueDescription("群回复间隔(秒),0表示无限制")
|
@ValueDescription("群回复间隔(秒),0表示无限制")
|
||||||
var groupInterval: Long by value(0L)
|
var groupInterval: Long by value(0L)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 群共享冷却时间
|
||||||
|
* 本设定优先级高于群间隔时间*/
|
||||||
|
@ValueDescription("群共享冷却时间上界,0表示无限制")
|
||||||
|
var groupCoolDownTimeUpperBound: Long by value(0L)
|
||||||
|
@ValueDescription("群共享冷却时间下界,0表示无限制")
|
||||||
|
var groupCoolDownTimeLowerBound: Long by value(0L)
|
||||||
|
@ValueDescription("冷却触发发送语句")
|
||||||
|
var replyMessageForRest: String by value("呜呜,被戳傻了。休息%s分钟")
|
||||||
|
@ValueDescription("群共享冷却默认触发最低次数")
|
||||||
|
var groupCoolDownTriggerCountMin: Long by value(0L)
|
||||||
|
@ValueDescription("群共享冷却默认触发最高次数,到此次数必定触发")
|
||||||
|
var groupCoolDownTriggerCountMax: Long by value(0L)
|
||||||
|
@ValueDescription("达到最低次数后的触发概率,1~100,按百分比触发")
|
||||||
|
var groupCoolDownTriggerProbability: Int by value(0)
|
||||||
/**
|
/**
|
||||||
* 用户间隔(单位秒)
|
* 用户间隔(单位秒)
|
||||||
* 0 表示无限制
|
* 0 表示无限制
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package top.jie65535.jnr
|
package top.jie65535.jnr
|
||||||
|
|
||||||
|
import kotlinx.serialization.descriptors.PrimitiveKind
|
||||||
import net.mamoe.mirai.console.command.CommandManager.INSTANCE.register
|
import net.mamoe.mirai.console.command.CommandManager.INSTANCE.register
|
||||||
import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription
|
import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription
|
||||||
import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin
|
import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin
|
||||||
@ -32,6 +33,10 @@ object JNudgeReply : KotlinPlugin(
|
|||||||
) {
|
) {
|
||||||
private val groupLastReply = mutableMapOf<Long, LocalDateTime>()
|
private val groupLastReply = mutableMapOf<Long, LocalDateTime>()
|
||||||
private val userLastReply = mutableMapOf<Long, LocalDateTime>()
|
private val userLastReply = mutableMapOf<Long, LocalDateTime>()
|
||||||
|
private var jnrCount = 1
|
||||||
|
private var coolDownTime = (JNRPluginConfig.groupCoolDownTimeLowerBound..JNRPluginConfig.groupCoolDownTimeUpperBound).random().toInt()
|
||||||
|
private var isReply = true
|
||||||
|
private val groupCoolDownTime = mutableMapOf<Long, LocalDateTime>()
|
||||||
|
|
||||||
override fun onEnable() {
|
override fun onEnable() {
|
||||||
JNRPluginConfig.reload()
|
JNRPluginConfig.reload()
|
||||||
@ -41,7 +46,6 @@ object JNudgeReply : KotlinPlugin(
|
|||||||
if (target.id == bot.id && target.id != from.id && JNRPluginConfig.replyMessageList.isNotEmpty()) {
|
if (target.id == bot.id && target.id != from.id && JNRPluginConfig.replyMessageList.isNotEmpty()) {
|
||||||
var replyList: List<ReplyMessage> = JNRPluginConfig.replyMessageList
|
var replyList: List<ReplyMessage> = JNRPluginConfig.replyMessageList
|
||||||
val now = LocalDateTime.now()
|
val now = LocalDateTime.now()
|
||||||
var isReply = true
|
|
||||||
if (subject !is Group) {
|
if (subject !is Group) {
|
||||||
if (JNRPluginConfig.userInterval > 0) {
|
if (JNRPluginConfig.userInterval > 0) {
|
||||||
val t = userLastReply[subject.id]
|
val t = userLastReply[subject.id]
|
||||||
@ -60,6 +64,23 @@ object JNudgeReply : KotlinPlugin(
|
|||||||
} else {
|
} else {
|
||||||
isReply = false
|
isReply = false
|
||||||
}
|
}
|
||||||
|
} else if (JNRPluginConfig.groupCoolDownTimeUpperBound > 0) {
|
||||||
|
val randomNumber = (1..100).random()
|
||||||
|
if (groupCoolDownTime[subject.id] == null)
|
||||||
|
groupCoolDownTime[subject.id] = now
|
||||||
|
if (!isReply && (groupCoolDownTime[subject.id]?.plusMinutes(coolDownTime.toLong())!! > now)){
|
||||||
|
logger.info("cd中,跳过")
|
||||||
|
}else if ((randomNumber >= (100-JNRPluginConfig.groupCoolDownTriggerProbability) && jnrCount >= JNRPluginConfig.groupCoolDownTriggerCountMin) || (jnrCount >= JNRPluginConfig.groupCoolDownTriggerCountMax)){
|
||||||
|
groupCoolDownTime[subject.id] = now
|
||||||
|
isReply = false
|
||||||
|
jnrCount = 1
|
||||||
|
val s = String.format(JNRPluginConfig.replyMessageForRest, coolDownTime.toString())
|
||||||
|
sendRecordMessage(this.subject,s.deserializeMiraiCode())
|
||||||
|
} else {
|
||||||
|
jnrCount += 1
|
||||||
|
coolDownTime = (JNRPluginConfig.groupCoolDownTimeLowerBound..JNRPluginConfig.groupCoolDownTimeUpperBound).random().toInt()
|
||||||
|
isReply = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ((from as Member).permission.level >= (subject as Group).botPermission.level) {
|
if ((from as Member).permission.level >= (subject as Group).botPermission.level) {
|
||||||
replyList = replyList.filter { !it.message.startsWith("#group.mute:") }
|
replyList = replyList.filter { !it.message.startsWith("#group.mute:") }
|
||||||
@ -101,8 +122,10 @@ object JNudgeReply : KotlinPlugin(
|
|||||||
if (message.message.startsWith("#")) {
|
if (message.message.startsWith("#")) {
|
||||||
when {
|
when {
|
||||||
// 戳回去
|
// 戳回去
|
||||||
message.message == "#nudge" -> {
|
message.message.startsWith("#nudge") -> {
|
||||||
event.from.nudge().sendTo(event.subject)
|
event.from.nudge().sendTo(event.subject)
|
||||||
|
val messageTemp = message.message.substring(6)
|
||||||
|
sendRecordMessage(event.subject, messageTemp.deserializeMiraiCode())
|
||||||
logger.info("已尝试戳回发送者")
|
logger.info("已尝试戳回发送者")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user