feat: support get multi image get
This commit is contained in:
2 files changed
+62
-25
No files matched your search
@@ -17,6 +17,7 @@ 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.toURI
|
||||
import cn.rtast.fancybot.util.misc.toURL
|
||||
import cn.rtast.rob.ROneBotFactory
|
||||
import cn.rtast.rob.entity.*
|
||||
@@ -26,6 +27,7 @@ import cn.rtast.rob.enums.ArrayMessageType
|
||||
import cn.rtast.rob.enums.QQFace
|
||||
import cn.rtast.rob.util.ob.MessageChain
|
||||
import cn.rtast.rob.util.ob.OneBotListener
|
||||
import cn.rtast.rob.util.ob.asNode
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -82,22 +84,38 @@ class FancyBot : OneBotListener {
|
||||
|
||||
if (command.contains("图床")) {
|
||||
val getMsg = this.getMessage(replyId.toString().toLong())
|
||||
val imageUrl = ImageURLCommand.getImageUrl(getMsg)
|
||||
if (imageUrl == null) {
|
||||
val imagesUrl = ImageURLCommand.getImageUrl(getMsg)
|
||||
if (imagesUrl.isEmpty()) {
|
||||
message.reply("这个消息里没有图片呢!")
|
||||
} else {
|
||||
try {
|
||||
val imageByteArray = imageUrl.toURL().readBytes()
|
||||
val imageFileType = imageByteArray.getFileType()
|
||||
val imageBedUrl = ImageBed.upload(imageByteArray, imageFileType)
|
||||
val msg = MessageChain.Builder()
|
||||
.addText(imageBedUrl.makeShortLink())
|
||||
.addNewLine(2)
|
||||
.addText(imageBedUrl)
|
||||
.build()
|
||||
message.reply(msg)
|
||||
} catch (_: Exception) {
|
||||
message.reply("上传失败~")
|
||||
if (imagesUrl.size == 1) {
|
||||
val imageByteArray = imagesUrl[0].toURL().readBytes()
|
||||
val imageFileType = imageByteArray.getFileType()
|
||||
val imageBedUrl = ImageBed.upload(imageByteArray, imageFileType)
|
||||
val msg = MessageChain.Builder()
|
||||
.addText(imageBedUrl.makeShortLink())
|
||||
.addNewLine(2)
|
||||
.addText(imageBedUrl)
|
||||
.build()
|
||||
message.reply(msg)
|
||||
} else {
|
||||
val messages = mutableListOf<MessageChain>()
|
||||
imagesUrl.forEach {
|
||||
val imageByteArray = it.toURL().readBytes()
|
||||
val imageFileType = imageByteArray.getFileType()
|
||||
val imageBedUrl = ImageBed.upload(imageByteArray, imageFileType)
|
||||
val msg = MessageChain.Builder()
|
||||
.addText(imageBedUrl.makeShortLink())
|
||||
.addNewLine(2)
|
||||
.addText(imageBedUrl)
|
||||
.build()
|
||||
messages.add(msg)
|
||||
}
|
||||
message.reply(messages.asNode(configManager.selfId))
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
message.reply("上传失败: ${e.message}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,33 +7,52 @@
|
||||
|
||||
package cn.rtast.fancybot.commands.parse
|
||||
|
||||
import cn.rtast.fancybot.commands.misc.ShortLinkCommand.Companion.makeShortLink
|
||||
import cn.rtast.fancybot.configManager
|
||||
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
|
||||
import cn.rtast.rob.util.ob.asNode
|
||||
|
||||
object ImageURLCommand {
|
||||
|
||||
fun getImageUrl(message: GetMessage.Data): String? {
|
||||
fun getImageUrl(message: GetMessage.Data): List<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!!
|
||||
val images = mutableListOf<String>()
|
||||
message.message.forEach {
|
||||
if (it.type == ArrayMessageType.image) images.add(it.data.url!!)
|
||||
if (it.type == ArrayMessageType.mface) images.add(it.data.file!!)
|
||||
}
|
||||
return url
|
||||
return images
|
||||
} catch (_: NullPointerException) {
|
||||
return null
|
||||
return emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun callback(groupMessage: GroupMessage, message: GetMessage.Data) {
|
||||
val url = getImageUrl(message)
|
||||
if (url == null) {
|
||||
val images = getImageUrl(message)
|
||||
if (images.isEmpty()) {
|
||||
groupMessage.reply("这个消息里没有图片呢!")
|
||||
} else {
|
||||
groupMessage.reply(url)
|
||||
if (images.size == 1) {
|
||||
val msg = MessageChain.Builder()
|
||||
.addText(images.first().makeShortLink())
|
||||
.addNewLine(2)
|
||||
.addText(images.first())
|
||||
.build()
|
||||
groupMessage.reply(msg)
|
||||
} else {
|
||||
val messages = mutableListOf<MessageChain>()
|
||||
images.forEach {
|
||||
val msg = MessageChain.Builder()
|
||||
.addText(it)
|
||||
.addNewLine(2)
|
||||
.build()
|
||||
messages.add(msg)
|
||||
}
|
||||
groupMessage.reply(messages.asNode(configManager.selfId))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user