package top.r3944realms.ltdmanager.module.common /** * 命令解析器 * 严格模式:只支持命令后带空格的情况,避免误读 */ class CommandParser(private val commands: List) { /** * 获取指令 */ fun getCommands(): List = commands /** * 解析命令 * @param text 输入的文本 * @return Pair<命令, 参数> 或 null(如果不是有效命令) */ fun parseCommand(text: String): Pair? { val trimmedText = text.trim() // 查找匹配的命令(必须后面跟着空格或字符串结束) val matchedCommand = commands.firstOrNull { command -> trimmedText.startsWith("$command ") || trimmedText == command } ?: return null // 获取参数部分 val argument = if (trimmedText.length > matchedCommand.length) { trimmedText.substring(matchedCommand.length).trim() } else { "" } return Pair(matchedCommand, argument) } /** * 检查文本是否包含有效命令 */ fun containsCommand(text: String): Boolean { return parseCommand(text.trim()) != null } /** * 获取命令部分(不包含参数) */ fun getCommandOnly(text: String): String? { return parseCommand(text.trim())?.first } /** * 获取参数部分(不包含命令) */ fun getArgumentOnly(text: String): String { return parseCommand(text.trim())?.second ?: "" } }