diff --git a/src/main/kotlin/me/shedaniel/linkie/discord/CommandMap.kt b/src/main/kotlin/me/shedaniel/linkie/discord/CommandMap.kt index f31d5a0..549598e 100644 --- a/src/main/kotlin/me/shedaniel/linkie/discord/CommandMap.kt +++ b/src/main/kotlin/me/shedaniel/linkie/discord/CommandMap.kt @@ -59,14 +59,24 @@ class CommandMap(private val commandAcceptor: CommandAcceptor, private val defau private fun String.splitArgs(): List { val args = mutableListOf() val stringBuilder = StringBuilder() + var whitespaceEscaped = false + var characterEscaped = false forEach { val whitespace = it.isWhitespace() - if (whitespace) { + if (whitespace && !whitespaceEscaped) { args.add(stringBuilder.toString()) stringBuilder.clear() - } - if (it == '\n' || !whitespace) { + if(it == '\n') { + stringBuilder.append(it) + characterEscaped = false + } + } else if (!characterEscaped && it == '"') { + whitespaceEscaped = !whitespaceEscaped + } else if (!characterEscaped && it == '\\') { + characterEscaped = true + } else { stringBuilder.append(it) + characterEscaped = false } } if (stringBuilder.isNotEmpty())