73 lines
2.9 KiB
Kotlin
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)
|
|
}
|
|
} |