diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fda37a2..3840d7c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] kotlinVersion = "2.0.10" -ronebotVersion = "1.9.1" +ronebotVersion = "1.9.2" shadowVersion = "8.3.0" okhttpVersion = "5.0.0-alpha.14" exposedVersion = "0.53.0" diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/lookup/CigaretteCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/CigaretteCommand.kt index 4f61925..cc27dcc 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/lookup/CigaretteCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/CigaretteCommand.kt @@ -9,14 +9,20 @@ package cn.rtast.fancybot.commands.lookup import cn.rtast.fancybot.entity.cigarette.Cigarette import cn.rtast.fancybot.util.Http +import cn.rtast.fancybot.util.str.encodeToBase64 import cn.rtast.rob.entity.GroupMessage +import cn.rtast.rob.segment.Node import cn.rtast.rob.util.BaseCommand import cn.rtast.rob.util.ob.MessageChain +import cn.rtast.rob.util.ob.NodeMessageChain import cn.rtast.rob.util.ob.OneBotListener +import java.net.URI class CigaretteCommand : BaseCommand() { override val commandNames = listOf("/香烟", "/tobacco", "/cigarette") + private val apiUrl = "https://www.yanyue.cn/api/rc/product/yanlist" + override suspend fun executeGroup(listener: OneBotListener, message: GroupMessage, args: List) { if (args.isEmpty()) { val msg = MessageChain.Builder() @@ -31,26 +37,32 @@ class CigaretteCommand : BaseCommand() { } val limit = if (args.size == 1) 3 else if (args.last().toInt() > 10) 3 else args.last().toInt() val productName = args.first() - val result = Http.get( - "https://www.yanyue.cn/api/rc/product/yanlist", - mapOf("productname" to productName) - ) - val msg = MessageChain.Builder() - .addAt(message.sender.userId) - .addNewLine() + val result = Http.get(apiUrl, mapOf("productname" to productName)) + val nodeMsg = NodeMessageChain.Builder() + val headerMsg = MessageChain.Builder() .addText("搜索到${result.totalCount}条结果, 仅展示前 $limit 条结果哦~") - .addNewLine() - + .build() + val headerNode = Node(Node.Data("", message.userId.toString(), headerMsg.finalArrayMsgList)) + nodeMsg.addNode(headerNode) result.productList.asSequence().take(limit).forEach { - msg.addImage(it.cover) + val imageBase64 = URI(it.cover).toURL().readBytes().encodeToBase64() + val tempMsg = MessageChain.Builder() + .addImage(imageBase64, true) .addText("名称: ${it.productName} | 类型: ${it.type.typeName}") .addNewLine() .addText("焦油量: ${it.tar}mg | 尼古丁含量: ${it.nicotine}mg") .addNewLine() .addText("参考价: 单盒: ${it.packPrice}元 | 整条: ${it.barPrice}元") .addNewLine() + .build() + val tempNode = Node(Node.Data("", message.userId.toString(), tempMsg.finalArrayMsgList)) + nodeMsg.addNode(tempNode) } - msg.addNewLine().addText("吸烟有害健康, 尽早戒烟有益健康。") - listener.sendGroupMessage(message.groupId, msg.build()) + val footerMsg = MessageChain.Builder() + .addText("吸烟有害健康, 尽早戒烟有益健康。") + .build() + val footerNode = Node(Node.Data("", message.userId.toString(), footerMsg.finalArrayMsgList)) + nodeMsg.addNode(footerNode) + listener.sendGroupForwardMsg(message.groupId, nodeMsg.build()) } } \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/misc/TenSetuCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/misc/TenSetuCommand.kt index 6d0f3b1..f9d3fa5 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/misc/TenSetuCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/misc/TenSetuCommand.kt @@ -9,26 +9,41 @@ package cn.rtast.fancybot.commands.misc import cn.rtast.fancybot.entity.Setu import cn.rtast.fancybot.util.Http +import cn.rtast.fancybot.util.str.encodeToBase64 import cn.rtast.rob.entity.GroupMessage -import cn.rtast.rob.segment.Image import cn.rtast.rob.segment.Node import cn.rtast.rob.util.BaseCommand +import cn.rtast.rob.util.ob.MessageChain import cn.rtast.rob.util.ob.NodeMessageChain import cn.rtast.rob.util.ob.OneBotListener +import java.net.URI class TenSetuCommand : BaseCommand() { override val commandNames = listOf("十张色图") override suspend fun executeGroup(listener: OneBotListener, message: GroupMessage, args: List) { - val nodeImages = mutableListOf() + val nodeMsg = NodeMessageChain.Builder() repeat(10) { val response = Http.get("https://api.rtast.cn/api/setu") - if (!response.r18) nodeImages.add(Image(Image.Data(response.urls.large))) + if (!response.r18) { + try { + val imageBase64 = URI(response.urls.large).toURL().readBytes().encodeToBase64() + val tempMsg = MessageChain.Builder().addImage(imageBase64, true).build() + val tempNode = Node( + Node.Data("", message.userId.toString(), tempMsg.finalArrayMsgList) + ) + nodeMsg.addNode(tempNode) + } catch (_: Exception) { + } + } } - val node = Node(Node.Data("ROBOT", "1845464277", nodeImages)) - val nodeMsg = NodeMessageChain.Builder() - .addNode(node) + val footerMsg = MessageChain.Builder() + .addText("图片数量可能不足10张~") + .addNewLine() + .addText("因为过滤了R18的图片~") .build() - listener.sendGroupForwardMsg(message.groupId, nodeMsg) + val footerNode = Node(Node.Data("", message.userId.toString(), footerMsg.finalArrayMsgList)) + nodeMsg.addNode(footerNode) + listener.sendGroupForwardMsg(message.groupId, nodeMsg.build()) } } \ No newline at end of file