feat: add get avatar command
This commit is contained in:
3 files changed
+37
-4
No files matched your search
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
package cn.rtast.fancybot
|
package cn.rtast.fancybot
|
||||||
|
|
||||||
|
import cn.rtast.fancybot.commands.misc.JueCommand
|
||||||
import cn.rtast.fancybot.commands.misc.PastebinCommand
|
import cn.rtast.fancybot.commands.misc.PastebinCommand
|
||||||
import cn.rtast.fancybot.commands.misc.ReactionCommand
|
import cn.rtast.fancybot.commands.misc.ReactionCommand
|
||||||
import cn.rtast.fancybot.commands.misc.ScanQRCodeCommand
|
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.entity.nailong.NaiLongDetectResponse
|
||||||
import cn.rtast.fancybot.enums.WSType
|
import cn.rtast.fancybot.enums.WSType
|
||||||
import cn.rtast.fancybot.util.*
|
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.convertToDate
|
||||||
import cn.rtast.fancybot.util.misc.initBackgroundTasks
|
import cn.rtast.fancybot.util.misc.initBackgroundTasks
|
||||||
import cn.rtast.fancybot.util.misc.initCommand
|
import cn.rtast.fancybot.util.misc.initCommand
|
||||||
import cn.rtast.fancybot.util.misc.initFilesDir
|
import cn.rtast.fancybot.util.misc.initFilesDir
|
||||||
import cn.rtast.fancybot.util.misc.initItems
|
import cn.rtast.fancybot.util.misc.initItems
|
||||||
import cn.rtast.fancybot.util.misc.initSetuIndex
|
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.fancybot.util.str.toJson
|
||||||
import cn.rtast.rob.ROneBotFactory
|
import cn.rtast.rob.ROneBotFactory
|
||||||
import cn.rtast.rob.entity.*
|
import cn.rtast.rob.entity.*
|
||||||
@@ -87,6 +94,26 @@ class FancyBot : OneBotListener {
|
|||||||
calculateResult?.let { message.reply(calculateResult) }
|
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 }) {
|
if (message.message.any { it.type == ArrayMessageType.reply }) {
|
||||||
val command = message.message.reversed().find { it.type == ArrayMessageType.text }!!.data.text!!
|
val command = message.message.reversed().find { it.type == ArrayMessageType.text }!!.data.text!!
|
||||||
val replyId = message.message.find { it.type == ArrayMessageType.reply }!!.data.id!!
|
val replyId = message.message.find { it.type == ArrayMessageType.reply }!!.data.id!!
|
||||||
|
|||||||
@@ -26,12 +26,14 @@ import java.net.URI
|
|||||||
class JueCommand : BaseCommand() {
|
class JueCommand : BaseCommand() {
|
||||||
override val commandNames = listOf("撅")
|
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 {
|
private fun createJueGIF(source: String, target: String): String {
|
||||||
val baseGIF = Resources.loadFromResources("misc/jue.gif")
|
val baseGIF = Resources.loadFromResources("misc/jue.gif")
|
||||||
val sourceAvatar = URI(avatarUrl.replace("#{}", source)).toURL().readBytes().toBufferedImage()
|
val sourceAvatar = URI(AVATAR_REPLACE_URL.replace("#{}", source)).toURL().readBytes().toBufferedImage()
|
||||||
val targetAvatar = URI(avatarUrl.replace("#{}", target)).toURL().readBytes().toBufferedImage()
|
val targetAvatar = URI(AVATAR_REPLACE_URL.replace("#{}", target)).toURL().readBytes().toBufferedImage()
|
||||||
val decoder = GifDecoder()
|
val decoder = GifDecoder()
|
||||||
decoder.read(baseGIF)
|
decoder.read(baseGIF)
|
||||||
val frames = mutableListOf<BufferedImage>()
|
val frames = mutableListOf<BufferedImage>()
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import cn.rtast.fancybot.commands.parse.AsciiArtCommand
|
|||||||
import cn.rtast.fancybot.util.misc.ImageBed
|
import cn.rtast.fancybot.util.misc.ImageBed
|
||||||
import cn.rtast.fancybot.util.misc.makeGif
|
import cn.rtast.fancybot.util.misc.makeGif
|
||||||
import cn.rtast.fancybot.util.misc.toURL
|
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.GetMessage
|
||||||
import cn.rtast.rob.entity.GroupMessage
|
import cn.rtast.rob.entity.GroupMessage
|
||||||
import cn.rtast.rob.util.ob.MessageChain
|
import cn.rtast.rob.util.ob.MessageChain
|
||||||
@@ -27,7 +28,10 @@ object SpeedUpGIFCommand {
|
|||||||
val gifBase64 = decoder.makeGif(frames, multiply)
|
val gifBase64 = decoder.makeGif(frames, multiply)
|
||||||
val imgBedUrl = ImageBed.upload(gifBase64)
|
val imgBedUrl = ImageBed.upload(gifBase64)
|
||||||
val shortLink = imgBedUrl.makeShortLink()
|
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)
|
message.reply(msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user