Files
FancyBot/src/main/kotlin/cn/rtast/fancybot/commands/RedeemCommand.kt
T
2024-09-03 14:37:00 +08:00

73 lines
2.9 KiB
Kotlin

/*
* Copyright © 2024 RTAkland
* Author: RTAkland
* Date: 2024/9/3
*/
package cn.rtast.fancybot.commands
import cn.rtast.fancybot.itemManager
import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.util.BaseCommand
import cn.rtast.rob.util.ob.MessageChain
import cn.rtast.rob.util.ob.OBMessage
class RedeemCommand : BaseCommand() {
override val commandNames = listOf("/redeem", "/兑换", "/rdm")
override suspend fun executeGroup(listener: OBMessage, message: GroupMessage, args: List<String>) {
val status = signManager.getStatus(message.sender.userId)
if (status == null) {
val msg = MessageChain.Builder()
.addAt(message.sender.userId)
.addText("你还没有签到过呢要签到一次才能兑换哦~")
.build()
listener.sendGroupMessage(message.groupId, msg)
return
}
val item = args.first()
if (item == "list" || item == "列表") {
val priceTable =
itemManager.items.joinToString("\n") { "[${it.itemNames.joinToString("|")}]:${it.itemPrice}积分" }
val msg = MessageChain.Builder()
.addAt(message.sender.userId)
.addNewLine()
.addText(priceTable)
.build()
listener.sendGroupMessage(message.groupId, msg)
return
}
val selectedItem = itemManager.items.find { it.itemNames.any { any -> any == item } }
if (selectedItem == null) {
val msg = MessageChain.Builder()
.addAt(message.sender.userId)
.addText("没有找到你想兑换的东西呢")
.addNewLine()
.addText("你可以输入/兑换 list来查看所有可兑换的物品")
.build()
listener.sendGroupMessage(message.groupId, msg)
return
}
val selectedItemPrice =selectedItem.itemPrice
if (selectedItemPrice > status.points) {
val msg = MessageChain.Builder()
.addAt(message.sender.userId)
.addText("你的积分不够兑换这个物品呢~")
.addNewLine()
.addText("你有: ${status.points}个积分, 兑换需要: $selectedItemPrice 个积分~\"")
.build()
listener.sendGroupMessage(message.groupId, msg)
return
}
val afterStatus = signManager.redeemItem(message.sender.userId, selectedItemPrice)?.points!!
val msg = MessageChain.Builder()
.addAt(message.sender.userId)
.addText("兑换成功正在发送奖品中~")
.addNewLine()
.addText("你花费了 $selectedItemPrice 点积分来兑换奖品, 还剩 $afterStatus 点积分")
.build()
listener.sendGroupMessage(message.groupId, msg)
selectedItem.redeemGroup(listener, message, afterStatus)
}
}