diff --git a/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt b/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt index eb42c47..38e7a16 100644 --- a/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt +++ b/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt @@ -7,6 +7,7 @@ package cn.rtast.fancybot +import cn.rtast.fancybot.commands.misc.JueCommand import cn.rtast.fancybot.commands.misc.PastebinCommand import cn.rtast.fancybot.commands.misc.ReactionCommand import cn.rtast.fancybot.commands.misc.ScanQRCodeCommand @@ -18,12 +19,18 @@ import cn.rtast.fancybot.entity.nailong.NaiLongDetectPayload import cn.rtast.fancybot.entity.nailong.NaiLongDetectResponse import cn.rtast.fancybot.enums.WSType import cn.rtast.fancybot.util.* +import cn.rtast.fancybot.util.misc.ImageBed import cn.rtast.fancybot.util.misc.convertToDate import cn.rtast.fancybot.util.misc.initBackgroundTasks import cn.rtast.fancybot.util.misc.initCommand import cn.rtast.fancybot.util.misc.initFilesDir import cn.rtast.fancybot.util.misc.initItems import cn.rtast.fancybot.util.misc.initSetuIndex +import cn.rtast.fancybot.util.misc.toBufferedImage +import cn.rtast.fancybot.util.misc.toByteArray +import cn.rtast.fancybot.util.misc.toGrayscale +import cn.rtast.fancybot.util.misc.toURL +import cn.rtast.fancybot.util.str.encodeToBase64 import cn.rtast.fancybot.util.str.toJson import cn.rtast.rob.ROneBotFactory import cn.rtast.rob.entity.* @@ -87,6 +94,26 @@ class FancyBot : OneBotListener { calculateResult?.let { message.reply(calculateResult) } } + if (message.message.any { it.type == ArrayMessageType.at }) { + if (message.text.contains("/取头像")) { + val target = message.message.find { it.type == ArrayMessageType.at }?.data?.qq!! + val avatar = JueCommand.AVATAR_REPLACE_URL.replace("#{}", target) + val msg = MessageChain.Builder() + if (message.text.contains("黑白")) { + val greyscale = avatar.toURL() + .readBytes().toBufferedImage() + .toGrayscale().toByteArray() + val greyscaleShortLink = ImageBed.upload(greyscale).makeShortLink() + msg.addImage(greyscale.encodeToBase64(), true) + .addText(greyscaleShortLink) + } else { + val shortLink = avatar.makeShortLink() + msg.addImage(avatar).addText(shortLink) + } + message.reply(msg.build()) + } + } + if (message.message.any { it.type == ArrayMessageType.reply }) { val command = message.message.reversed().find { it.type == ArrayMessageType.text }!!.data.text!! val replyId = message.message.find { it.type == ArrayMessageType.reply }!!.data.id!! diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/misc/JueCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/misc/JueCommand.kt index 3ac6ef9..8ad243d 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/misc/JueCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/misc/JueCommand.kt @@ -26,12 +26,14 @@ import java.net.URI class JueCommand : BaseCommand() { override val commandNames = listOf("撅") - private val avatarUrl = "https://q1.qlogo.cn/g?b=qq&nk=#{}&s=640" + companion object { + const val AVATAR_REPLACE_URL = "https://q1.qlogo.cn/g?b=qq&nk=#{}&s=640" + } private fun createJueGIF(source: String, target: String): String { val baseGIF = Resources.loadFromResources("misc/jue.gif") - val sourceAvatar = URI(avatarUrl.replace("#{}", source)).toURL().readBytes().toBufferedImage() - val targetAvatar = URI(avatarUrl.replace("#{}", target)).toURL().readBytes().toBufferedImage() + val sourceAvatar = URI(AVATAR_REPLACE_URL.replace("#{}", source)).toURL().readBytes().toBufferedImage() + val targetAvatar = URI(AVATAR_REPLACE_URL.replace("#{}", target)).toURL().readBytes().toBufferedImage() val decoder = GifDecoder() decoder.read(baseGIF) val frames = mutableListOf() diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/reply/SpeedUpGIFCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/reply/SpeedUpGIFCommand.kt index 8193948..13b77b3 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/reply/SpeedUpGIFCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/reply/SpeedUpGIFCommand.kt @@ -12,6 +12,7 @@ import cn.rtast.fancybot.commands.parse.AsciiArtCommand import cn.rtast.fancybot.util.misc.ImageBed import cn.rtast.fancybot.util.misc.makeGif import cn.rtast.fancybot.util.misc.toURL +import cn.rtast.fancybot.util.str.encodeToBase64 import cn.rtast.rob.entity.GetMessage import cn.rtast.rob.entity.GroupMessage import cn.rtast.rob.util.ob.MessageChain @@ -27,7 +28,10 @@ object SpeedUpGIFCommand { val gifBase64 = decoder.makeGif(frames, multiply) val imgBedUrl = ImageBed.upload(gifBase64) val shortLink = imgBedUrl.makeShortLink() - val msg = MessageChain.Builder().addImage(imgBedUrl).addText(shortLink).build() + val msg = MessageChain.Builder() + .addImage(gifBase64.encodeToBase64(), true) + .addText(shortLink) + .build() message.reply(msg) } } \ No newline at end of file