From 93f3235dd0d7a212e13e483342221f256dab2355 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AD=B1=E5=82=91?= Date: Sat, 17 Sep 2022 09:16:36 +0800 Subject: [PATCH] Update to allow alias commands as public commands --- src/main/kotlin/JGrasscutterCommand.kt | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/JGrasscutterCommand.kt b/src/main/kotlin/JGrasscutterCommand.kt index 7cbe099..7b65d6f 100644 --- a/src/main/kotlin/JGrasscutterCommand.kt +++ b/src/main/kotlin/JGrasscutterCommand.kt @@ -75,7 +75,7 @@ object JGrasscutterCommand : KotlinPlugin( return@subscribeAlways // 解析消息 - val message = this.message.joinToString("") { + var message = this.message.joinToString("") { if (it is At) { // 替换@群员为@其绑定的Uid val user = PluginData.users.find { user -> user.id == it.target && user.serverId == server.id } @@ -110,11 +110,18 @@ object JGrasscutterCommand : KotlinPlugin( } // 处理执行游戏命令 else if (message.startsWith(PluginConfig.commandPrefix)) { - var command = message.removePrefix(PluginConfig.commandPrefix).trim() - if (command.isEmpty() || (command[0] == '/' && command.length == 1)) { + message = message.removePrefix(PluginConfig.commandPrefix).trim() + if (message.isEmpty() || (message[0] == '/' && message.length == 1)) { return@subscribeAlways } + // 检查是否使用别名 + var command = PluginConfig.commandAlias[message] + if (command.isNullOrEmpty()) + command = message + // 如果是斜杠开头,则移除斜杠,在控制台执行不需要斜杠 + if (command[0] == '/') command = command.substring(1) + // 执行的用户 var user: User? = null // 获取token @@ -127,7 +134,11 @@ object JGrasscutterCommand : KotlinPlugin( // 普通用户 user = PluginData.users.find { it.id == sender.id && it.serverId == server.id } if (user == null || user.token.isEmpty()) { - if (server.consoleToken.isNotEmpty() && PluginConfig.publicCommands.contains(command)) { + if (server.consoleToken.isNotEmpty() // 仅服务器绑定了控制台令牌时 + && (PluginConfig.publicCommands.contains(command) // 检测执行的命令是否为公开命令 + || PluginConfig.publicCommands.contains(message) // 检测执行命令的原文是否为公开命令 + )) { + // 允许游客执行控制台命令 logger.info("游客用户 ${sender.nameCardOrNick}(${sender.id}) 执行公开命令:$command") server.consoleToken } else { @@ -139,11 +150,6 @@ object JGrasscutterCommand : KotlinPlugin( user.token } } - // 检查是否使用别名 - val t = PluginConfig.commandAlias[command] - if (!t.isNullOrEmpty()) command = t - // 如果是斜杠开头,则移除斜杠,在控制台执行不需要斜杠 - if (command[0] == '/') command = command.substring(1) try { // 调用接口执行命令