feat: update lib and fix bug
This commit is contained in:
5 files changed
+63
-81
No files matched your search
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user