feat: add r18 setu api
This commit is contained in:
5 files changed
+87
-22
No files matched your search
@@ -75,7 +75,7 @@ val START_UP_TIME = Instant.now().epochSecond
|
|||||||
val items = listOf(
|
val items = listOf(
|
||||||
HeisiItem(), BaisiItem(),
|
HeisiItem(), BaisiItem(),
|
||||||
SetuItem(), NiuziItem(),
|
SetuItem(), NiuziItem(),
|
||||||
TenSetuItem()
|
TenSetuItem(), TenSetuR18Item()
|
||||||
)
|
)
|
||||||
|
|
||||||
val commands = listOf(
|
val commands = listOf(
|
||||||
|
|||||||
+6
-2
@@ -5,11 +5,15 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
package cn.rtast.fancybot.entity
|
package cn.rtast.fancybot.entity.setu
|
||||||
|
|
||||||
|
import com.google.gson.annotations.SerializedName
|
||||||
|
|
||||||
data class Setu(
|
data class Setu(
|
||||||
val urls: URLS,
|
val urls: URLS,
|
||||||
val r18: Boolean
|
val r18: Boolean,
|
||||||
|
@SerializedName("author_id")
|
||||||
|
val authorId: Long,
|
||||||
) {
|
) {
|
||||||
data class URLS(
|
data class URLS(
|
||||||
val large: String
|
val large: String
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* Copyright © 2024 RTAkland
|
||||||
|
* Author: RTAkland
|
||||||
|
* Date: 2024/9/29
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
package cn.rtast.fancybot.entity.setu
|
||||||
|
|
||||||
|
data class SetuV2(
|
||||||
|
val pid: Long,
|
||||||
|
val uid: Long,
|
||||||
|
val title: String,
|
||||||
|
val author: String,
|
||||||
|
val urls: URLS,
|
||||||
|
val r18: Boolean,
|
||||||
|
val tags: List<String>
|
||||||
|
) {
|
||||||
|
data class URLS(
|
||||||
|
val regular: String,
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
package cn.rtast.fancybot.items
|
package cn.rtast.fancybot.items
|
||||||
|
|
||||||
import cn.rtast.fancybot.entity.Setu
|
import cn.rtast.fancybot.entity.setu.Setu
|
||||||
import cn.rtast.fancybot.niuziManager
|
import cn.rtast.fancybot.niuziManager
|
||||||
import cn.rtast.fancybot.util.Http
|
import cn.rtast.fancybot.util.Http
|
||||||
import cn.rtast.fancybot.util.item.Item
|
import cn.rtast.fancybot.util.item.Item
|
||||||
|
|||||||
@@ -8,17 +8,57 @@
|
|||||||
package cn.rtast.fancybot.items
|
package cn.rtast.fancybot.items
|
||||||
|
|
||||||
import cn.rtast.fancybot.configManager
|
import cn.rtast.fancybot.configManager
|
||||||
import cn.rtast.fancybot.entity.Setu
|
import cn.rtast.fancybot.entity.setu.Setu
|
||||||
|
import cn.rtast.fancybot.entity.setu.SetuV2
|
||||||
import cn.rtast.fancybot.util.Http
|
import cn.rtast.fancybot.util.Http
|
||||||
import cn.rtast.fancybot.util.item.Item
|
import cn.rtast.fancybot.util.item.Item
|
||||||
import cn.rtast.fancybot.util.str.encodeToBase64
|
import cn.rtast.fancybot.util.str.encodeToBase64
|
||||||
import cn.rtast.fancybot.util.str.fromArrayJson
|
import cn.rtast.fancybot.util.str.fromArrayJson
|
||||||
import cn.rtast.rob.entity.GroupMessage
|
import cn.rtast.rob.entity.GroupMessage
|
||||||
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 cn.rtast.rob.util.ob.asNode
|
import cn.rtast.rob.util.ob.asNode
|
||||||
import java.net.URI
|
import java.net.URI
|
||||||
|
|
||||||
|
|
||||||
|
private fun getImages(r18: Boolean): NodeMessageChain {
|
||||||
|
val msg = mutableListOf<MessageChain>()
|
||||||
|
if (r18) {
|
||||||
|
val response = Http.get("https://api.rtast.cn/api/setu/v2?size=10")
|
||||||
|
.fromArrayJson<List<SetuV2>>()
|
||||||
|
msg.add(MessageChain.Builder().addText("因为是R18所以你需要自行访问链接来查看图片~").build())
|
||||||
|
response.forEach {
|
||||||
|
try {
|
||||||
|
val tempMsg = MessageChain.Builder()
|
||||||
|
.addText(it.urls.regular)
|
||||||
|
.addNewLine()
|
||||||
|
.addText("标题: ${it.title}")
|
||||||
|
.addNewLine()
|
||||||
|
.addText("作品ID: ${it.pid}")
|
||||||
|
.addNewLine()
|
||||||
|
.addText("作者: ${it.author}(${it.uid})")
|
||||||
|
.addNewLine()
|
||||||
|
.addText("标签: ${it.tags.joinToString(" | ")}")
|
||||||
|
.build()
|
||||||
|
msg.add(tempMsg)
|
||||||
|
} catch (_: Exception) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val response = Http.get("https://api.rtast.cn/api/setu?size=10").fromArrayJson<List<Setu>>()
|
||||||
|
response.filter { !it.r18 }.map { it.urls.large }.forEach {
|
||||||
|
try {
|
||||||
|
val imageBase64 = URI(it).toURL().readBytes().encodeToBase64()
|
||||||
|
val tempMsg = MessageChain.Builder().addImage(imageBase64, true).build()
|
||||||
|
msg.add(tempMsg)
|
||||||
|
} catch (_: Exception) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return msg.asNode(configManager.selfId)
|
||||||
|
}
|
||||||
|
|
||||||
class TenSetuItem : Item() {
|
class TenSetuItem : Item() {
|
||||||
override val itemNames = listOf("十张色图")
|
override val itemNames = listOf("十张色图")
|
||||||
override val itemPrice = 20.0
|
override val itemPrice = 20.0
|
||||||
@@ -28,23 +68,22 @@ class TenSetuItem : Item() {
|
|||||||
message: GroupMessage,
|
message: GroupMessage,
|
||||||
after: Double
|
after: Double
|
||||||
): MessageChain.Builder {
|
): MessageChain.Builder {
|
||||||
val imageMessages = mutableListOf<MessageChain>()
|
val msg = getImages(false)
|
||||||
val response = Http.get("https://api.rtast.cn/api/setu?size=10").fromArrayJson<List<Setu>>()
|
message.reply(msg)
|
||||||
response.filter { !it.r18 }.map { it.urls.large }.forEach {
|
return MessageChain.Builder()
|
||||||
try {
|
}
|
||||||
val imageBase64 = URI(it).toURL().readBytes().encodeToBase64()
|
}
|
||||||
val tempMsg = MessageChain.Builder().addImage(imageBase64, true).build()
|
|
||||||
imageMessages.add(tempMsg)
|
class TenSetuR18Item : Item() {
|
||||||
} catch (_: Exception) {
|
override val itemNames = listOf("十张色图r")
|
||||||
}
|
override val itemPrice = 50.0
|
||||||
}
|
|
||||||
val footerMsg = MessageChain.Builder()
|
override suspend fun redeemInGroup(
|
||||||
.addText("图片数量可能不足10张~")
|
listener: OneBotListener,
|
||||||
.addNewLine()
|
message: GroupMessage,
|
||||||
.addText("因为过滤了R18的图片~")
|
after: Double
|
||||||
.build()
|
): MessageChain.Builder {
|
||||||
imageMessages.add(footerMsg)
|
message.reply(getImages(true))
|
||||||
message.reply(imageMessages.asNode(configManager.selfId))
|
|
||||||
return MessageChain.Builder()
|
return MessageChain.Builder()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user