feat: update item

This commit is contained in:
2024-09-03 14:37:00 +08:00
parent 3a0dee8755
commit ca7a9f5002
10 files changed
+159 -55

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.5.6" ronebotVersion = "1.5.7"
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"
+13 -1
View File
@@ -18,6 +18,10 @@ import cn.rtast.fancybot.commands.QRCodeCommand
import cn.rtast.fancybot.commands.RedeemCommand import cn.rtast.fancybot.commands.RedeemCommand
import cn.rtast.fancybot.commands.SignCommand import cn.rtast.fancybot.commands.SignCommand
import cn.rtast.fancybot.entity.enums.WSType import cn.rtast.fancybot.entity.enums.WSType
import cn.rtast.fancybot.items.BaisiItem
import cn.rtast.fancybot.items.HeisiItem
import cn.rtast.fancybot.items.SetuItem
import cn.rtast.fancybot.util.item.ItemManager
import cn.rtast.fancybot.util.file.ConfigManager import cn.rtast.fancybot.util.file.ConfigManager
import cn.rtast.fancybot.util.initDatabase import cn.rtast.fancybot.util.initDatabase
import cn.rtast.rob.ROneBotFactory import cn.rtast.rob.ROneBotFactory
@@ -70,7 +74,14 @@ val commands = listOf(
AntiRevokeCommand() AntiRevokeCommand()
) )
val items = listOf(
HeisiItem(),
BaisiItem(),
SetuItem()
)
val configManager = ConfigManager() val configManager = ConfigManager()
val itemManager = ItemManager()
suspend fun main() { suspend fun main() {
val fancyBot = FancyBot() val fancyBot = FancyBot()
@@ -84,6 +95,7 @@ suspend fun main() {
ROneBotFactory.createServer(port, accessToken, fancyBot) ROneBotFactory.createServer(port, accessToken, fancyBot)
} }
val commandManager = rob.commandManager val commandManager = rob.commandManager
commands.forEach { commandManager.register(it) }
initDatabase() initDatabase()
commands.forEach { commandManager.register(it) }
items.forEach { itemManager.register(it) }
} }
@@ -32,7 +32,7 @@ class AntiRevokeCommand : BaseCommand() {
suspend fun getMessageCallback(listener: OBMessage, message: GetMessage) { suspend fun getMessageCallback(listener: OBMessage, message: GetMessage) {
val msgList = mutableListOf<ArrayMessage>() val msgList = mutableListOf<ArrayMessage>()
msgList.add(ArrayMessage(ArrayMessageType.at, ArrayMessage.Data(qq = message.data.sender.userId.toString()))) msgList.add(ArrayMessage(ArrayMessageType.at, ArrayMessage.Data(qq = message.data.sender.userId.toString())))
msgList.add(ArrayMessage(ArrayMessageType.text, ArrayMessage.Data(text = "\n被撤回的消息如下: "))) msgList.add(ArrayMessage(ArrayMessageType.text, ArrayMessage.Data(text = "\n被撤回的消息如下: \n")))
msgList.addAll(message.data.message) msgList.addAll(message.data.message)
listener.sendGroupMessage(message.data.groupId!!, msgList) listener.sendGroupMessage(message.data.groupId!!, msgList)
} }
@@ -7,9 +7,7 @@
package cn.rtast.fancybot.commands package cn.rtast.fancybot.commands
import cn.rtast.fancybot.entity.Baisi import cn.rtast.fancybot.itemManager
import cn.rtast.fancybot.entity.Setu
import cn.rtast.fancybot.util.Http
import cn.rtast.rob.entity.GroupMessage import cn.rtast.rob.entity.GroupMessage
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
@@ -18,12 +16,6 @@ import cn.rtast.rob.util.ob.OBMessage
class RedeemCommand : BaseCommand() { class RedeemCommand : BaseCommand() {
override val commandNames = listOf("/redeem", "/兑换", "/rdm") override val commandNames = listOf("/redeem", "/兑换", "/rdm")
private val items = mapOf(
"色图" to 50,
"黑丝" to 60,
"白丝" to 70
)
override suspend fun executeGroup(listener: OBMessage, message: GroupMessage, args: List<String>) { override suspend fun executeGroup(listener: OBMessage, message: GroupMessage, args: List<String>) {
val status = signManager.getStatus(message.sender.userId) val status = signManager.getStatus(message.sender.userId)
if (status == null) { if (status == null) {
@@ -36,7 +28,8 @@ class RedeemCommand : BaseCommand() {
} }
val item = args.first() val item = args.first()
if (item == "list" || item == "列表") { if (item == "list" || item == "列表") {
val priceTable = items.entries.joinToString("\n") { (key, value) -> "名称: $key=$value 积分" } val priceTable =
itemManager.items.joinToString("\n") { "[${it.itemNames.joinToString("|")}]:${it.itemPrice}积分" }
val msg = MessageChain.Builder() val msg = MessageChain.Builder()
.addAt(message.sender.userId) .addAt(message.sender.userId)
.addNewLine() .addNewLine()
@@ -45,8 +38,8 @@ class RedeemCommand : BaseCommand() {
listener.sendGroupMessage(message.groupId, msg) listener.sendGroupMessage(message.groupId, msg)
return return
} }
val selectedItemKey = items.keys.find { it == item } val selectedItem = itemManager.items.find { it.itemNames.any { any -> any == item } }
if (selectedItemKey == null) { if (selectedItem == null) {
val msg = MessageChain.Builder() val msg = MessageChain.Builder()
.addAt(message.sender.userId) .addAt(message.sender.userId)
.addText("没有找到你想兑换的东西呢") .addText("没有找到你想兑换的东西呢")
@@ -56,8 +49,8 @@ class RedeemCommand : BaseCommand() {
listener.sendGroupMessage(message.groupId, msg) listener.sendGroupMessage(message.groupId, msg)
return return
} }
val selectedItemPrice = items[item]!! val selectedItemPrice =selectedItem.itemPrice
if (selectedItemPrice > status?.points!!) { if (selectedItemPrice > status.points) {
val msg = MessageChain.Builder() val msg = MessageChain.Builder()
.addAt(message.sender.userId) .addAt(message.sender.userId)
.addText("你的积分不够兑换这个物品呢~") .addText("你的积分不够兑换这个物品呢~")
@@ -75,37 +68,6 @@ class RedeemCommand : BaseCommand() {
.addText("你花费了 $selectedItemPrice 点积分来兑换奖品, 还剩 $afterStatus 点积分") .addText("你花费了 $selectedItemPrice 点积分来兑换奖品, 还剩 $afterStatus 点积分")
.build() .build()
listener.sendGroupMessage(message.groupId, msg) listener.sendGroupMessage(message.groupId, msg)
when (selectedItemKey) { selectedItem.redeemGroup(listener, message, afterStatus)
"黑丝" -> {
val url = Http.get<Baisi>("https://v2.api-m.com/api/heisi").data
val msg = MessageChain.Builder()
.addAt(message.sender.userId)
.addImage(url)
.build()
listener.sendGroupMessage(message.groupId, msg)
}
"色图" -> {
val url = Http.get<Setu>("https://setu.yuban10703.xyz/setu?r18=1&num=1")
.data.first().urls.original.replace(
"https://i.pximg.net",
"https://proxy.rtast.cn/https/i.pixiv.cat"
)
val msg = MessageChain.Builder()
.addAt(message.sender.userId)
.addImage(url)
.build()
listener.sendGroupMessage(message.groupId, msg)
}
"白丝" -> {
val url = Http.get<Baisi>("https://v2.api-m.com/api/baisi").data
val msg = MessageChain.Builder()
.addAt(message.sender.userId)
.addImage(url)
.build()
listener.sendGroupMessage(message.groupId, msg)
}
}
} }
} }
@@ -8,13 +8,9 @@
package cn.rtast.fancybot.entity package cn.rtast.fancybot.entity
data class Setu( data class Setu(
val data: List<Data>
) {
data class Data(
val urls: URLS val urls: URLS
) ) {
data class URLS( data class URLS(
val original: String val large: String
) )
} }
@@ -0,0 +1,30 @@
/*
* Copyright © 2024 RTAkland
* Author: RTAkland
* Date: 2024/9/3
*/
package cn.rtast.fancybot.items
import cn.rtast.fancybot.entity.Baisi
import cn.rtast.fancybot.util.Http
import cn.rtast.fancybot.util.item.Item
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.util.ob.MessageChain
import cn.rtast.rob.util.ob.OBMessage
class BaisiItem : Item() {
override val itemNames = listOf("baisi", "白丝", "bs")
override val itemPrice = 70
override suspend fun redeemInGroup(listener: OBMessage, message: GroupMessage, after: Long) {
val url = Http.get<Baisi>("https://v2.api-m.com/api/baisi").data
val msg = MessageChain.Builder()
.addAt(message.sender.userId)
.addImage(url)
.build()
listener.sendGroupMessage(message.groupId, msg)
}
}
@@ -0,0 +1,29 @@
/*
* Copyright © 2024 RTAkland
* Author: RTAkland
* Date: 2024/9/3
*/
package cn.rtast.fancybot.items
import cn.rtast.fancybot.entity.Baisi
import cn.rtast.fancybot.util.Http
import cn.rtast.fancybot.util.item.Item
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.util.ob.MessageChain
import cn.rtast.rob.util.ob.OBMessage
class HeisiItem: Item() {
override val itemNames = listOf("heisi", "黑丝", "hs")
override val itemPrice = 70
override suspend fun redeemInGroup(listener: OBMessage, message: GroupMessage, after: Long) {
val url = Http.get<Baisi>("https://v2.api-m.com/api/heisi").data
val msg = MessageChain.Builder()
.addAt(message.sender.userId)
.addImage(url)
.build()
listener.sendGroupMessage(message.groupId, msg)
}
}
@@ -0,0 +1,29 @@
/*
* Copyright © 2024 RTAkland
* Author: RTAkland
* Date: 2024/9/3
*/
package cn.rtast.fancybot.items
import cn.rtast.fancybot.entity.Setu
import cn.rtast.fancybot.util.Http
import cn.rtast.fancybot.util.item.Item
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.util.ob.MessageChain
import cn.rtast.rob.util.ob.OBMessage
class SetuItem: Item() {
override val itemNames = listOf("setu", "色图", "st")
override val itemPrice = 80
override suspend fun redeemInGroup(listener: OBMessage, message: GroupMessage, after: Long) {
val url = Http.get<Setu>("https://api.rtast.cn/api/setu").urls.large
val msg = MessageChain.Builder()
.addAt(message.sender.userId)
.addImage(url)
.build()
listener.sendGroupMessage(message.groupId, msg)
}
}
@@ -0,0 +1,29 @@
/*
* Copyright © 2024 RTAkland
* Author: RTAkland
* Date: 2024/9/3
*/
package cn.rtast.fancybot.util.item
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.entity.PrivateMessage
import cn.rtast.rob.util.ob.OBMessage
abstract class Item {
abstract val itemNames: List<String>
abstract val itemPrice: Int
protected open suspend fun redeemInGroup(listener: OBMessage, message: GroupMessage, after: Long) {}
protected open suspend fun redeemInPrivate(listener: OBMessage, message: PrivateMessage, after: Long) {}
suspend fun redeemGroup(listener: OBMessage, message: GroupMessage, after: Long) {
this.redeemInGroup(listener, message, after)
}
suspend fun redeemPrivate(listener: OBMessage, message: PrivateMessage, after: Long) {
this.redeemInPrivate(listener, message, after)
}
}
@@ -0,0 +1,17 @@
/*
* Copyright © 2024 RTAkland
* Author: RTAkland
* Date: 2024/9/3
*/
package cn.rtast.fancybot.util.item
class ItemManager {
val items = mutableListOf<Item>()
fun register(item: Item) {
items.add(item)
}
}