diff --git a/src/main/kotlin/xyz/cssxsh/mirai/admin/MiraiAdministrator.kt b/src/main/kotlin/xyz/cssxsh/mirai/admin/MiraiAdministrator.kt index a639fc8..32491e3 100644 --- a/src/main/kotlin/xyz/cssxsh/mirai/admin/MiraiAdministrator.kt +++ b/src/main/kotlin/xyz/cssxsh/mirai/admin/MiraiAdministrator.kt @@ -174,10 +174,19 @@ public object MiraiAdministrator : SimpleListenerHost() { if (message.anyIsInstance().not()) return val original = (quote(event = this) ?: return).originalMessage.contentToString() val id = ("""(?<=with <)\d+""".toRegex().find(original)?.value ?: return).toLong() - val accept = MiraiAutoApprover.replyAccept.toRegex() matches message.contentToString() - val black = MiraiAutoApprover.replyBlack.toRegex() matches message.contentToString() + + val content = message.contentToString() + val accept = MiraiAutoApprover.replyAccept.toRegex() in content + val reject = MiraiAutoApprover.replyReject.toRegex() in content + val black = MiraiAutoApprover.replyBlack.toRegex() in content + val reply = content.substringAfter('\n') + AdminContactCommand.runCatching { - toCommandSender().handle(id = id, accept = accept, black = black, message = original) + when { + accept -> toCommandSender().handle(id = id, accept = true, black = false, message = "") + reject -> toCommandSender().handle(id = id, accept = false, black = false, message = reply) + black -> toCommandSender().handle(id = id, accept = false, black = true, message = reply) + } }.onFailure { cause -> logger.error({ "handle contact request failure." }, cause) } diff --git a/src/main/kotlin/xyz/cssxsh/mirai/admin/MiraiAutoApproverConfig.kt b/src/main/kotlin/xyz/cssxsh/mirai/admin/MiraiAutoApproverConfig.kt index 78f7edd..1fd9802 100644 --- a/src/main/kotlin/xyz/cssxsh/mirai/admin/MiraiAutoApproverConfig.kt +++ b/src/main/kotlin/xyz/cssxsh/mirai/admin/MiraiAutoApproverConfig.kt @@ -11,5 +11,7 @@ internal interface MiraiAutoApproverConfig { val replyAccept: String + val replyReject: String + val replyBlack: String } \ No newline at end of file diff --git a/src/main/kotlin/xyz/cssxsh/mirai/admin/data/AdminAutoApproverConfig.kt b/src/main/kotlin/xyz/cssxsh/mirai/admin/data/AdminAutoApproverConfig.kt index 0c357a2..c1566f7 100644 --- a/src/main/kotlin/xyz/cssxsh/mirai/admin/data/AdminAutoApproverConfig.kt +++ b/src/main/kotlin/xyz/cssxsh/mirai/admin/data/AdminAutoApproverConfig.kt @@ -20,9 +20,13 @@ internal object AdminAutoApproverConfig : ReadOnlyPluginConfig("AdminAutoApprove @ValueName("reply_accept") @ValueDescription("回复触发同意请求") - override val replyAccept: String by value("同意|OK|没问题") + override val replyAccept: String by value("^(?:同意|OK|没问题)") + + @ValueName("reply_reject") + @ValueDescription("回复触发拒绝请求") + override val replyReject: String by value("^(?:拒绝|不同意)") @ValueName("reply_black") @ValueDescription("回复触发拉黑请求") - override val replyBlack: String by value("拉黑|黑名单") + override val replyBlack: String by value("^(?:拉黑|黑名单)") } \ No newline at end of file