From e4d6e683d32e2a4fe61e2ff31b8ae03345286f9c Mon Sep 17 00:00:00 2001 From: RTAkland Date: Tue, 8 Oct 2024 15:08:27 +0800 Subject: [PATCH] feat: add the cat command --- src/main/kotlin/cn/rtast/fancybot/Const.kt | 2 +- .../fancybot/commands/lookup/TheCatCommand.kt | 33 +++++++++++++++++++ .../cn/rtast/fancybot/entity/thecat/Cat.kt | 12 +++++++ src/main/kotlin/cn/rtast/fancybot/util/URI.kt | 19 +++++++++++ .../fancybot/util/str/StringFormatter.kt | 4 +++ 5 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 src/main/kotlin/cn/rtast/fancybot/commands/lookup/TheCatCommand.kt create mode 100644 src/main/kotlin/cn/rtast/fancybot/entity/thecat/Cat.kt create mode 100644 src/main/kotlin/cn/rtast/fancybot/util/URI.kt diff --git a/src/main/kotlin/cn/rtast/fancybot/Const.kt b/src/main/kotlin/cn/rtast/fancybot/Const.kt index d3325d6..2e40baa 100644 --- a/src/main/kotlin/cn/rtast/fancybot/Const.kt +++ b/src/main/kotlin/cn/rtast/fancybot/Const.kt @@ -121,5 +121,5 @@ val commands = listOf( GithubLatestCommitCommand(), RandomMusicCommand(), ZDJDCommand(), ScanQRCodeCommand(), TTSCommand(), SlimeChunkHelperCommand(), - SupportMeCommand() + SupportMeCommand(), TheCatCommand(), ) \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/lookup/TheCatCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/TheCatCommand.kt new file mode 100644 index 0000000..ee3efdf --- /dev/null +++ b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/TheCatCommand.kt @@ -0,0 +1,33 @@ +/* + * Copyright © 2024 RTAkland + * Author: RTAkland + * Date: 2024/10/8 + */ + + +package cn.rtast.fancybot.commands.lookup + +import cn.rtast.fancybot.entity.thecat.Cat +import cn.rtast.fancybot.util.Http +import cn.rtast.fancybot.util.str.encodeToBase64 +import cn.rtast.fancybot.util.str.fromArrayJson +import cn.rtast.fancybot.util.str.proxy +import cn.rtast.fancybot.util.toURL +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.OneBotListener + +class TheCatCommand : BaseCommand() { + override val commandNames = listOf("随机猫咪", "随机猫猫") + + private val theCatApiUrl = "https://api.thecatapi.com/v1/images/search" + + override suspend fun executeGroup(listener: OneBotListener, message: GroupMessage, args: List) { + val imageBase64= Http.get(theCatApiUrl) + .fromArrayJson>().first().url + .proxy().toURL().readBytes().encodeToBase64() + val msg = MessageChain.Builder().addImage(imageBase64, true).build() + message.reply(msg) + } +} diff --git a/src/main/kotlin/cn/rtast/fancybot/entity/thecat/Cat.kt b/src/main/kotlin/cn/rtast/fancybot/entity/thecat/Cat.kt new file mode 100644 index 0000000..971ee82 --- /dev/null +++ b/src/main/kotlin/cn/rtast/fancybot/entity/thecat/Cat.kt @@ -0,0 +1,12 @@ +/* + * Copyright © 2024 RTAkland + * Author: RTAkland + * Date: 2024/10/8 + */ + + +package cn.rtast.fancybot.entity.thecat + +data class Cat( + val url: String, +) \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/util/URI.kt b/src/main/kotlin/cn/rtast/fancybot/util/URI.kt new file mode 100644 index 0000000..5475559 --- /dev/null +++ b/src/main/kotlin/cn/rtast/fancybot/util/URI.kt @@ -0,0 +1,19 @@ +/* + * Copyright © 2024 RTAkland + * Author: RTAkland + * Date: 2024/10/8 + */ + + +package cn.rtast.fancybot.util + +import java.net.URI +import java.net.URL + +fun String.toURL(): URL { + return URI(this).toURL() +} + +fun String.toURI(): URI { + return URI(this) +} \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/util/str/StringFormatter.kt b/src/main/kotlin/cn/rtast/fancybot/util/str/StringFormatter.kt index 91b15aa..9e36ad4 100644 --- a/src/main/kotlin/cn/rtast/fancybot/util/str/StringFormatter.kt +++ b/src/main/kotlin/cn/rtast/fancybot/util/str/StringFormatter.kt @@ -45,4 +45,8 @@ fun Int.formatToMinutes(): String { val minutes = this / 60 val remainingSeconds = this % 60 return "$minutes:${if (remainingSeconds < 10) "0" else ""}$remainingSeconds" +} + +fun String.proxy(): String { + return this.replace("https://", "https://proxy.rtast.cn/https/") } \ No newline at end of file