chore: update compiler command

This commit is contained in:
2024-10-02 18:32:47 +08:00
parent 9ba1c135d8
commit 4ac5d6603b
3 files changed
+22 -13

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
[versions] [versions]
kotlinVersion = "2.0.10" kotlinVersion = "2.0.10"
ronebotVersion = "1.12.2" ronebotVersion = "1.12.4"
shadowVersion = "8.3.0" shadowVersion = "8.3.0"
okhttpVersion = "5.0.0-alpha.14" okhttpVersion = "5.0.0-alpha.14"
exposedVersion = "0.53.0" exposedVersion = "0.53.0"
@@ -19,9 +19,9 @@ import cn.rtast.rob.util.BaseCommand
import cn.rtast.rob.util.ob.MessageChain import cn.rtast.rob.util.ob.MessageChain
import cn.rtast.rob.util.ob.OneBotListener import cn.rtast.rob.util.ob.OneBotListener
@CommandDescription("执行不同语言的代码片段") @CommandDescription("执行不同语言的代码")
class CompilerCommand : BaseCommand() { class CompilerCommand : BaseCommand() {
override val commandNames = listOf("/compiler", "/exec") override val commandNames = listOf("/compiler", "/exec", "/e")
private val kotlinCompilerServer = "https://api.kotlinlang.org/api/2.0.20/compiler/run" private val kotlinCompilerServer = "https://api.kotlinlang.org/api/2.0.20/compiler/run"
private val glotCompilerServer = "https://glot.io/run" private val glotCompilerServer = "https://glot.io/run"
@@ -31,16 +31,22 @@ class CompilerCommand : BaseCommand() {
message.reply("使用`/exec` <语言> <代码> 即可执行~") message.reply("使用`/exec` <语言> <代码> 即可执行~")
return return
} }
val language = args.first() var language = args.first()
val code = args.drop(1).joinToString(" ") val code = args.drop(1).joinToString(" ")
val response = when (language) { val response = when (language) {
"kotlin", "Kotlin", "kt", "Kt", "KT" -> { "kotlin", "Kotlin", "kt", "Kt", "KT" -> {
Http.post<KCSResponse>( Http.post<KCSResponse>(
kotlinCompilerServer, jsonBody = KCSPayload(listOf(KCSPayload.File(code))).toJson() kotlinCompilerServer,
jsonBody = KCSPayload(listOf(KCSPayload.File(code))).toJson()
).text ).text
} }
else -> { else -> {
if (language == "js") language = "javascript"
if (language == "cs") language = "csharp"
if (language == "sh") language = "bash"
if (language == "asm") language = "assembly"
if (language == "py") language = "python"
Http.post<GLOTResponse>( Http.post<GLOTResponse>(
"$glotCompilerServer/$language", "$glotCompilerServer/$language",
params = mapOf("version" to "latest"), params = mapOf("version" to "latest"),
@@ -48,12 +54,16 @@ class CompilerCommand : BaseCommand() {
).stdout ).stdout
} }
} }
val msg = MessageChain.Builder() try {
.addReply(message.messageId) val msg = MessageChain.Builder()
.addText("执行结果如下:") .addReply(message.messageId)
.addNewLine() .addText("执行结果如下:")
.addText(response.replace("<outStream>", "").replace("</outStream>", "")) .addNewLine()
.build() .addText(response.replace("<outStream>", "").replace("</outStream>", ""))
listener.sendGroupMessage(message.groupId, msg) .build()
listener.sendGroupMessage(message.groupId, msg)
} catch (e: Exception) {
message.reply("执行错误: ${e.message}")
}
} }
} }
@@ -18,7 +18,6 @@ object CalculateCommand {
return try { return try {
engine.eval(input) engine.eval(input)
} catch (_: ScriptException) { } catch (_: ScriptException) {
"Invalid expression"
return null return null
}.toString() }.toString()
} }