feat: support get multi image get

This commit is contained in:
2024-10-09 14:55:03 +08:00
parent 44c622190d
commit cd69d9a18e
2 files changed
+62 -25

No files matched your search

@@ -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))
}
}
}
}