mirror of
https://github.com/jie65535/mirai-console-jnr-plugin.git
synced 2025-06-09 17:56:34 +08:00
commit
3a445f0e79
@ -1,4 +1,10 @@
|
|||||||
# mirai-console-jnr-plugin
|
# mirai-console-jnr-plugin
|
||||||
MiraiConsolePlugin 自定义戳一戳回复消息
|
MiraiConsolePlugin 自定义戳一戳回复消息
|
||||||
|
|
||||||
|
其中, 下列消息具有特殊含义:
|
||||||
|
|
||||||
|
`#nudge` 戳回去
|
||||||
|
|
||||||
|
`#group.mute:30` 禁言30s, 可以自定义禁言时间, 单位秒
|
||||||
|
|
||||||

|

|
||||||
|
@ -1,8 +1,13 @@
|
|||||||
package top.jie65535.jnr
|
package top.jie65535.jnr
|
||||||
|
|
||||||
import net.mamoe.mirai.console.command.CommandManager.INSTANCE.register
|
import net.mamoe.mirai.console.command.CommandManager.INSTANCE.register
|
||||||
|
import net.mamoe.mirai.console.command.descriptor.ExperimentalCommandDescriptors
|
||||||
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
|
||||||
|
import net.mamoe.mirai.console.util.ConsoleExperimentalApi
|
||||||
|
import net.mamoe.mirai.contact.Group
|
||||||
|
import net.mamoe.mirai.contact.Member
|
||||||
|
import net.mamoe.mirai.contact.PermissionDeniedException
|
||||||
import net.mamoe.mirai.event.EventPriority
|
import net.mamoe.mirai.event.EventPriority
|
||||||
import net.mamoe.mirai.event.events.NudgeEvent
|
import net.mamoe.mirai.event.events.NudgeEvent
|
||||||
import net.mamoe.mirai.event.globalEventChannel
|
import net.mamoe.mirai.event.globalEventChannel
|
||||||
@ -25,12 +30,20 @@ object JNudgeReply : KotlinPlugin(
|
|||||||
JNRCommand.register()
|
JNRCommand.register()
|
||||||
Random.nextInt()
|
Random.nextInt()
|
||||||
globalEventChannel().subscribeAlways<NudgeEvent>(priority = JNRPluginConfig.priority) {
|
globalEventChannel().subscribeAlways<NudgeEvent>(priority = JNRPluginConfig.priority) {
|
||||||
if (target.id == bot.id && JNRPluginConfig.replyMessageList.isNotEmpty()) {
|
if (target.id == bot.id && target.id != from.id && JNRPluginConfig.replyMessageList.isNotEmpty()) {
|
||||||
val totalWeight = JNRPluginConfig.replyMessageList.sumOf { it.weight }
|
var replyList = JNRPluginConfig.replyMessageList
|
||||||
|
if(subject !is Group){
|
||||||
|
replyList = replyList.filter { !it.message.startsWith("#group") }.toMutableList()
|
||||||
|
}else{
|
||||||
|
if((from as Member).permission.level >= (subject as Group).botPermission.level){
|
||||||
|
replyList = replyList.filter { !it.message.startsWith("#group.mute") }.toMutableList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val totalWeight = replyList.sumOf { it.weight }
|
||||||
var w = Random.nextInt(totalWeight)
|
var w = Random.nextInt(totalWeight)
|
||||||
for (msg in JNRPluginConfig.replyMessageList) {
|
for (msg in replyList) {
|
||||||
if (w < msg.weight) {
|
if (w < msg.weight) {
|
||||||
subject.sendMessage(msg.message.deserializeMiraiCode())
|
doReply(msg, this)
|
||||||
break
|
break
|
||||||
} else {
|
} else {
|
||||||
w -= msg.weight
|
w -= msg.weight
|
||||||
@ -43,4 +56,31 @@ object JNudgeReply : KotlinPlugin(
|
|||||||
|
|
||||||
logger.info { "Plugin loaded" }
|
logger.info { "Plugin loaded" }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OptIn(ExperimentalCommandDescriptors::class, ConsoleExperimentalApi::class)
|
||||||
|
suspend fun doReply(message: ReplyMessage, event: NudgeEvent) {
|
||||||
|
val mutePattern = Regex("(?<=#group.mute(\\\\)?:)\\d+")
|
||||||
|
if(message.message.startsWith("#")) {
|
||||||
|
when{
|
||||||
|
message.message == "#nudge" -> {
|
||||||
|
event.from.nudge().sendTo(event.subject)
|
||||||
|
}
|
||||||
|
mutePattern.find(message.message) != null -> {
|
||||||
|
val duration = mutePattern.find(message.message)?.value?.toLong()!!
|
||||||
|
val member: Member = event.from as Member
|
||||||
|
try {
|
||||||
|
member.mute(duration.toInt())
|
||||||
|
}catch (e: PermissionDeniedException){
|
||||||
|
logger.warning("权限不足,无法进行禁言")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
event.subject.sendMessage(message.message.deserializeMiraiCode())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
event.subject.sendMessage(message.message.deserializeMiraiCode())
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
5
src/test/kotlin/RegexTest.kt
Normal file
5
src/test/kotlin/RegexTest.kt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
fun main(){
|
||||||
|
val regex = Regex("(?<=#group\\.mute(\\\\)?:)\\d+")
|
||||||
|
println(regex.find("#group.mute:abc")?.value?.toLong())
|
||||||
|
println(regex.find("#group.mute:12345")?.value?.toLong())
|
||||||
|
}
|
14
src/test/kotlin/RunMirai.kt
Normal file
14
src/test/kotlin/RunMirai.kt
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import net.mamoe.mirai.console.MiraiConsole
|
||||||
|
import net.mamoe.mirai.console.plugin.PluginManager.INSTANCE.enable
|
||||||
|
import net.mamoe.mirai.console.plugin.PluginManager.INSTANCE.load
|
||||||
|
import net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader
|
||||||
|
import net.mamoe.mirai.console.util.ConsoleExperimentalApi
|
||||||
|
import top.jie65535.jnr.JNudgeReply
|
||||||
|
|
||||||
|
@OptIn(ConsoleExperimentalApi::class)
|
||||||
|
suspend fun main(){
|
||||||
|
MiraiConsoleTerminalLoader.startAsDaemon()
|
||||||
|
JNudgeReply.load()
|
||||||
|
JNudgeReply.enable()
|
||||||
|
MiraiConsole.job.join()
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user