feat: add image bed command

This commit is contained in:
2024-10-09 13:06:43 +08:00
parent b660b504fd
commit 06a385db1a
31 files changed
+113 -63

No files matched your search

@@ -11,6 +11,12 @@ import cn.rtast.fancybot.commands.misc.ScanQRCodeCommand
import cn.rtast.fancybot.commands.parse.*
import cn.rtast.fancybot.enums.WSType
import cn.rtast.fancybot.util.*
import cn.rtast.fancybot.util.file.getFileType
import cn.rtast.fancybot.util.misc.ImageBed
import cn.rtast.fancybot.util.misc.initCommandAndItem
import cn.rtast.fancybot.util.misc.initFilesDir
import cn.rtast.fancybot.util.misc.initSetuIndex
import cn.rtast.fancybot.util.misc.toURL
import cn.rtast.rob.ROneBotFactory
import cn.rtast.rob.entity.*
import cn.rtast.rob.entity.lagrange.FileEvent
@@ -72,6 +78,19 @@ class FancyBot : OneBotListener {
val getMsg = this.getMessage(replyId.toString().toLong())
ImageURLCommand.callback(message, getMsg)
}
if (command.contains("图床")) {
val getMsg = this.getMessage(replyId.toString().toLong())
val imageUrl = ImageURLCommand.getImageUrl(getMsg)
if (imageUrl == null) {
message.reply("这个消息里没有图片呢!")
} else {
val imageByteArray = imageUrl.toURL().readBytes()
val imageFileType = imageByteArray.getFileType()
val imageBedUrl = ImageBed.upload(imageByteArray, imageFileType)
message.reply(imageBedUrl)
}
}
}
val matchedResult = githubRegex.find(message.rawMessage)
@@ -13,7 +13,7 @@ import cn.rtast.fancybot.entity.domain.PriceResponse
import cn.rtast.fancybot.util.Http
import cn.rtast.fancybot.util.str.encodeToBase64
import cn.rtast.fancybot.util.str.toJson
import cn.rtast.fancybot.util.toByteArray
import cn.rtast.fancybot.util.misc.toByteArray
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.util.BaseCommand
import cn.rtast.rob.util.ob.MessageChain
@@ -11,11 +11,11 @@ import cn.rtast.fancybot.annotations.CommandDescription
import cn.rtast.fancybot.configManager
import cn.rtast.fancybot.entity.github.UserInfo
import cn.rtast.fancybot.util.Http
import cn.rtast.fancybot.util.drawCustomImage
import cn.rtast.fancybot.util.drawString
import cn.rtast.fancybot.util.misc.drawCustomImage
import cn.rtast.fancybot.util.misc.drawString
import cn.rtast.fancybot.util.str.encodeToBase64
import cn.rtast.fancybot.util.toBufferedImage
import cn.rtast.fancybot.util.toByteArray
import cn.rtast.fancybot.util.misc.toBufferedImage
import cn.rtast.fancybot.util.misc.toByteArray
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.util.BaseCommand
import cn.rtast.rob.util.ob.MessageChain
@@ -14,12 +14,12 @@ import cn.rtast.fancybot.entity.mc.DecodedSkin
import cn.rtast.fancybot.entity.mc.Skin
import cn.rtast.fancybot.entity.mc.Username
import cn.rtast.fancybot.util.Http
import cn.rtast.fancybot.util.isFullyTransparent
import cn.rtast.fancybot.util.scaleImage
import cn.rtast.fancybot.util.misc.isFullyTransparent
import cn.rtast.fancybot.util.misc.scaleImage
import cn.rtast.fancybot.util.str.decodeToString
import cn.rtast.fancybot.util.str.encodeToBase64
import cn.rtast.fancybot.util.str.fromJson
import cn.rtast.fancybot.util.toByteArray
import cn.rtast.fancybot.util.misc.toByteArray
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.util.BaseCommand
import cn.rtast.rob.util.ob.MessageChain
@@ -12,7 +12,7 @@ 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.fancybot.util.misc.toURL
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.util.BaseCommand
import cn.rtast.rob.util.ob.MessageChain
@@ -12,12 +12,12 @@ import cn.rtast.fancybot.configManager
import cn.rtast.fancybot.entity.weather.Geo
import cn.rtast.fancybot.entity.weather.Weather
import cn.rtast.fancybot.util.Http
import cn.rtast.fancybot.util.Resources
import cn.rtast.fancybot.util.drawCenteredText
import cn.rtast.fancybot.util.drawCustomImage
import cn.rtast.fancybot.util.misc.Resources
import cn.rtast.fancybot.util.misc.drawCenteredText
import cn.rtast.fancybot.util.misc.drawCustomImage
import cn.rtast.fancybot.util.str.encodeToBase64
import cn.rtast.fancybot.util.toBufferedImage
import cn.rtast.fancybot.util.toByteArray
import cn.rtast.fancybot.util.misc.toBufferedImage
import cn.rtast.fancybot.util.misc.toByteArray
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.util.BaseCommand
import cn.rtast.rob.util.ob.MessageChain
@@ -10,7 +10,7 @@ package cn.rtast.fancybot.commands.misc
import cn.rtast.fancybot.annotations.CommandDescription
import cn.rtast.fancybot.configManager
import cn.rtast.fancybot.entity.bullshit.BullShit
import cn.rtast.fancybot.util.Resources
import cn.rtast.fancybot.util.misc.Resources
import cn.rtast.fancybot.util.str.fromJson
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.util.BaseCommand
@@ -8,11 +8,11 @@
package cn.rtast.fancybot.commands.misc
import cn.rtast.fancybot.annotations.CommandDescription
import cn.rtast.fancybot.util.Resources
import cn.rtast.fancybot.util.drawCircularImage
import cn.rtast.fancybot.util.makeGif
import cn.rtast.fancybot.util.misc.Resources
import cn.rtast.fancybot.util.misc.drawCircularImage
import cn.rtast.fancybot.util.misc.makeGif
import cn.rtast.fancybot.util.str.encodeToBase64
import cn.rtast.fancybot.util.toBufferedImage
import cn.rtast.fancybot.util.misc.toBufferedImage
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.enums.ArrayMessageType
import cn.rtast.rob.util.BaseCommand
@@ -11,8 +11,8 @@ import cn.rtast.fancybot.annotations.CommandDescription
import cn.rtast.fancybot.enums.CommandAction
import cn.rtast.fancybot.util.file.insertActionRecord
import cn.rtast.fancybot.util.str.encodeToBase64
import cn.rtast.fancybot.util.toBufferedImage
import cn.rtast.fancybot.util.toByteArray
import cn.rtast.fancybot.util.misc.toBufferedImage
import cn.rtast.fancybot.util.misc.toByteArray
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.enums.ArrayMessageType
import cn.rtast.rob.util.BaseCommand
@@ -9,7 +9,7 @@ package cn.rtast.fancybot.commands.misc
import cn.rtast.fancybot.annotations.CommandDescription
import cn.rtast.fancybot.enums.CountryList
import cn.rtast.fancybot.util.randomBooleanWithProbability
import cn.rtast.fancybot.util.misc.randomBooleanWithProbability
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.util.BaseCommand
import cn.rtast.rob.util.ob.MessageChain
@@ -27,7 +27,7 @@ class ShortLinkCommand : BaseCommand() {
fun String.makeShortLink(): String {
val shortLink = Http.post<ShortLinkResponse>(
"$API_RTAST_URL/short_link",
ShortLinkPayload(this).toJson()
ShortLinkPayload(this.encodeToBase64()).toJson()
)
return "$API_RTAST_URL/s?rnd_id=${shortLink.id}"
}
@@ -38,7 +38,7 @@ class ShortLinkCommand : BaseCommand() {
message.reply("发送`/s <url>`来生成短链接`不要放入一些奇怪的链接哦~")
return
}
val target = args.first().encodeToBase64()
val target = args.first()
val shortLink = target.makeShortLink()
message.reply(shortLink)
}
@@ -9,7 +9,7 @@ package cn.rtast.fancybot.commands.misc
import cn.rtast.fancybot.annotations.CommandDescription
import cn.rtast.fancybot.util.str.encodeToBase64
import cn.rtast.fancybot.util.toByteArray
import cn.rtast.fancybot.util.misc.toByteArray
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.util.BaseCommand
import cn.rtast.rob.util.ob.MessageChain
@@ -11,7 +11,7 @@ import cn.rtast.fancybot.annotations.CommandDescription
import cn.rtast.fancybot.commands
import cn.rtast.fancybot.niuziBankManager
import cn.rtast.fancybot.niuziManager
import cn.rtast.fancybot.util.getUserName
import cn.rtast.fancybot.util.misc.getUserName
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.enums.ArrayMessageType
import cn.rtast.rob.util.BaseCommand
@@ -9,7 +9,7 @@ package cn.rtast.fancybot.commands.niuzi
import cn.rtast.fancybot.annotations.CommandDescription
import cn.rtast.fancybot.niuziManager
import cn.rtast.fancybot.util.getUserName
import cn.rtast.fancybot.util.misc.getUserName
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.util.BaseCommand
import cn.rtast.rob.util.ob.MessageChain
@@ -9,9 +9,9 @@ package cn.rtast.fancybot.commands.parse
import cn.rtast.fancybot.annotations.CommandDescription
import cn.rtast.fancybot.util.Logger
import cn.rtast.fancybot.util.makeGif
import cn.rtast.fancybot.util.misc.makeGif
import cn.rtast.fancybot.util.str.encodeToBase64
import cn.rtast.fancybot.util.toByteArray
import cn.rtast.fancybot.util.misc.toByteArray
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.enums.ArrayMessageType
import cn.rtast.rob.util.BaseCommand
@@ -9,13 +9,13 @@ package cn.rtast.fancybot.commands.parse
import cn.rtast.fancybot.entity.bili.*
import cn.rtast.fancybot.util.Http
import cn.rtast.fancybot.util.Resources
import cn.rtast.fancybot.util.drawCustomImage
import cn.rtast.fancybot.util.misc.Resources
import cn.rtast.fancybot.util.misc.drawCustomImage
import cn.rtast.fancybot.util.str.encodeToBase64
import cn.rtast.fancybot.util.str.formatNumber
import cn.rtast.fancybot.util.str.fromJson
import cn.rtast.fancybot.util.str.setTruncate
import cn.rtast.fancybot.util.toByteArray
import cn.rtast.fancybot.util.misc.toByteArray
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.enums.ArrayMessageType
import cn.rtast.rob.util.ob.MessageChain
@@ -10,13 +10,13 @@ package cn.rtast.fancybot.commands.parse
import cn.rtast.fancybot.configManager
import cn.rtast.fancybot.entity.github.RepoInfo
import cn.rtast.fancybot.util.Http
import cn.rtast.fancybot.util.Resources
import cn.rtast.fancybot.util.drawCustomImage
import cn.rtast.fancybot.util.drawString
import cn.rtast.fancybot.util.misc.Resources
import cn.rtast.fancybot.util.misc.drawCustomImage
import cn.rtast.fancybot.util.misc.drawString
import cn.rtast.fancybot.util.str.encodeToBase64
import cn.rtast.fancybot.util.str.formatNumberEnglish
import cn.rtast.fancybot.util.str.setTruncate
import cn.rtast.fancybot.util.toByteArray
import cn.rtast.fancybot.util.misc.toByteArray
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.util.ob.MessageChain
import java.awt.Color
@@ -10,21 +10,30 @@ package cn.rtast.fancybot.commands.parse
import cn.rtast.rob.entity.GetMessage
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.enums.ArrayMessageType
import cn.rtast.rob.util.ob.MessageChain
object ImageURLCommand {
suspend fun callback(groupMessage: GroupMessage, message: GetMessage.Data) {
val msg = MessageChain.Builder()
.addReply(message.messageId)
.addText("哈哈哈哈图片来咯~")
.addNewLine()
val image = message.message.find { it.type == ArrayMessageType.image }
if (image == null) {
val gif = message.message.find { it.type == ArrayMessageType.mface }!!
msg.addText(gif.data.url!!)
} else {
msg.addText(image.data.file!!)
fun getImageUrl(message: GetMessage.Data): String? {
try {
val image = message.message.find { it.type == ArrayMessageType.image }
val url = if (image == null) {
val gif = message.message.find { it.type == ArrayMessageType.mface }!!
gif.data.url!!
} else {
image.data.file!!
}
return url
} catch (_: NullPointerException) {
return null
}
}
suspend fun callback(groupMessage: GroupMessage, message: GetMessage.Data) {
val url = getImageUrl(message)
if (url == null) {
groupMessage.reply("这个消息里没有图片呢!")
} else {
groupMessage.reply(url)
}
groupMessage.reply(msg.build())
}
}
@@ -8,7 +8,7 @@
package cn.rtast.fancybot.commands.parse
import cn.rtast.fancybot.annotations.CommandDescription
import cn.rtast.fancybot.util.makeGif
import cn.rtast.fancybot.util.misc.makeGif
import cn.rtast.fancybot.util.str.encodeToBase64
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.enums.ArrayMessageType
@@ -8,7 +8,7 @@
package cn.rtast.fancybot.util.file
import cn.rtast.fancybot.entity.Config
import cn.rtast.fancybot.util.JsonFileHandler
import cn.rtast.fancybot.util.str.JsonFileHandler
class ConfigManager : JsonFileHandler<Config>("config.json") {
private val config = this.read<Config>()
@@ -0,0 +1,22 @@
/*
* Copyright © 2024 RTAkland
* Author: RTAkland
* Date: 2024/10/9
*/
package cn.rtast.fancybot.util.file
fun ByteArray.getFileType(): String {
val fileSignature = this.take(4).joinToString("") { "%02X".format(it) }
return when {
fileSignature.startsWith("FFD8FF") -> "jpg"
fileSignature.startsWith("89504E47") -> "png"
fileSignature.startsWith("47494638") -> "gif"
fileSignature.startsWith("25504446") -> "pdf"
fileSignature.startsWith("504B0304") -> "zip"
fileSignature.startsWith("377ABCAF") -> "7z"
fileSignature.startsWith("1F8B") -> "gz"
else -> ""
}
}
@@ -9,7 +9,7 @@ package cn.rtast.fancybot.util.file
import cn.rtast.fancybot.db.JrrpRecord
import cn.rtast.fancybot.db.JrrpTable
import cn.rtast.fancybot.util.isSameDay
import cn.rtast.fancybot.util.misc.isSameDay
import cn.rtast.fancybot.util.suspendedTransaction
import org.jetbrains.exposed.sql.insert
import org.jetbrains.exposed.sql.selectAll
@@ -13,7 +13,7 @@ import cn.rtast.fancybot.db.NiuziTable.length
import cn.rtast.fancybot.db.NiuziTable.nickname
import cn.rtast.fancybot.db.NiuziTable.timestamp
import cn.rtast.fancybot.db.NiuziTable.userId
import cn.rtast.fancybot.util.isSameDay
import cn.rtast.fancybot.util.misc.isSameDay
import cn.rtast.fancybot.util.suspendedTransaction
import org.jetbrains.exposed.sql.insert
import org.jetbrains.exposed.sql.selectAll
@@ -5,7 +5,7 @@
*/
package cn.rtast.fancybot.util
package cn.rtast.fancybot.util.misc
import java.time.Instant
import java.time.ZoneId
@@ -5,7 +5,7 @@
*/
package cn.rtast.fancybot.util
package cn.rtast.fancybot.util.misc
import com.madgag.gif.fmsware.AnimatedGifEncoder
import com.madgag.gif.fmsware.GifDecoder
@@ -5,7 +5,7 @@
*/
package cn.rtast.fancybot.util
package cn.rtast.fancybot.util.misc
import cn.rtast.fancybot.configManager
import java.awt.Graphics2D
@@ -5,11 +5,12 @@
*/
package cn.rtast.fancybot.util
package cn.rtast.fancybot.util.misc
import cn.rtast.fancybot.configManager
import cn.rtast.fancybot.entity.github.UploadContentPayload
import cn.rtast.fancybot.entity.github.UploadContentResponse
import cn.rtast.fancybot.util.Http
import cn.rtast.fancybot.util.str.encodeToBase64
import cn.rtast.fancybot.util.str.proxy
import cn.rtast.fancybot.util.str.toJson
@@ -5,9 +5,10 @@
*/
package cn.rtast.fancybot.util
package cn.rtast.fancybot.util.misc
import cn.rtast.fancybot.*
import cn.rtast.fancybot.util.Http
import cn.rtast.rob.ROneBotFactory
import cn.rtast.rob.util.ob.OneBotListener
import java.io.File
@@ -5,7 +5,7 @@
*/
package cn.rtast.fancybot.util
package cn.rtast.fancybot.util.misc
import java.io.InputStream
@@ -5,7 +5,7 @@
*/
package cn.rtast.fancybot.util
package cn.rtast.fancybot.util.misc
import java.net.URI
import java.net.URL
@@ -5,12 +5,10 @@
*/
package cn.rtast.fancybot.util
package cn.rtast.fancybot.util.str
import cn.rtast.fancybot.ROOT_PATH
import cn.rtast.fancybot.gson
import cn.rtast.fancybot.util.str.fromArrayJson
import cn.rtast.fancybot.util.str.fromJson
import java.io.File
abstract class JsonFileHandler<T> {