V0.1.1 实现 #1 支持保存转发消息中的图片

This commit is contained in:
筱傑 2021-12-22 21:26:56 +08:00
parent bcfc156bd0
commit 8a1b8d5a48
2 changed files with 33 additions and 18 deletions

View File

@ -7,7 +7,7 @@ plugins {
}
group = "top.jie65535"
version = "0.1.0"
version = "0.1.1"
repositories {
mavenLocal()

View File

@ -5,8 +5,10 @@ import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription
import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin
import net.mamoe.mirai.event.events.MessageEvent
import net.mamoe.mirai.event.globalEventChannel
import net.mamoe.mirai.message.data.ForwardMessage
import net.mamoe.mirai.message.data.Image
import net.mamoe.mirai.message.data.Image.Key.queryUrl
import net.mamoe.mirai.message.data.MessageChain
import net.mamoe.mirai.utils.info
import okhttp3.OkHttpClient
import okhttp3.Request
@ -18,7 +20,7 @@ object JPictureArchiving : KotlinPlugin(
JvmPluginDescription(
id = "top.jie65535.mirai-console-jpa-plugin",
name = "J Picture Archiving",
version = "0.1.0"
version = "0.1.1"
) {
author("jie65535")
info("这个插件只做一件事,将机器人收到的所有图片存档")
@ -35,9 +37,24 @@ object JPictureArchiving : KotlinPlugin(
JPACommand.register()
globalEventChannel().subscribeAlways<MessageEvent> {
message.filterIsInstance<Image>().forEach {
val url = it.queryUrl()
val filePath = "${this.subject.id}/${it.imageId}"
saveImages(this.subject.id.toString(), message)
}
}
private suspend fun saveImages(from: String, message: MessageChain) {
val fm = message[ForwardMessage]
if (fm != null) {
fm.nodeList.forEach { saveImages(from, it.messageChain) }
} else {
message.filterIsInstance<Image>().forEach { img ->
saveImage(from, img)
}
}
}
private suspend fun saveImage(from: String, image: Image) {
val url = image.queryUrl()
val filePath = "${from}/${image.imageId}"
val file = if (JPAPluginConfig.archiveDirectory.isBlank()) {
resolveDataFile(filePath)
} else {
@ -52,6 +69,4 @@ object JPictureArchiving : KotlinPlugin(
logger.info("Saved ${file.path}.")
}
}
}
}
}