From 7f3fa2ea0f2c72e883834f963c0a663b001794a1 Mon Sep 17 00:00:00 2001 From: LamGC Date: Wed, 20 Apr 2022 17:27:01 +0800 Subject: [PATCH] =?UTF-8?q?fix(account=5Fmanager):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E6=8C=89=E9=92=AE=E8=BF=94=E5=9B=9E=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7=E5=88=97=E8=A1=A8=E6=97=B6=E5=8F=91=E9=80=81=E4=BA=86?= =?UTF-8?q?=E6=96=B0=E6=B6=88=E6=81=AF=E7=9A=84=E9=97=AE=E9=A2=98.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原设定为点击返回账号列表按钮时, 使用 EditMessageText 回到账号列表的, 但因逻辑错误, 导致按照命令触发的形式, 发送了新的消息. 此改动已修正该问题. --- src/main/kotlin/OracleAccountExtension.kt | 38 ++++++++++++++++------- 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/main/kotlin/OracleAccountExtension.kt b/src/main/kotlin/OracleAccountExtension.kt index 375a9f0..b7a6efc 100644 --- a/src/main/kotlin/OracleAccountExtension.kt +++ b/src/main/kotlin/OracleAccountExtension.kt @@ -185,24 +185,21 @@ class OracleAccountManagerExtension(private val bot: BaseAbilityBot) : AbilityEx } fun listOracleAccountReply(): Reply = Reply.of({ bot, upd -> - doListOracleAccount(bot, upd.callbackQuery.message.chatId, upd.callbackQuery.from.id) + doListOracleAccount( + bot, + upd.callbackQuery.message.chatId, + upd.callbackQuery.from.id, + upd.callbackQuery.message.messageId + ) }, callbackQueryAt("oc_account_list")) - private fun doListOracleAccount(bot: BaseAbilityBot, chatId: Long, userId: Long) { + private fun doListOracleAccount(bot: BaseAbilityBot, chatId: Long, userId: Long, messageId: Int? = null) { val accounts = OracleAccountManage.getOracleAccountsByTelegramUserId(userId) if (accounts.isEmpty()) { bot.silent().send("你还没有绑定任何 Oracle 账号,请使用【/oc_account_add】绑定一个 Oracle 账号。", chatId) return } // TODO: 要弄个页面, 防止账号太多刷爆了 - val msgBuilder = SendMessage.builder() - .chatId(chatId.toString()) - .text( - """ - 当前 Telegram 用户已绑定以下 Oracle 账号 - (账号没有名字只有邮箱是因为通过 API 获取名字失败) - """.trimIndent() - ) val keyboardGroup = InlineKeyboardMarkup.builder() for (account in accounts) { val provider = account.getAuthenticationDetailsProvider() @@ -225,8 +222,25 @@ class OracleAccountManagerExtension(private val bot: BaseAbilityBot) : AbilityEx ) ) } - msgBuilder.replyMarkup(keyboardGroup.build()) - bot.silent().execute(msgBuilder.build()) + val text = """ + 当前 Telegram 用户已绑定以下 Oracle 账号 + (账号没有名字只有邮箱是因为通过 API 获取名字失败) + """.trimIndent() + + if (messageId == null) { + SendMessage.builder() + .chatId(chatId.toString()) + .text(text) + .replyMarkup(keyboardGroup.build()) + .build().execute(bot.silent()) + } else { + EditMessageText.builder() + .text(text) + .messageId(messageId) + .chatId(chatId.toString()) + .replyMarkup(keyboardGroup.build()) + .build().execute(bot.silent()) + } } fun manageOracleAccount(): Reply = Reply.of({ bot, upd ->