From 2ce9d3dc8f3b042811737e44d9fa46845330a1bc Mon Sep 17 00:00:00 2001 From: RTAkland Date: Wed, 23 Oct 2024 13:45:44 +0800 Subject: [PATCH] feat: add random http cat --- src/main/kotlin/cn/rtast/fancybot/Const.kt | 2 +- .../commands/lookup/HTTPCatCommand.kt | 33 +++++++++ .../cn/rtast/fancybot/enums/HttpStatusCode.kt | 72 +++++++++++++++++++ 3 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 src/main/kotlin/cn/rtast/fancybot/commands/lookup/HTTPCatCommand.kt create mode 100644 src/main/kotlin/cn/rtast/fancybot/enums/HttpStatusCode.kt diff --git a/src/main/kotlin/cn/rtast/fancybot/Const.kt b/src/main/kotlin/cn/rtast/fancybot/Const.kt index d82c062..9b69546 100644 --- a/src/main/kotlin/cn/rtast/fancybot/Const.kt +++ b/src/main/kotlin/cn/rtast/fancybot/Const.kt @@ -140,5 +140,5 @@ val commands = listOf( MinecraftWikiCommand(), GaoKaoDaysRemainCommand(), IdiomExplainCommand(), NiuziManagerCommand(), TodayEatCommand(), TodayDrinkCommand(), MCLoginCommand(), RCONCommand(), GravatarCommand(), PastebinCommand(), ShuffleEchoCommand(), TodayDontEatCommand(), - TodayDontDrinkCommand(), MCBotCommand() + TodayDontDrinkCommand(), MCBotCommand(), HTTPCatCommand() ) \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/lookup/HTTPCatCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/HTTPCatCommand.kt new file mode 100644 index 0000000..737204f --- /dev/null +++ b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/HTTPCatCommand.kt @@ -0,0 +1,33 @@ +/* + * Copyright © 2024 RTAkland + * Author: RTAkland + * Date: 2024/10/23 + */ + + +package cn.rtast.fancybot.commands.lookup + +import cn.rtast.fancybot.annotations.CommandDescription +import cn.rtast.fancybot.enums.HttpStatusCode +import cn.rtast.fancybot.util.misc.toURL +import cn.rtast.fancybot.util.str.encodeToBase64 +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 + +@CommandDescription("随机HTTP猫猫") +class HTTPCatCommand : BaseCommand() { + override val commandNames = listOf("http猫猫", "HTTP猫猫") + + companion object { + private const val HTTP_CAT_API = "https://http.cat/###.jpg" + } + + override suspend fun executeGroup(listener: OneBotListener, message: GroupMessage, args: List) { + val randomStatusCode = HttpStatusCode.entries.random().code.toString() + val image = HTTP_CAT_API.replace("###", randomStatusCode).toURL().readBytes().encodeToBase64() + val msg = MessageChain.Builder().addImage(image, true).build() + message.reply(msg) + } +} \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/enums/HttpStatusCode.kt b/src/main/kotlin/cn/rtast/fancybot/enums/HttpStatusCode.kt new file mode 100644 index 0000000..fa802d9 --- /dev/null +++ b/src/main/kotlin/cn/rtast/fancybot/enums/HttpStatusCode.kt @@ -0,0 +1,72 @@ +/* + * Copyright © 2024 RTAkland + * Author: RTAkland + * Date: 2024/10/23 + */ + +@file:Suppress("unused") + +package cn.rtast.fancybot.enums + +enum class HttpStatusCode(val code: Int, val description: String) { + CONTINUE(100, "Continue"), + SWITCHING_PROTOCOLS(101, "Switching Protocols"), + PROCESSING(102, "Processing (WebDAV)"), + OK(200, "OK"), + CREATED(201, "Created"), + ACCEPTED(202, "Accepted"), + NON_AUTHORITATIVE_INFORMATION(203, "Non-Authoritative Information"), + NO_CONTENT(204, "No Content"), + RESET_CONTENT(205, "Reset Content"), + PARTIAL_CONTENT(206, "Partial Content"), + MULTI_STATUS(207, "Multi-Status (WebDAV)"), + ALREADY_REPORTED(208, "Already Reported (WebDAV)"), + MULTIPLE_CHOICES(300, "Multiple Choices"), + MOVED_PERMANENTLY(301, "Moved Permanently"), + FOUND(302, "Found"), + SEE_OTHER(303, "See Other"), + NOT_MODIFIED(304, "Not Modified"), + USE_PROXY(305, "Use Proxy"), + TEMPORARY_REDIRECT(307, "Temporary Redirect"), + PERMANENT_REDIRECT(308, "Permanent Redirect"), + BAD_REQUEST(400, "Bad Request"), + UNAUTHORIZED(401, "Unauthorized"), + PAYMENT_REQUIRED(402, "Payment Required"), + FORBIDDEN(403, "Forbidden"), + NOT_FOUND(404, "Not Found"), + METHOD_NOT_ALLOWED(405, "Method Not Allowed"), + NOT_ACCEPTABLE(406, "Not Acceptable"), + PROXY_AUTHENTICATION_REQUIRED(407, "Proxy Authentication Required"), + REQUEST_TIMEOUT(408, "Request Timeout"), + CONFLICT(409, "Conflict"), + GONE(410, "Gone"), + LENGTH_REQUIRED(411, "Length Required"), + PRECONDITION_FAILED(412, "Precondition Failed"), + PAYLOAD_TOO_LARGE(413, "Payload Too Large"), + URI_TOO_LONG(414, "URI Too Long"), + UNSUPPORTED_MEDIA_TYPE(415, "Unsupported Media Type"), + RANGE_NOT_SATISFIABLE(416, "Range Not Satisfiable"), + EXPECTATION_FAILED(417, "Expectation Failed"), + IM_A_TEAPOT(418, "I'm a teapot"), + MISDIRECTED_REQUEST(421, "Misdirected Request"), + UNPROCESSABLE_ENTITY(422, "Unprocessable Entity (WebDAV)"), + LOCKED(423, "Locked (WebDAV)"), + FAILED_DEPENDENCY(424, "Failed Dependency (WebDAV)"), + TOO_EARLY(425, "Too Early"), + UPGRADE_REQUIRED(426, "Upgrade Required"), + PRECONDITION_REQUIRED(428, "Precondition Required"), + TOO_MANY_REQUESTS(429, "Too Many Requests"), + REQUEST_HEADER_FIELDS_TOO_LARGE(431, "Request Header Fields Too Large"), + UNAVAILABLE_FOR_LEGAL_REASONS(451, "Unavailable For Legal Reasons"), + INTERNAL_SERVER_ERROR(500, "Internal Server Error"), + NOT_IMPLEMENTED(501, "Not Implemented"), + BAD_GATEWAY(502, "Bad Gateway"), + SERVICE_UNAVAILABLE(503, "Service Unavailable"), + GATEWAY_TIMEOUT(504, "Gateway Timeout"), + HTTP_VERSION_NOT_SUPPORTED(505, "HTTP Version Not Supported"), + VARIANT_ALSO_NEGOTIATES(506, "Variant Also Negotiates"), + INSUFFICIENT_STORAGE(507, "Insufficient Storage (WebDAV)"), + LOOP_DETECTED(508, "Loop Detected (WebDAV)"), + NOT_EXTENDED(510, "Not Extended"), + NETWORK_AUTHENTICATION_REQUIRED(511, "Network Authentication Required"); +}