From 84f3293f51144c2643e76521e28ce15563d523dc Mon Sep 17 00:00:00 2001 From: Anotia Date: Thu, 17 Feb 2022 15:58:27 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=89=20Several=20improvements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Feat: Auto back to main settings - Feat: Show current option in settings menu - Add description for Litterbox validity --- src/handler/buttons.js | 18 ++++++++++++------ src/handler/callbackQuery.js | 27 ++++++++++++++++----------- src/handler/command.js | 2 +- src/i18n/en_US.json | 5 +++-- src/i18n/zh_CN.json | 3 ++- 5 files changed, 34 insertions(+), 21 deletions(-) diff --git a/src/handler/buttons.js b/src/handler/buttons.js index 8800dac..6565cab 100644 --- a/src/handler/buttons.js +++ b/src/handler/buttons.js @@ -8,14 +8,19 @@ function cb(text, data) { const setService = (chat) => { let t = (current) => chatData[chat].service === current ? ' ✅' : ''; - return [[cb(`Catbox${t('Catbox')}`, 'setService_Catbox')], [cb(`Litterbox${t('Litterbox')}`, 'setService_Litterbox')]]; + return [[ + cb(`Catbox${t('Catbox')}`, 'setService_Catbox'), + cb(`Litterbox${t('Litterbox')}`, 'setService_Litterbox')], + back(chatData[chat].lang)[0] + ]; } -const mainSettings = (lang) => { +const mainSettings = (chat) => { + let lang = chatData[chat].lang; return [[ - cb(strings[lang].settings_setLang, 'setLang')], [ - cb(strings[lang].settings_setService, 'setService')], [ - cb(strings[lang].settings_setExpr, 'setLBE') + cb(strings[lang].settings_setLang + ` (${strings[lang].name})`, 'setLang')], [ + cb(strings[lang].settings_setService + ` (${chatData[chat].service})`, 'setService')], [ + cb(strings[lang].settings_setExpr + ` (${chatData[chat].lbe} ${strings[lang].hour})`, 'setLBE') ]]; } @@ -30,6 +35,7 @@ const getLanguagesButtons = (lang) => { } if (tmp.length > 0) buttons.push(tmp); + buttons.push(back(lang)[0]); return buttons; } @@ -42,7 +48,7 @@ const setLitterBoxExpiration = (lang, chat) => { ], [ cb(`24 ${hour}${t(24)}`, 'setLBE_24'), cb(`72 ${hour}${t(72)}`, 'setLBE_72') - ]]; + ], back(lang)[0]]; } const back = (lang) => { diff --git a/src/handler/callbackQuery.js b/src/handler/callbackQuery.js index 3988771..c39d067 100644 --- a/src/handler/callbackQuery.js +++ b/src/handler/callbackQuery.js @@ -14,29 +14,34 @@ export async function handleCallbackQuery(event) { if (data.startsWith('setLang')) { if (arg) chatData[chat].lang = lang = arg; - bt = buttons.getLanguagesButtons(lang); - text = `${strings[lang].settings_setLang}` + strings[lang].help_setLang; + else { + bt = buttons.getLanguagesButtons(lang); + text = `${strings[lang].settings_setLang}` + strings[lang].help_setLang; + } } else if (data.startsWith('setService')) { if (arg) chatData[chat].service = arg; - bt = buttons.setService(chat); - text = `${strings[lang].settings_setService}` + strings[lang].help_setService; + else { + bt = buttons.setService(chat); + text = `${strings[lang].settings_setService}` + strings[lang].help_setService; + } } // Set Litterbox Expiration else if (data.startsWith('setLBE')) { if (arg) chatData[chat].lbe = parseInt(arg); - bt = buttons.setLitterBoxExpiration(lang, chat); - text = `${strings[lang].settings_setExpr}`; + else { + bt = buttons.setLitterBoxExpiration(lang, chat); + text = `${strings[lang].settings_setExpr}` + strings[lang].help_setExpr; + } } - else if (data === 'back') { - bt = buttons.mainSettings(lang); + // else if (data === 'back') { } + saveBotData(); + if (!bt.length) { + bt = buttons.mainSettings(chat); text = `${strings[lang].settings}` + strings[lang].help_settings; } - saveBotData(); - if (data !== 'back') - bt.push(buttons.back(lang)[0]); bot.editMessage(chat, { message: query.msgId, text: text, diff --git a/src/handler/command.js b/src/handler/command.js index 08e7ba2..1d78148 100644 --- a/src/handler/command.js +++ b/src/handler/command.js @@ -80,7 +80,7 @@ class GeneralCommands { bot.sendMessage(this.chat, { message: strings[this.lang].settings, parseMode: 'html', - buttons: buttons.mainSettings(this.lang) + buttons: buttons.mainSettings(this.chat) }).catch(console.error); } diff --git a/src/i18n/en_US.json b/src/i18n/en_US.json index abd1a43..0c8a4b7 100644 --- a/src/i18n/en_US.json +++ b/src/i18n/en_US.json @@ -16,10 +16,11 @@ "help_setLang": "\n\nTo contribute translations, please check the guides on GitHub.", "settings_setService": "☁ Storage service", "help_setService": "\n\nCatbox: No expiration, limited to 200 MB per file\nLitterbox: Expired after 1/12/24/72 hours, limited to 1 GB per file\n\nNote: You can only upload to one service at a time.", - "settings_setExpr": "⏰ Litterbox file expiration", + "settings_setExpr": "⏰ Litterbox file validity", + "help_setExpr": "\n\nFor files uploaded to Litterbox, they will expire after the set time. Litterbox supports 4 options below.", "settings_back": "🔙 Back", "saveDataSuccess": "Data saved.", - "hour": " hour(s)", + "hour": "hour(s)", "serviceError": "Service error: {s}", "animatedStickers": "Animated stickers are stored in .tgs format, and I currently can't convert them. Please edit the extension yourself if the file appears abnormal. You can use online converter or bots (like @tgstogifbot) to convert tgs to gif. ", "fileNotDetected": "No available files detected in the message.\n\nSupported file types: documents, videos, audio, static stickers, GIF. \nTelegram server converts GIFs to mp4, so I upload them as videos.", diff --git a/src/i18n/zh_CN.json b/src/i18n/zh_CN.json index fa9f0e7..c49cef4 100644 --- a/src/i18n/zh_CN.json +++ b/src/i18n/zh_CN.json @@ -17,9 +17,10 @@ "settings_setService": "☁ 存储服务", "help_setService": "\n\nCatbox 文件不限时长,单文件限制 200 MB。\nLitterbox 文件有时限(1/12/24/72 小时),单文件限制 1 GB。\n\n一次只能选择将文件上传到其中一个服务。", "settings_setExpr": "⏰ Litterbox 文件有效期", + "help_setExpr": "\n\n上传到 Litterbox 的文件会在一定时间后失效。Litterbox 支持以下时长。", "settings_back": "🔙 返回", "saveDataSuccess": "成功保存数据。", - "hour": " 小时", + "hour": "小时", "serviceError": "服务出现错误:{s}", "animatedStickers": "Telegram 动态贴纸以 .tgs 格式储存,目前不支持转换。如果文件后缀名异常,请自行修改。您可以使用在线转换器或机器人(如 @tgstogifbot )等工具将 .tgs 文件转换为 GIF 格式。", "fileNotDetected": "消息中未发现可上传的文件。\n\n支持的文件类型:文档、视频、音频、静态贴纸、GIF。\nTelegram 服务器会将动图转为 mp4,因此我上传的也为视频。",