feat: update item
This commit is contained in:
10 files changed
+159
-55
No files matched your search
@@ -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"
|
||||||
|
|||||||
@@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user