feat: update lib and fix bug
This commit is contained in:
5 files changed
+63
-81
No files matched your search
@@ -8,25 +8,23 @@
|
||||
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
|
||||
import cn.rtast.rob.util.ob.OneBotListener
|
||||
|
||||
object ImageURLCommand {
|
||||
|
||||
suspend fun callback(listener: OneBotListener, message: GetMessage) {
|
||||
suspend fun callback(groupMessage: GroupMessage, message: GetMessage.Data) {
|
||||
val msg = MessageChain.Builder()
|
||||
.addReply(message.data.messageId)
|
||||
.addReply(message.messageId)
|
||||
.addText("哈哈哈哈图片来咯~")
|
||||
.addNewLine()
|
||||
val image = message.data.message.find { it.type == ArrayMessageType.image }
|
||||
val image = message.message.find { it.type == ArrayMessageType.image }
|
||||
if (image == null) {
|
||||
val gif = message.data.message.find { it.type == ArrayMessageType.mface }!!
|
||||
val gif = message.message.find { it.type == ArrayMessageType.mface }!!
|
||||
msg.addText(gif.data.url!!)
|
||||
} else {
|
||||
msg.addText(image.data.file!!)
|
||||
|
||||
}
|
||||
listener.sendGroupMessage(message.data.groupId!!, msg.build())
|
||||
groupMessage.reply(msg.build())
|
||||
}
|
||||
}
|
||||
@@ -9,37 +9,50 @@ package cn.rtast.fancybot.commands.parse
|
||||
|
||||
import cn.rtast.fancybot.util.makeGif
|
||||
import cn.rtast.fancybot.util.str.encodeToBase64
|
||||
import cn.rtast.rob.entity.GetMessage
|
||||
import cn.rtast.rob.entity.GroupMessage
|
||||
import cn.rtast.rob.enums.ArrayMessageType
|
||||
import cn.rtast.rob.util.BaseCommand
|
||||
import cn.rtast.rob.util.ob.MessageChain
|
||||
import cn.rtast.rob.util.ob.OneBotListener
|
||||
import com.madgag.gif.fmsware.AnimatedGifEncoder
|
||||
import com.madgag.gif.fmsware.GifDecoder
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.net.URI
|
||||
|
||||
object ReverseGIFCommand {
|
||||
class ReverseGIFCommand : BaseCommand() {
|
||||
override val commandNames = listOf("倒放")
|
||||
|
||||
private fun reverseGif(gifUrl: String): String {
|
||||
val gifStream = URI(gifUrl).toURL().openStream()
|
||||
val decoder = GifDecoder()
|
||||
decoder.read(gifStream)
|
||||
val frames = (0 until decoder.frameCount).map { decoder.getFrame(it) }.reversed()
|
||||
val gifBytes = decoder.makeGif(frames)
|
||||
return gifBytes.encodeToBase64()
|
||||
companion object {
|
||||
private val waitingList = mutableListOf<Long>()
|
||||
|
||||
private fun reverseGif(gifUrl: String): String {
|
||||
val gifStream = URI(gifUrl).toURL().openStream()
|
||||
val decoder = GifDecoder()
|
||||
decoder.read(gifStream)
|
||||
val frames = (0 until decoder.frameCount).map { decoder.getFrame(it) }.reversed()
|
||||
val gifBytes = decoder.makeGif(frames)
|
||||
return gifBytes.encodeToBase64()
|
||||
}
|
||||
|
||||
suspend fun callback(message: GroupMessage) {
|
||||
if (message.sender.userId !in waitingList) return
|
||||
val gifUrl = if (message.message.find { it.type == ArrayMessageType.mface } == null) {
|
||||
message.message.find { it.type == ArrayMessageType.image }!!.data.file!!
|
||||
} else {
|
||||
message.message.find { it.type == ArrayMessageType.mface }!!.data.url!!
|
||||
}
|
||||
val base64String = this.reverseGif(gifUrl)
|
||||
val msg = MessageChain.Builder().addImage(base64String, true).build()
|
||||
message.reply(msg)
|
||||
waitingList.removeIf { it == message.sender.userId }
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun callback(listener: OneBotListener, message: GetMessage) {
|
||||
val gifUrl = if (message.data.message.find { it.type == ArrayMessageType.mface } == null) {
|
||||
message.data.message.find { it.type == ArrayMessageType.image }!!.data.file!!
|
||||
override suspend fun executeGroup(listener: OneBotListener, message: GroupMessage, args: List<String>) {
|
||||
if (message.sender.userId !in waitingList) {
|
||||
waitingList.add(message.sender.userId)
|
||||
message.reply("发送一张动图来继续操作")
|
||||
} else {
|
||||
message.data.message.find { it.type == ArrayMessageType.mface }!!.data.url!!
|
||||
message.reply("发送错误本次操作已取消")
|
||||
waitingList.removeIf { it == message.sender.userId }
|
||||
}
|
||||
val base64String = this.reverseGif(gifUrl)
|
||||
val msg = MessageChain.Builder()
|
||||
.addReply(message.data.messageId)
|
||||
.addImage(base64String, true)
|
||||
.build()
|
||||
listener.sendGroupMessage(message.data.groupId!!, msg)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user