diff --git a/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt b/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt index 47e963d..1279f19 100644 --- a/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt +++ b/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt @@ -31,7 +31,11 @@ import org.java_websocket.WebSocket class FancyBot : OBMessage { override suspend fun onGroupMessage(ws: WebSocket, message: GroupMessage, json: String) { - println(message.rawMessage) + val sender = message.sender.nickname + val senderId = message.sender.userId + val msg = message.rawMessage + val groupId = message.groupId + println("$sender($senderId: $groupId): $msg") } override suspend fun onGroupMessageRevoke(ws: WebSocket, message: GroupRevokeMessage) { diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/RedeemCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/RedeemCommand.kt new file mode 100644 index 0000000..0aef07f --- /dev/null +++ b/src/main/kotlin/cn/rtast/fancybot/commands/RedeemCommand.kt @@ -0,0 +1,111 @@ +/* + * Copyright © 2024 RTAkland + * Author: RTAkland + * Date: 2024/9/3 + */ + + +package cn.rtast.fancybot.commands + +import cn.rtast.fancybot.entity.Baisi +import cn.rtast.fancybot.entity.Setu +import cn.rtast.fancybot.util.Http +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") + + private val items = mapOf( + "色图" to 50, + "黑丝" to 60, + "白丝" to 70 + ) + + override suspend fun executeGroup(listener: OBMessage, message: GroupMessage, args: List) { + 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 = items.entries.joinToString("\n") { (key, value) -> "名称: $key=$value 积分" } + val msg = MessageChain.Builder() + .addAt(message.sender.userId) + .addNewLine() + .addText(priceTable) + .build() + listener.sendGroupMessage(message.groupId, msg) + return + } + val selectedItemKey = items.keys.find { it == item } + if (selectedItemKey == null) { + val msg = MessageChain.Builder() + .addAt(message.sender.userId) + .addText("没有找到你想兑换的东西呢") + .addNewLine() + .addText("你可以输入/兑换 list来查看所有可兑换的物品") + .build() + listener.sendGroupMessage(message.groupId, msg) + return + } + val selectedItemPrice = items[item]!! + 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) + when (selectedItemKey) { + "黑丝" -> { + val url = Http.get("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("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("https://v2.api-m.com/api/baisi").data + val msg = MessageChain.Builder() + .addAt(message.sender.userId) + .addImage(url) + .build() + listener.sendGroupMessage(message.groupId, msg) + } + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/SignCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/SignCommand.kt index 375466d..2fb8822 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/SignCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/SignCommand.kt @@ -8,8 +8,6 @@ package cn.rtast.fancybot.commands import cn.rtast.fancybot.ADMINS -import cn.rtast.fancybot.entity.Heisi -import cn.rtast.fancybot.util.Http import cn.rtast.fancybot.util.file.SignManager import cn.rtast.rob.entity.GroupMessage import cn.rtast.rob.enums.UserRole @@ -17,7 +15,7 @@ import cn.rtast.rob.util.BaseCommand import cn.rtast.rob.util.ob.MessageChain import cn.rtast.rob.util.ob.OBMessage -private val signManager = SignManager() +val signManager = SignManager() class SignCommand : BaseCommand() { override val commandNames = listOf("/签到", "/sign") @@ -49,11 +47,10 @@ class MyPointCommand : BaseCommand() { if (args.isNotEmpty() && (message.sender.role == UserRole.admin || message.sender.userId in ADMINS)) { val targetId = args.first().toLong() val targetData = signManager.getStatus(targetId) - val msg = MessageChain.Builder() - .addAt(message.sender.userId) + val msg = MessageChain.Builder().addAt(message.sender.userId) if (targetData == null) { - msg.addText("用户不存在") + msg.addText("用户不存在, 你需要先签到一次才能查询点数呢~") } else { msg.addText("用户: ${targetData.id} 的点数有: ${targetData.points}") } @@ -77,83 +74,3 @@ class MyPointCommand : BaseCommand() { } } } - -private val items = mapOf( - "色图" to 50, - "黑丝" to 60, - "白丝" to 70 -) - -class RedeemCommand : BaseCommand() { - override val commandNames = listOf("/redeem", "/兑换", "/rdm") - - override suspend fun executeGroup(listener: OBMessage, message: GroupMessage, args: List) { - val status = signManager.getStatus(message.sender.userId) - val item = args.first() - if (item == "list" || item == "列表") { - val priceTable = items.entries.joinToString("\n") { (key, value) -> "名称: $key=$value 积分" } - val msg = MessageChain.Builder() - .addAt(message.sender.userId) - .addNewLine() - .addText(priceTable) - .build() - listener.sendGroupMessage(message.groupId, msg) - return - } - val selectedItemKey = items.keys.find { it == item } - if (selectedItemKey == null) { - val msg = MessageChain.Builder() - .addAt(message.sender.userId) - .addText("没有找到你想兑换的东西呢") - .addNewLine() - .addText("你可以输入/兑换 list来查看所有可兑换的物品") - .build() - listener.sendGroupMessage(message.groupId, msg) - return - } - val selectedItemPrice = items[item]!! - 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 - } - signManager.redeemItem(message.sender.userId, selectedItemPrice) - val msg = MessageChain.Builder() - .addAt(message.sender.userId) - .addText("兑换成功正在发送奖品中~") - .build() - listener.sendGroupMessage(message.groupId, msg) - when (selectedItemKey) { - "黑丝" -> { - val url = Http.get("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 msg = MessageChain.Builder() - .addAt(message.sender.userId) - .addImage("https://moe.jitsu.top/img/?sort=r18&size=small") - .build() - listener.sendGroupMessage(message.groupId, msg) - } - - "白丝" -> { - val url = Http.get("https://v2.api-m.com/api/baisi").data - val msg = MessageChain.Builder() - .addAt(message.sender.userId) - .addImage(url) - .build() - listener.sendGroupMessage(message.groupId, msg) - } - } - } -} \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/entity/Heisi.kt b/src/main/kotlin/cn/rtast/fancybot/entity/Baisi.kt similarity index 88% rename from src/main/kotlin/cn/rtast/fancybot/entity/Heisi.kt rename to src/main/kotlin/cn/rtast/fancybot/entity/Baisi.kt index 15b21f3..3b0daf9 100644 --- a/src/main/kotlin/cn/rtast/fancybot/entity/Heisi.kt +++ b/src/main/kotlin/cn/rtast/fancybot/entity/Baisi.kt @@ -7,6 +7,6 @@ package cn.rtast.fancybot.entity -data class Heisi( +data class Baisi( val data: String, ) \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/entity/Setu.kt b/src/main/kotlin/cn/rtast/fancybot/entity/Setu.kt new file mode 100644 index 0000000..79a7e74 --- /dev/null +++ b/src/main/kotlin/cn/rtast/fancybot/entity/Setu.kt @@ -0,0 +1,20 @@ +/* + * Copyright © 2024 RTAkland + * Author: RTAkland + * Date: 2024/9/3 + */ + + +package cn.rtast.fancybot.entity + +data class Setu( + val data: List +) { + data class Data( + val urls: URLS + ) + + data class URLS( + val original: String + ) +} \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/util/file/SignManager.kt b/src/main/kotlin/cn/rtast/fancybot/util/file/SignManager.kt index d32da19..be589ac 100644 --- a/src/main/kotlin/cn/rtast/fancybot/util/file/SignManager.kt +++ b/src/main/kotlin/cn/rtast/fancybot/util/file/SignManager.kt @@ -68,12 +68,13 @@ class SignManager { return getRecord(id) } - suspend fun redeemItem(id: Long, itemPrice: Int) { + suspend fun redeemItem(id: Long, itemPrice: Int): JrrpRecord? { val current = getRecord(id) suspendedTransaction { SignTable.update({ userId eq id }) { it[point] = current?.points!! - itemPrice } } + return getRecord(id) } } \ No newline at end of file