fix: fix forward msg bug

This commit is contained in:
2024-09-23 18:22:27 +08:00
parent 07a94fda32
commit a29f9ba00a
3 files changed
+47 -20

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
[versions] [versions]
kotlinVersion = "2.0.10" kotlinVersion = "2.0.10"
ronebotVersion = "1.9.1" ronebotVersion = "1.9.2"
shadowVersion = "8.3.0" shadowVersion = "8.3.0"
okhttpVersion = "5.0.0-alpha.14" okhttpVersion = "5.0.0-alpha.14"
exposedVersion = "0.53.0" exposedVersion = "0.53.0"
@@ -9,14 +9,20 @@ package cn.rtast.fancybot.commands.lookup
import cn.rtast.fancybot.entity.cigarette.Cigarette import cn.rtast.fancybot.entity.cigarette.Cigarette
import cn.rtast.fancybot.util.Http import cn.rtast.fancybot.util.Http
import cn.rtast.fancybot.util.str.encodeToBase64
import cn.rtast.rob.entity.GroupMessage import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.segment.Node
import cn.rtast.rob.util.BaseCommand import cn.rtast.rob.util.BaseCommand
import cn.rtast.rob.util.ob.MessageChain import cn.rtast.rob.util.ob.MessageChain
import cn.rtast.rob.util.ob.NodeMessageChain
import cn.rtast.rob.util.ob.OneBotListener import cn.rtast.rob.util.ob.OneBotListener
import java.net.URI
class CigaretteCommand : BaseCommand() { class CigaretteCommand : BaseCommand() {
override val commandNames = listOf("/香烟", "/tobacco", "/cigarette") 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<String>) { override suspend fun executeGroup(listener: OneBotListener, message: GroupMessage, args: List<String>) {
if (args.isEmpty()) { if (args.isEmpty()) {
val msg = MessageChain.Builder() 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 limit = if (args.size == 1) 3 else if (args.last().toInt() > 10) 3 else args.last().toInt()
val productName = args.first() val productName = args.first()
val result = Http.get<Cigarette>( val result = Http.get<Cigarette>(apiUrl, mapOf("productname" to productName))
"https://www.yanyue.cn/api/rc/product/yanlist", val nodeMsg = NodeMessageChain.Builder()
mapOf("productname" to productName) val headerMsg = MessageChain.Builder()
)
val msg = MessageChain.Builder()
.addAt(message.sender.userId)
.addNewLine()
.addText("搜索到${result.totalCount}条结果, 仅展示前 $limit 条结果哦~") .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 { 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}") .addText("名称: ${it.productName} | 类型: ${it.type.typeName}")
.addNewLine() .addNewLine()
.addText("焦油量: ${it.tar}mg | 尼古丁含量: ${it.nicotine}mg") .addText("焦油量: ${it.tar}mg | 尼古丁含量: ${it.nicotine}mg")
.addNewLine() .addNewLine()
.addText("参考价: 单盒: ${it.packPrice}元 | 整条: ${it.barPrice}") .addText("参考价: 单盒: ${it.packPrice}元 | 整条: ${it.barPrice}")
.addNewLine() .addNewLine()
.build()
val tempNode = Node(Node.Data("", message.userId.toString(), tempMsg.finalArrayMsgList))
nodeMsg.addNode(tempNode)
} }
msg.addNewLine().addText("吸烟有害健康, 尽早戒烟有益健康。") val footerMsg = MessageChain.Builder()
listener.sendGroupMessage(message.groupId, msg.build()) .addText("吸烟有害健康, 尽早戒烟有益健康。")
.build()
val footerNode = Node(Node.Data("", message.userId.toString(), footerMsg.finalArrayMsgList))
nodeMsg.addNode(footerNode)
listener.sendGroupForwardMsg(message.groupId, nodeMsg.build())
} }
} }
@@ -9,26 +9,41 @@ package cn.rtast.fancybot.commands.misc
import cn.rtast.fancybot.entity.Setu import cn.rtast.fancybot.entity.Setu
import cn.rtast.fancybot.util.Http import cn.rtast.fancybot.util.Http
import cn.rtast.fancybot.util.str.encodeToBase64
import cn.rtast.rob.entity.GroupMessage import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.segment.Image
import cn.rtast.rob.segment.Node import cn.rtast.rob.segment.Node
import cn.rtast.rob.util.BaseCommand 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.NodeMessageChain
import cn.rtast.rob.util.ob.OneBotListener import cn.rtast.rob.util.ob.OneBotListener
import java.net.URI
class TenSetuCommand : BaseCommand() { class TenSetuCommand : BaseCommand() {
override val commandNames = listOf("十张色图") override val commandNames = listOf("十张色图")
override suspend fun executeGroup(listener: OneBotListener, message: GroupMessage, args: List<String>) { override suspend fun executeGroup(listener: OneBotListener, message: GroupMessage, args: List<String>) {
val nodeImages = mutableListOf<Image>() val nodeMsg = NodeMessageChain.Builder()
repeat(10) { repeat(10) {
val response = Http.get<Setu>("https://api.rtast.cn/api/setu") val response = Http.get<Setu>("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() .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())
} }
} }