From 3c147c9ad643fdea31e25f3f46ddc03350fbe26c Mon Sep 17 00:00:00 2001 From: RTAkland Date: Thu, 26 Sep 2024 18:43:24 +0800 Subject: [PATCH] feat: add niuzi rank, and niuzi bank rank --- gradle/libs.versions.toml | 2 +- src/main/kotlin/cn/rtast/fancybot/Const.kt | 3 +- .../commands/niuzi/NiuziRankCommand.kt | 50 +++++++++++++++++++ .../fancybot/util/file/NiuziBankManager.kt | 6 +++ .../rtast/fancybot/util/file/NiuziManager.kt | 17 +++---- 5 files changed, 66 insertions(+), 12 deletions(-) create mode 100644 src/main/kotlin/cn/rtast/fancybot/commands/niuzi/NiuziRankCommand.kt diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 814c114..9bd43a2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] kotlinVersion = "2.0.10" -ronebotVersion = "1.11.0" +ronebotVersion = "1.11.1" shadowVersion = "8.3.0" okhttpVersion = "5.0.0-alpha.14" exposedVersion = "0.53.0" diff --git a/src/main/kotlin/cn/rtast/fancybot/Const.kt b/src/main/kotlin/cn/rtast/fancybot/Const.kt index 7a26155..7cff94b 100644 --- a/src/main/kotlin/cn/rtast/fancybot/Const.kt +++ b/src/main/kotlin/cn/rtast/fancybot/Const.kt @@ -103,5 +103,6 @@ val commands = listOf( BankTransferCommand(), CreateBankAccountCommand(), BankBalanceCommand(), DepositCommand(), DMSearchCommand(), LlamaCommand(), - QQMusicCommand(), BullShitGenerateCommand() + QQMusicCommand(), BullShitGenerateCommand(), + NiuziRankCommand(), NiuziBankRankCommand() ) \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/niuzi/NiuziRankCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/niuzi/NiuziRankCommand.kt new file mode 100644 index 0000000..a8cb972 --- /dev/null +++ b/src/main/kotlin/cn/rtast/fancybot/commands/niuzi/NiuziRankCommand.kt @@ -0,0 +1,50 @@ +/* + * Copyright © 2024 RTAkland + * Author: RTAkland + * Date: 2024/9/26 + */ + + +package cn.rtast.fancybot.commands.niuzi + +import cn.rtast.fancybot.niuziBankManager +import cn.rtast.fancybot.niuziManager +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.OneBotListener + + +private suspend fun getUserInfo(listener: OneBotListener, groupId: Long, userId: Long): String { + val info = listener.getGroupMemberInfo(groupId, userId) + return info.card ?: info.nickname +} + +class NiuziRankCommand : BaseCommand() { + override val commandNames = listOf("牛子排行榜") + + override suspend fun executeGroup(listener: OneBotListener, message: GroupMessage, args: List) { + val allNiuzi = niuziManager.getAllNiuzi().sortedBy { it.length }.reversed() + val msg = MessageChain.Builder().addText("牛子长度排行榜如下").addNewLine() + allNiuzi.forEach { + val userName = getUserInfo(listener, message.groupId, it.userId) + msg.addText("$userName | ${it.length}cm").addNewLine() + } + message.reply(msg.build()) + } +} + +class NiuziBankRankCommand : BaseCommand() { + override val commandNames = listOf("牛子富豪榜") + + override suspend fun executeGroup(listener: OneBotListener, message: GroupMessage, args: List) { + val allNiuziBankAccounts = niuziBankManager.getAllAccount() + .sortedBy { it.balance }.reversed() + val msg = MessageChain.Builder().addText("牛子银行富豪榜排行如下").addNewLine() + allNiuziBankAccounts.forEach { + val userName = getUserInfo(listener, message.groupId, it.userId) + msg.addText("$userName | ${it.balance}cm").addNewLine() + } + message.reply(msg.build()) + } +} \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/util/file/NiuziBankManager.kt b/src/main/kotlin/cn/rtast/fancybot/util/file/NiuziBankManager.kt index 2d8787a..153a815 100644 --- a/src/main/kotlin/cn/rtast/fancybot/util/file/NiuziBankManager.kt +++ b/src/main/kotlin/cn/rtast/fancybot/util/file/NiuziBankManager.kt @@ -81,4 +81,10 @@ class NiuziBankManager { } return this.getUser(from) } + + suspend fun getAllAccount(): List = + suspendedTransaction { + NiuziBankTable.selectAll() + .map { NiuziBankAccount(it[userId], it[balance], it[interestRate], it[timestamp]) } + } } \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/util/file/NiuziManager.kt b/src/main/kotlin/cn/rtast/fancybot/util/file/NiuziManager.kt index 6ecc65e..c69327e 100644 --- a/src/main/kotlin/cn/rtast/fancybot/util/file/NiuziManager.kt +++ b/src/main/kotlin/cn/rtast/fancybot/util/file/NiuziManager.kt @@ -42,17 +42,11 @@ class NiuziManager { } } - suspend fun getUser(id: Long): Niuzi? { - return suspendedTransaction { - NiuziTable.selectAll().where { userId eq id }.map { - Niuzi( - it[userId], - it[length], - it[timestamp] - ) - }.singleOrNull() + suspend fun getUser(id: Long): Niuzi? = + suspendedTransaction { + NiuziTable.selectAll().where { userId eq id }.map { Niuzi(it[userId], it[length], it[timestamp]) } + .singleOrNull() } - } suspend fun isSigned(id: Long): Boolean { val record = getUser(id) @@ -106,4 +100,7 @@ class NiuziManager { } return getUser(id) } + + suspend fun getAllNiuzi(): List = + suspendedTransaction { NiuziTable.selectAll().map { Niuzi(it[userId], it[length], it[timestamp]) } } } \ No newline at end of file