chore: update
This commit is contained in:
6 files changed
+142
-89
No files matched your search
@@ -31,7 +31,11 @@ import org.java_websocket.WebSocket
|
|||||||
class FancyBot : OBMessage {
|
class FancyBot : OBMessage {
|
||||||
|
|
||||||
override suspend fun onGroupMessage(ws: WebSocket, message: GroupMessage, json: String) {
|
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) {
|
override suspend fun onGroupMessageRevoke(ws: WebSocket, message: GroupRevokeMessage) {
|
||||||
|
|||||||
@@ -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<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 = 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<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,8 +8,6 @@
|
|||||||
package cn.rtast.fancybot.commands
|
package cn.rtast.fancybot.commands
|
||||||
|
|
||||||
import cn.rtast.fancybot.ADMINS
|
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.fancybot.util.file.SignManager
|
||||||
import cn.rtast.rob.entity.GroupMessage
|
import cn.rtast.rob.entity.GroupMessage
|
||||||
import cn.rtast.rob.enums.UserRole
|
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.MessageChain
|
||||||
import cn.rtast.rob.util.ob.OBMessage
|
import cn.rtast.rob.util.ob.OBMessage
|
||||||
|
|
||||||
private val signManager = SignManager()
|
val signManager = SignManager()
|
||||||
|
|
||||||
class SignCommand : BaseCommand() {
|
class SignCommand : BaseCommand() {
|
||||||
override val commandNames = listOf("/签到", "/sign")
|
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)) {
|
if (args.isNotEmpty() && (message.sender.role == UserRole.admin || message.sender.userId in ADMINS)) {
|
||||||
val targetId = args.first().toLong()
|
val targetId = args.first().toLong()
|
||||||
val targetData = signManager.getStatus(targetId)
|
val targetData = signManager.getStatus(targetId)
|
||||||
val msg = MessageChain.Builder()
|
val msg = MessageChain.Builder().addAt(message.sender.userId)
|
||||||
.addAt(message.sender.userId)
|
|
||||||
|
|
||||||
if (targetData == null) {
|
if (targetData == null) {
|
||||||
msg.addText("用户不存在")
|
msg.addText("用户不存在, 你需要先签到一次才能查询点数呢~")
|
||||||
} else {
|
} else {
|
||||||
msg.addText("用户: ${targetData.id} 的点数有: ${targetData.points}")
|
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<String>) {
|
|
||||||
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<Heisi>("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<Heisi>("https://v2.api-m.com/api/baisi").data
|
|
||||||
val msg = MessageChain.Builder()
|
|
||||||
.addAt(message.sender.userId)
|
|
||||||
.addImage(url)
|
|
||||||
.build()
|
|
||||||
listener.sendGroupMessage(message.groupId, msg)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+1
-1
@@ -7,6 +7,6 @@
|
|||||||
|
|
||||||
package cn.rtast.fancybot.entity
|
package cn.rtast.fancybot.entity
|
||||||
|
|
||||||
data class Heisi(
|
data class Baisi(
|
||||||
val data: String,
|
val data: String,
|
||||||
)
|
)
|
||||||
@@ -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>
|
||||||
|
) {
|
||||||
|
data class Data(
|
||||||
|
val urls: URLS
|
||||||
|
)
|
||||||
|
|
||||||
|
data class URLS(
|
||||||
|
val original: String
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -68,12 +68,13 @@ class SignManager {
|
|||||||
return getRecord(id)
|
return getRecord(id)
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun redeemItem(id: Long, itemPrice: Int) {
|
suspend fun redeemItem(id: Long, itemPrice: Int): JrrpRecord? {
|
||||||
val current = getRecord(id)
|
val current = getRecord(id)
|
||||||
suspendedTransaction {
|
suspendedTransaction {
|
||||||
SignTable.update({ userId eq id }) {
|
SignTable.update({ userId eq id }) {
|
||||||
it[point] = current?.points!! - itemPrice
|
it[point] = current?.points!! - itemPrice
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return getRecord(id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user