diff --git a/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt b/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt index 245a7c0..62739bd 100644 --- a/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt +++ b/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt @@ -8,10 +8,25 @@ package cn.rtast.fancybot import cn.rtast.fancybot.commands.* -import cn.rtast.fancybot.commands.misc.BVParseCommand -import cn.rtast.fancybot.commands.misc.GitHubParseCommand -import cn.rtast.fancybot.commands.misc.ImageURLCommand -import cn.rtast.fancybot.commands.misc.ReverseGIFCommand +import cn.rtast.fancybot.commands.CompilerCommand +import cn.rtast.fancybot.commands.lookup.CigaretteCommand +import cn.rtast.fancybot.commands.lookup.MCPingCommand +import cn.rtast.fancybot.commands.lookup.MusicCommand +import cn.rtast.fancybot.commands.lookup.NslookupCommand +import cn.rtast.fancybot.commands.lookup.PixivCommand +import cn.rtast.fancybot.commands.lookup.QRCodeCommand +import cn.rtast.fancybot.commands.lookup.WeatherCommand +import cn.rtast.fancybot.commands.parse.BVParseCommand +import cn.rtast.fancybot.commands.parse.GitHubParseCommand +import cn.rtast.fancybot.commands.parse.ImageURLCommand +import cn.rtast.fancybot.commands.parse.ReverseGIFCommand +import cn.rtast.fancybot.commands.record.JiJianCommand +import cn.rtast.fancybot.commands.record.JrrpCommand +import cn.rtast.fancybot.commands.record.MyNiuziCommand +import cn.rtast.fancybot.commands.record.MyPointCommand +import cn.rtast.fancybot.commands.record.NiuziSignCommand +import cn.rtast.fancybot.commands.record.RedeemCommand +import cn.rtast.fancybot.commands.record.SignCommand import cn.rtast.fancybot.entity.bili.CardShare import cn.rtast.fancybot.entity.enums.WSType import cn.rtast.fancybot.items.BaisiItem @@ -129,7 +144,7 @@ val commands = listOf( RUACommand(), NslookupCommand(), NiuziSignCommand(), MyNiuziCommand(), JiJianCommand(), LikeMeCommand(), - KotlinCCommand() + CompilerCommand() ) suspend fun main() { diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/CompilerCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/CompilerCommand.kt new file mode 100644 index 0000000..31b7590 --- /dev/null +++ b/src/main/kotlin/cn/rtast/fancybot/commands/CompilerCommand.kt @@ -0,0 +1,61 @@ +/* + * Copyright © 2024 RTAkland + * Author: RTAkland + * Date: 2024/9/12 + */ + + +package cn.rtast.fancybot.commands + +import cn.rtast.fancybot.entity.compiler.GLOTPayload +import cn.rtast.fancybot.entity.compiler.GLOTResponse +import cn.rtast.fancybot.entity.compiler.KCSPayload +import cn.rtast.fancybot.entity.compiler.KCSResponse +import cn.rtast.fancybot.util.Http +import cn.rtast.fancybot.util.str.toJson +import cn.rtast.rob.entity.GroupMessage +import cn.rtast.rob.util.BaseCommand +import cn.rtast.rob.util.ob.MessageChain +import cn.rtast.rob.util.ob.OBMessage + +class CompilerCommand : BaseCommand() { + override val commandNames = listOf("/compiler", "/exec") + + private val kotlinCompilerServer = "https://api.kotlinlang.org/api/2.0.20/compiler/run" + private val glotCompilerServer = "https://glot.io/run" + + override suspend fun executeGroup(listener: OBMessage, message: GroupMessage, args: List) { + if (args.isEmpty()) { + val msg = MessageChain.Builder() + .addAt(message.sender.userId) + .addText("使用`/exec` <语言> <代码> 即可执行~") + .build() + listener.sendGroupMessage(message.groupId, msg) + return + } + val language = args.first() + val code = args.drop(1).joinToString(" ") + val response = when (language) { + "kotlin", "Kotlin", "kt", "Kt", "KT" -> { + Http.post( + kotlinCompilerServer, jsonBody = KCSPayload(listOf(KCSPayload.File(code))).toJson() + ).text + } + + else -> { + Http.post( + "$glotCompilerServer/$language", + params = mapOf("version" to "latest"), + jsonBody = GLOTPayload(listOf(GLOTPayload.File(code))).toJson() + ).stdout + } + } + val msg = MessageChain.Builder() + .addAt(message.sender.userId) + .addText("执行结果如下:") + .addNewLine() + .addText(response.replace("", "").replace("", "")) + .build() + listener.sendGroupMessage(message.groupId, msg) + } +} \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/KotlinCCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/KotlinCCommand.kt deleted file mode 100644 index 977003c..0000000 --- a/src/main/kotlin/cn/rtast/fancybot/commands/KotlinCCommand.kt +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright © 2024 RTAkland - * Author: RTAkland - * Date: 2024/9/12 - */ - - -package cn.rtast.fancybot.commands - -import cn.rtast.fancybot.entity.kcs.KCSPayload -import cn.rtast.fancybot.entity.kcs.KCSResponse -import cn.rtast.fancybot.util.Http -import cn.rtast.fancybot.util.str.toJson -import cn.rtast.rob.entity.GroupMessage -import cn.rtast.rob.util.BaseCommand -import cn.rtast.rob.util.ob.MessageChain -import cn.rtast.rob.util.ob.OBMessage - -class KotlinCCommand : BaseCommand() { - override val commandNames = listOf("/kotlinc", "/ktc") - - private val kotlinCompilerServer = "https://api.kotlinlang.org/api/2.0.20/compiler/run" - - override suspend fun executeGroup(listener: OBMessage, message: GroupMessage, args: List) { - if (args.isEmpty()) { - val msg = MessageChain.Builder() - .addAt(message.sender.userId) - .addText("使用`/ktc` 传入Kotlin代码即可执行~") - .build() - listener.sendGroupMessage(message.groupId, msg) - return - } - val code = args.joinToString(" ") - val response = Http.post( - kotlinCompilerServer, jsonBody = KCSPayload(listOf(KCSPayload.File(code))).toJson() - ) - val msg = MessageChain.Builder() - .addAt(message.sender.userId) - .addText("执行结果如下:") - .addNewLine() - .addText(response.text.replace("", "").replace("", "")) - .build() - listener.sendGroupMessage(message.groupId, msg) - } -} \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/CigaretteCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/CigaretteCommand.kt similarity index 98% rename from src/main/kotlin/cn/rtast/fancybot/commands/CigaretteCommand.kt rename to src/main/kotlin/cn/rtast/fancybot/commands/lookup/CigaretteCommand.kt index bf38def..ad54663 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/CigaretteCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/CigaretteCommand.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.commands +package cn.rtast.fancybot.commands.lookup import cn.rtast.fancybot.entity.cigarette.Cigarette import cn.rtast.fancybot.util.Http diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/MCPingCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/MCPingCommand.kt similarity index 98% rename from src/main/kotlin/cn/rtast/fancybot/commands/MCPingCommand.kt rename to src/main/kotlin/cn/rtast/fancybot/commands/lookup/MCPingCommand.kt index e1f3fd5..c5a5267 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/MCPingCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/MCPingCommand.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.commands +package cn.rtast.fancybot.commands.lookup import cn.rtast.fancybot.entity.MCPing import cn.rtast.fancybot.util.str.fromJson diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/MusicCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/MusicCommand.kt similarity index 99% rename from src/main/kotlin/cn/rtast/fancybot/commands/MusicCommand.kt rename to src/main/kotlin/cn/rtast/fancybot/commands/lookup/MusicCommand.kt index 49170da..91f961b 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/MusicCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/MusicCommand.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.commands +package cn.rtast.fancybot.commands.lookup import cn.rtast.fancybot.configManager import cn.rtast.fancybot.entity.music.Search diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/NslookupCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/NslookupCommand.kt similarity index 94% rename from src/main/kotlin/cn/rtast/fancybot/commands/NslookupCommand.kt rename to src/main/kotlin/cn/rtast/fancybot/commands/lookup/NslookupCommand.kt index 865d08c..4a8fe96 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/NslookupCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/NslookupCommand.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.commands +package cn.rtast.fancybot.commands.lookup import cn.rtast.rob.entity.GroupMessage import cn.rtast.rob.util.BaseCommand diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/PixivCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/PixivCommand.kt similarity index 98% rename from src/main/kotlin/cn/rtast/fancybot/commands/PixivCommand.kt rename to src/main/kotlin/cn/rtast/fancybot/commands/lookup/PixivCommand.kt index b0707e9..a390151 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/PixivCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/PixivCommand.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.commands +package cn.rtast.fancybot.commands.lookup import cn.rtast.fancybot.entity.pixiv.Ranking import cn.rtast.fancybot.util.Http diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/QRCodeCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/QRCodeCommand.kt similarity index 94% rename from src/main/kotlin/cn/rtast/fancybot/commands/QRCodeCommand.kt rename to src/main/kotlin/cn/rtast/fancybot/commands/lookup/QRCodeCommand.kt index e832dd4..e874004 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/QRCodeCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/QRCodeCommand.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.commands +package cn.rtast.fancybot.commands.lookup import cn.rtast.rob.entity.GroupMessage import cn.rtast.rob.util.BaseCommand diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/WeatherCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/WeatherCommand.kt similarity index 98% rename from src/main/kotlin/cn/rtast/fancybot/commands/WeatherCommand.kt rename to src/main/kotlin/cn/rtast/fancybot/commands/lookup/WeatherCommand.kt index 0480465..2461aef 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/WeatherCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/WeatherCommand.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.commands +package cn.rtast.fancybot.commands.lookup import cn.rtast.fancybot.configManager import cn.rtast.fancybot.entity.weather.Geo diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/misc/BVParseCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/parse/BVParseCommand.kt similarity index 99% rename from src/main/kotlin/cn/rtast/fancybot/commands/misc/BVParseCommand.kt rename to src/main/kotlin/cn/rtast/fancybot/commands/parse/BVParseCommand.kt index 34f332d..bab5616 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/misc/BVParseCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/parse/BVParseCommand.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.commands.misc +package cn.rtast.fancybot.commands.parse import cn.rtast.fancybot.entity.bili.BVID import cn.rtast.fancybot.util.Http diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/misc/GitHubParseCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/parse/GitHubParseCommand.kt similarity index 99% rename from src/main/kotlin/cn/rtast/fancybot/commands/misc/GitHubParseCommand.kt rename to src/main/kotlin/cn/rtast/fancybot/commands/parse/GitHubParseCommand.kt index f541a55..18b75d2 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/misc/GitHubParseCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/parse/GitHubParseCommand.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.commands.misc +package cn.rtast.fancybot.commands.parse import cn.rtast.fancybot.configManager import cn.rtast.fancybot.entity.github.RepoInfo diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/misc/ImageURLCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/parse/ImageURLCommand.kt similarity index 95% rename from src/main/kotlin/cn/rtast/fancybot/commands/misc/ImageURLCommand.kt rename to src/main/kotlin/cn/rtast/fancybot/commands/parse/ImageURLCommand.kt index e6af8ce..2a1caaa 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/misc/ImageURLCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/parse/ImageURLCommand.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.commands.misc +package cn.rtast.fancybot.commands.parse import cn.rtast.rob.entity.GetMessage import cn.rtast.rob.enums.ArrayMessageType diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/misc/ReverseGIFCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/parse/ReverseGIFCommand.kt similarity index 97% rename from src/main/kotlin/cn/rtast/fancybot/commands/misc/ReverseGIFCommand.kt rename to src/main/kotlin/cn/rtast/fancybot/commands/parse/ReverseGIFCommand.kt index 6940ee2..c06fcc9 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/misc/ReverseGIFCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/parse/ReverseGIFCommand.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.commands.misc +package cn.rtast.fancybot.commands.parse import cn.rtast.fancybot.util.str.encodeToBase64 import cn.rtast.rob.entity.GetMessage diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/JrrpCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/record/JrrpCommand.kt similarity index 97% rename from src/main/kotlin/cn/rtast/fancybot/commands/JrrpCommand.kt rename to src/main/kotlin/cn/rtast/fancybot/commands/record/JrrpCommand.kt index 200b6a7..e6b1711 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/JrrpCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/record/JrrpCommand.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.commands +package cn.rtast.fancybot.commands.record import cn.rtast.fancybot.util.file.JrrpManager import cn.rtast.rob.entity.GroupMessage diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/MyPointCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/record/MyPointCommand.kt similarity index 97% rename from src/main/kotlin/cn/rtast/fancybot/commands/MyPointCommand.kt rename to src/main/kotlin/cn/rtast/fancybot/commands/record/MyPointCommand.kt index 6d0a2e5..9e7187b 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/MyPointCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/record/MyPointCommand.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.commands +package cn.rtast.fancybot.commands.record import cn.rtast.fancybot.ADMINS import cn.rtast.fancybot.signManager diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/NiuziCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/record/NiuziCommand.kt similarity index 99% rename from src/main/kotlin/cn/rtast/fancybot/commands/NiuziCommand.kt rename to src/main/kotlin/cn/rtast/fancybot/commands/record/NiuziCommand.kt index 1ccbe0f..4415525 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/NiuziCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/record/NiuziCommand.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.commands +package cn.rtast.fancybot.commands.record import cn.rtast.fancybot.niuziManager import cn.rtast.rob.entity.GroupMessage diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/RedeemCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/record/RedeemCommand.kt similarity index 98% rename from src/main/kotlin/cn/rtast/fancybot/commands/RedeemCommand.kt rename to src/main/kotlin/cn/rtast/fancybot/commands/record/RedeemCommand.kt index d51700e..a58d99b 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/RedeemCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/record/RedeemCommand.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.commands +package cn.rtast.fancybot.commands.record import cn.rtast.fancybot.itemManager import cn.rtast.fancybot.signManager diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/SignCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/record/SignCommand.kt similarity index 96% rename from src/main/kotlin/cn/rtast/fancybot/commands/SignCommand.kt rename to src/main/kotlin/cn/rtast/fancybot/commands/record/SignCommand.kt index fdebcbb..65d3c66 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/SignCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/record/SignCommand.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.commands +package cn.rtast.fancybot.commands.record import cn.rtast.fancybot.signManager import cn.rtast.rob.entity.GroupMessage diff --git a/src/main/kotlin/cn/rtast/fancybot/entity/compiler/GLOTPayload.kt b/src/main/kotlin/cn/rtast/fancybot/entity/compiler/GLOTPayload.kt new file mode 100644 index 0000000..96855fa --- /dev/null +++ b/src/main/kotlin/cn/rtast/fancybot/entity/compiler/GLOTPayload.kt @@ -0,0 +1,17 @@ +/* + * Copyright © 2024 RTAkland + * Author: RTAkland + * Date: 2024/9/13 + */ + + +package cn.rtast.fancybot.entity.compiler + +data class GLOTPayload( + val files: List +) { + data class File( + val content: String, + val name: String = "main" + ) +} \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/entity/compiler/GLOTResponse.kt b/src/main/kotlin/cn/rtast/fancybot/entity/compiler/GLOTResponse.kt new file mode 100644 index 0000000..fd84c46 --- /dev/null +++ b/src/main/kotlin/cn/rtast/fancybot/entity/compiler/GLOTResponse.kt @@ -0,0 +1,12 @@ +/* + * Copyright © 2024 RTAkland + * Author: RTAkland + * Date: 2024/9/13 + */ + + +package cn.rtast.fancybot.entity.compiler + +data class GLOTResponse( + val stdout: String, +) \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/entity/kcs/KCSPayload.kt b/src/main/kotlin/cn/rtast/fancybot/entity/compiler/KCSPayload.kt similarity index 88% rename from src/main/kotlin/cn/rtast/fancybot/entity/kcs/KCSPayload.kt rename to src/main/kotlin/cn/rtast/fancybot/entity/compiler/KCSPayload.kt index 4534fd8..2e8d184 100644 --- a/src/main/kotlin/cn/rtast/fancybot/entity/kcs/KCSPayload.kt +++ b/src/main/kotlin/cn/rtast/fancybot/entity/compiler/KCSPayload.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.entity.kcs +package cn.rtast.fancybot.entity.compiler data class KCSPayload( val files: List, diff --git a/src/main/kotlin/cn/rtast/fancybot/entity/kcs/KCSResponse.kt b/src/main/kotlin/cn/rtast/fancybot/entity/compiler/KCSResponse.kt similarity index 89% rename from src/main/kotlin/cn/rtast/fancybot/entity/kcs/KCSResponse.kt rename to src/main/kotlin/cn/rtast/fancybot/entity/compiler/KCSResponse.kt index 61c0b9d..7737350 100644 --- a/src/main/kotlin/cn/rtast/fancybot/entity/kcs/KCSResponse.kt +++ b/src/main/kotlin/cn/rtast/fancybot/entity/compiler/KCSResponse.kt @@ -5,7 +5,7 @@ */ -package cn.rtast.fancybot.entity.kcs +package cn.rtast.fancybot.entity.compiler import com.google.gson.annotations.SerializedName