feat: update lib and fix bug

This commit is contained in:
2024-09-24 00:48:23 +08:00
parent d208472b0a
commit 99c1c44ae0
5 files changed
+63 -81

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
[versions]
kotlinVersion = "2.0.10"
ronebotVersion = "1.9.2"
ronebotVersion = "1.10.0"
shadowVersion = "8.3.0"
okhttpVersion = "5.0.0-alpha.14"
exposedVersion = "0.53.0"
+15 -25
View File
@@ -75,6 +75,17 @@ class FancyBot : OneBotListener {
calculateResult?.let { message.reply(calculateResult) }
}
ReverseGIFCommand.callback(message)
AsciiArtCommand.callback(message)
if (message.message.any { it.type == ArrayMessageType.reply }) { // Image url parse
val command = message.message.reversed().find { it.type == ArrayMessageType.text }!!.data.text!!
val replyId = message.message.find { it.type == ArrayMessageType.reply }!!.data.id!!
if (command.contains("图来") || command.contains("图链")) {
val getMsg = this.getMessage(replyId.toString().toLong())
ImageURLCommand.callback(message, getMsg)
}
}
coroutineScope.launch {
message.message.forEach {
if (it.type == ArrayMessageType.image) {
@@ -88,8 +99,6 @@ class FancyBot : OneBotListener {
}
}
AsciiArtCommand.callback(message)
if (message.rawMessage.startsWith("https://github.com/") || message.rawMessage.startsWith("git@github.com:")) {
GitHubParseCommand.parse(this, message)
}
@@ -117,22 +126,12 @@ class FancyBot : OneBotListener {
}
BVParseCommand.getShortUrlBVID(shortUrl)
} else {
message.rawMessage.split("?").first().split("/").filter { it.isNotEmpty() && it.isNotBlank() }.last()
message.rawMessage.split("?").first()
.split("/")
.last { it.isNotEmpty() && it.isNotBlank() }
}
BVParseCommand.parse(this, bvid, message)
}
if (message.message.any { it.type == ArrayMessageType.reply }) { // Image url parse
val command = message.message.reversed().find { it.type == ArrayMessageType.text }!!.data.text!!
val replyId = message.message.find { it.type == ArrayMessageType.reply }!!.data.id!!
if (command.contains("图来") || command.contains("图链")) {
// get image url
this.getMessage(replyId.toString().toLong(), "imageUrl", message.groupId)
}
if (command.contains("倒放") || command.contains("df")) {
// reverse gif
this.getMessage(replyId.toString().toLong(), "reverseGif", message.groupId)
}
}
}
override suspend fun onGroupMessageRevoke(message: GroupRevokeMessage) {
@@ -145,15 +144,6 @@ class FancyBot : OneBotListener {
this.sendGroupMessage(message.groupId, msg)
}
override suspend fun onGetGroupMessageResponse(message: GetMessage) {
when (message.data.id) {
"revoke" -> AntiRevokeCommand.callback(this, message)
"imageUrl" -> ImageURLCommand.callback(this, message)
"reverseGif" -> ReverseGIFCommand.callback(this, message)
}
}
override suspend fun onWebsocketErrorEvent(ex: Exception) {
ex.printStackTrace()
}
@@ -209,7 +199,7 @@ val commands = listOf(
AsciiArtCommand(), StatusCommand(),
JueCommand(), ShortLinkCommand(),
TenSetuCommand(), ShotSelfCommand(),
ShotOtherCommand()
ShotOtherCommand(), ReverseGIFCommand()
)
val START_UP_TIME = Instant.now().epochSecond
@@ -9,41 +9,22 @@ package cn.rtast.fancybot.commands.misc
import cn.rtast.fancybot.configManager
import cn.rtast.rob.entity.ArrayMessage
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
class AntiRevokeCommand : BaseCommand() {
override val commandNames = listOf("/revoke", "/rv", "/防撤回")
override suspend fun executeGroup(listener: OneBotListener, message: GroupMessage, args: List<String>) {
if (message.sender.userId !in configManager.admins) {
message.reply("你不许用防撤回")
}
if (message.sender.userId !in configManager.admins) message.reply("你不许用防撤回")
val messageId = args.first().toLong()
listener.getMessage(messageId, "revoke", message.groupId)
val msg = MessageChain.Builder()
.addAt(message.sender.userId)
.addText("正在获取消息中...")
.build()
listener.sendGroupMessage(message.groupId, msg)
}
companion object {
suspend fun callback(listener: OneBotListener, message: GetMessage) {
val msgList = mutableListOf<ArrayMessage>()
msgList.add(
ArrayMessage(
ArrayMessageType.at,
ArrayMessage.Data(qq = message.data.sender.userId.toString())
)
)
msgList.add(ArrayMessage(ArrayMessageType.text, ArrayMessage.Data(text = "\n被撤回的消息如下: \n")))
msgList.addAll(message.data.message)
listener.sendGroupMessage(message.data.groupId!!, msgList)
}
val getMsg = listener.getMessage(messageId)
val msgList = mutableListOf<ArrayMessage>()
msgList.add(ArrayMessage(ArrayMessageType.at, ArrayMessage.Data(qq = getMsg.sender.userId.toString())))
msgList.add(ArrayMessage(ArrayMessageType.text, ArrayMessage.Data(text = "\n被撤回的消息如下: \n")))
msgList.addAll(getMsg.message)
listener.sendGroupMessage(message.groupId, msgList)
}
}
@@ -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)
}
}