diff --git a/web/service/tgbot.go b/web/service/tgbot.go index 2f36697e..ffdb63f9 100644 --- a/web/service/tgbot.go +++ b/web/service/tgbot.go @@ -147,6 +147,19 @@ func (t *Tgbot) Start(i18nFS embed.FS) error { return err } + // After bot initialization, set up bot commands with localized descriptions + err = bot.SetMyCommands(&telego.SetMyCommandsParams{ + Commands: []telego.BotCommand{ + {Command: "start", Description: t.I18nBot("tgbot.commands.startDesc")}, + {Command: "help", Description: t.I18nBot("tgbot.commands.helpDesc")}, + {Command: "status", Description: t.I18nBot("tgbot.commands.statusDesc")}, + {Command: "id", Description: t.I18nBot("tgbot.commands.idDesc")}, + }, + }) + if err != nil { + logger.Warning("Failed to set bot commands:", err) + } + // Start receiving Telegram bot messages if !isRunning { logger.Info("Telegram bot receiver started") @@ -935,7 +948,7 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.cancel")).WithCallbackData(t.encodeQuery("add_client_default_traffic_exp")), ), tu.InlineKeyboardRow( - tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.confirmNumber", "Num=="+strconv.Itoa(inputNumber))).WithCallbackData(t.encodeQuery("add_client_reset_exp_c "+strconv.Itoa(inputNumber))), + tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.confirmNumberAdd", "Num=="+strconv.Itoa(inputNumber))).WithCallbackData(t.encodeQuery("add_client_reset_exp_c "+strconv.Itoa(inputNumber))), ), tu.InlineKeyboardRow( tu.InlineKeyboardButton("1").WithCallbackData(t.encodeQuery("add_client_reset_exp_in "+strconv.Itoa(inputNumber)+" 1")), diff --git a/web/translation/translate.ar_EG.toml b/web/translation/translate.ar_EG.toml index c8e28a5a..c809375d 100644 --- a/web/translation/translate.ar_EG.toml +++ b/web/translation/translate.ar_EG.toml @@ -588,6 +588,10 @@ "restartSuccess" = "✅ العملية نجحت!" "restartFailed" = "❗ حصل خطأ في العملية.\r\n\r\nError: {{ .Error }}." "xrayNotRunning" = "❗ Xray Core مش شغال." +"startDesc" = "عرض القائمة الرئيسية" +"helpDesc" = "مساعدة البوت" +"statusDesc" = "التحقق من حالة البوت" +"idDesc" = "عرض معرف Telegram الخاص بك" [tgbot.messages] "cpuThreshold" = "🔴 حمل المعالج {{ .Percent }}% عدى الحد المسموح ({{ .Threshold }}%)" diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml index ec7507f4..da9bedf1 100644 --- a/web/translation/translate.en_US.toml +++ b/web/translation/translate.en_US.toml @@ -339,7 +339,7 @@ "subEnable" = "Enable Subscription Service" "subEnableDesc" = "Enables the subscription service." "subTitle" = "Subscription Title" - "subTitleDesc" = "Title shown in VPN client" +"subTitleDesc" = "Title shown in VPN client" "subListen" = "Listen IP" "subListenDesc" = "The IP address for the subscription service. (leave blank to listen on all IPs)" "subPort" = "Listen Port" @@ -587,6 +587,10 @@ "restartSuccess" = "✅ Operation successful!" "restartFailed" = "❗ Error in operation.\r\n\r\nError: {{ .Error }}." "xrayNotRunning" = "❗ Xray Core is not running." +"startDesc" = "Show the main menu" +"helpDesc" = "Bot help" +"statusDesc" = "Check bot status" +"idDesc" = "Show your Telegram ID" [tgbot.messages] "cpuThreshold" = "🔴 CPU Load {{ .Percent }}% exceeds the threshold of {{ .Threshold }}%" diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml index 376bd115..35ce6af1 100644 --- a/web/translation/translate.es_ES.toml +++ b/web/translation/translate.es_ES.toml @@ -590,6 +590,10 @@ "restartSuccess" = "✅ ¡Operación exitosa!" "restartFailed" = "❗ Error en la operación.\r\n\r\nError: {{ .Error }}." "xrayNotRunning" = "❗ Xray Core no está en ejecución." +"startDesc" = "Mostrar el menú principal" +"helpDesc" = "Ayuda del bot" +"statusDesc" = "Comprobar el estado del bot" +"idDesc" = "Mostrar tu ID de Telegram" [tgbot.messages] "cpuThreshold" = "🔴 El uso de CPU {{ .Percent }}% es mayor que el umbral {{ .Threshold }}%" diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml index e7b479af..e0dacad4 100644 --- a/web/translation/translate.fa_IR.toml +++ b/web/translation/translate.fa_IR.toml @@ -590,6 +590,10 @@ "restartSuccess" = "✅ عملیات با موفقیت انجام شد!" "restartFailed" = "❗ خطا در عملیات.\r\n\r\nخطا: {{ .Error }}." "xrayNotRunning" = "❗ Xray Core در حال اجرا نیست." +"startDesc" = "نمایش منوی اصلی" +"helpDesc" = "راهنمای ربات" +"statusDesc" = "بررسی وضعیت ربات" +"idDesc" = "نمایش شناسه تلگرام شما" [tgbot.messages] "cpuThreshold" = "🔴 بار ‌پردازنده {{ .Percent }}% بیشتر از آستانه است {{ .Threshold }}%" diff --git a/web/translation/translate.id_ID.toml b/web/translation/translate.id_ID.toml index 4bba61a0..af268246 100644 --- a/web/translation/translate.id_ID.toml +++ b/web/translation/translate.id_ID.toml @@ -590,6 +590,10 @@ "restartSuccess" = "✅ Operasi berhasil!" "restartFailed" = "❗ Kesalahan dalam operasi.\r\n\r\nError: {{ .Error }}." "xrayNotRunning" = "❗ Xray Core tidak berjalan." +"startDesc" = "Tampilkan menu utama" +"helpDesc" = "Bantuan bot" +"statusDesc" = "Periksa status bot" +"idDesc" = "Tampilkan ID Telegram Anda" [tgbot.messages] "cpuThreshold" = "🔴 Beban CPU {{ .Percent }}% melebihi batas {{ .Threshold }}%" diff --git a/web/translation/translate.ja_JP.toml b/web/translation/translate.ja_JP.toml index ca4385c4..99a1db15 100644 --- a/web/translation/translate.ja_JP.toml +++ b/web/translation/translate.ja_JP.toml @@ -590,6 +590,10 @@ "restartSuccess" = "✅ 操作成功!" "restartFailed" = "❗ 操作エラー。\r\n\r\nエラー: {{ .Error }}" "xrayNotRunning" = "❗ Xray Core は動作していません。" +"startDesc" = "メインメニューを表示" +"helpDesc" = "ボットのヘルプ" +"statusDesc" = "ボットの状態を確認" +"idDesc" = "Telegram IDを表示" [tgbot.messages] "cpuThreshold" = "🔴 CPU使用率は{{ .Percent }}%、しきい値{{ .Threshold }}%を超えました" diff --git a/web/translation/translate.pt_BR.toml b/web/translation/translate.pt_BR.toml index eb5d37ce..7b77f589 100644 --- a/web/translation/translate.pt_BR.toml +++ b/web/translation/translate.pt_BR.toml @@ -590,6 +590,10 @@ "restartSuccess" = "✅ Operação bem-sucedida!" "restartFailed" = "❗ Erro na operação.\r\n\r\nErro: {{ .Error }}." "xrayNotRunning" = "❗ Xray Core não está em execução." +"startDesc" = "Mostrar menu principal" +"helpDesc" = "Ajuda do bot" +"statusDesc" = "Verificar status do bot" +"idDesc" = "Mostrar seu ID do Telegram" [tgbot.messages] "cpuThreshold" = "🔴 A carga da CPU {{ .Percent }}% excede o limite de {{ .Threshold }}%" diff --git a/web/translation/translate.ru_RU.toml b/web/translation/translate.ru_RU.toml index f1d14459..dbc04e53 100644 --- a/web/translation/translate.ru_RU.toml +++ b/web/translation/translate.ru_RU.toml @@ -342,7 +342,7 @@ "subEnable" = "Включить подписку" "subEnableDesc" = "Функция подписки с отдельной конфигурацией" "subTitle" = "Заголовок подписки" - "subTitleDesc" = "Название подписки, которое видит клиент в VPN клиенте" +"subTitleDesc" = "Название подписки, которое видит клиент в VPN клиенте" "subListen" = "Прослушивание IP" "subListenDesc" = "Оставьте пустым по умолчанию, чтобы отслеживать все IP-адреса" "subPort" = "Порт подписки" @@ -532,9 +532,9 @@ [pages.settings.security] "admin" = "Учетные данные администратора" -"twoFactor" = "Двухфакторная аутентификация" -"twoFactorEnable" = "Включить 2FA" -"twoFactorEnableDesc" = "Добавляет дополнительный уровень аутентификации для повышения безопасности." +"twoFactor" = "Двухфакторная аутентификация" +"twoFactorEnable" = "Включить 2FA" +"twoFactorEnableDesc" = "Добавляет дополнительный уровень аутентификации для повышения безопасности." "twoFactorModalSetTitle" = "Включить двухфакторную аутентификацию" "twoFactorModalDeleteTitle" = "Отключить двухфакторную аутентификацию" "twoFactorModalSteps" = "Для настройки двухфакторной аутентификации выполните несколько шагов:" @@ -590,6 +590,10 @@ "restartSuccess" = "✅ Ядро Xray успешно перезапущено." "restartFailed" = "❗ Ошибка при перезапуске Xray-core.\r\n\r\nОшибка: {{ .Error }}." "xrayNotRunning" = "❗ Xray Core не запущен." +"startDesc" = "Показать главное меню" +"helpDesc" = "Справка по боту" +"statusDesc" = "Проверить статус бота" +"idDesc" = "Показать ваш Telegram ID" [tgbot.messages] "cpuThreshold" = "🔴 Загрузка процессора составляет {{ .Percent }}%, что превышает пороговое значение {{ .Threshold }}%" diff --git a/web/translation/translate.tr_TR.toml b/web/translation/translate.tr_TR.toml index 9537b966..d252b457 100644 --- a/web/translation/translate.tr_TR.toml +++ b/web/translation/translate.tr_TR.toml @@ -590,6 +590,10 @@ "restartSuccess" = "✅ İşlem başarılı!" "restartFailed" = "❗ İşlem hatası.\r\n\r\nHata: {{ .Error }}." "xrayNotRunning" = "❗ Xray Core çalışmıyor." +"startDesc" = "Ana menüyü göster" +"helpDesc" = "Bot yardımı" +"statusDesc" = "Bot durumunu kontrol et" +"idDesc" = "Telegram ID'nizi göster" [tgbot.messages] "cpuThreshold" = "🔴 CPU Yükü {{ .Percent }}% eşiği {{ .Threshold }}%'yi aşıyor" diff --git a/web/translation/translate.uk_UA.toml b/web/translation/translate.uk_UA.toml index 858a95f8..b1f1e241 100644 --- a/web/translation/translate.uk_UA.toml +++ b/web/translation/translate.uk_UA.toml @@ -590,6 +590,10 @@ "restartSuccess" = "✅ Операція успішна!" "restartFailed" = "❗ Помилка в операції.\r\n\r\nПомилка: {{ .Error }}." "xrayNotRunning" = "❗ Xray Core не запущений." +"startDesc" = "Показати головне меню" +"helpDesc" = "Довідка по боту" +"statusDesc" = "Перевірити статус бота" +"idDesc" = "Показати ваш Telegram ID" [tgbot.messages] "cpuThreshold" = "🔴 Навантаження ЦП {{ .Percent }}% перевищує порогове значення {{ .Threshold }}%" diff --git a/web/translation/translate.vi_VN.toml b/web/translation/translate.vi_VN.toml index 0e700ab5..7e0a4ffc 100644 --- a/web/translation/translate.vi_VN.toml +++ b/web/translation/translate.vi_VN.toml @@ -590,6 +590,10 @@ "restartSuccess" = "✅ Hoạt động thành công!" "restartFailed" = "❗ Lỗi trong quá trình hoạt động.\r\n\r\nLỗi: {{ .Error }}." "xrayNotRunning" = "❗ Xray Core không chạy." +"startDesc" = "Hiển thị menu chính" +"helpDesc" = "Trợ giúp bot" +"statusDesc" = "Kiểm tra trạng thái bot" +"idDesc" = "Hiển thị ID Telegram của bạn" [tgbot.messages] "cpuThreshold" = "🔴 Sử dụng CPU {{ .Percent }}% vượt quá ngưỡng {{ .Threshold }}%" diff --git a/web/translation/translate.zh_CN.toml b/web/translation/translate.zh_CN.toml index d9f163ee..87181a09 100644 --- a/web/translation/translate.zh_CN.toml +++ b/web/translation/translate.zh_CN.toml @@ -590,6 +590,10 @@ "restartSuccess" = "✅ 操作成功!" "restartFailed" = "❗ 操作错误。\r\n\r\n错误: {{ .Error }}." "xrayNotRunning" = "❗ Xray Core 未运行。" +"startDesc" = "显示主菜单" +"helpDesc" = "机器人帮助" +"statusDesc" = "检查机器人状态" +"idDesc" = "显示您的 Telegram ID" [tgbot.messages] "cpuThreshold" = "🔴 CPU 使用率为 {{ .Percent }}%,超过阈值 {{ .Threshold }}%" diff --git a/web/translation/translate.zh_TW.toml b/web/translation/translate.zh_TW.toml index 34ad9472..e8b3480a 100644 --- a/web/translation/translate.zh_TW.toml +++ b/web/translation/translate.zh_TW.toml @@ -592,6 +592,10 @@ "restartSuccess" = "✅ 操作成功!" "restartFailed" = "❗ 操作錯誤。\r\n\r\n錯誤: {{ .Error }}." "xrayNotRunning" = "❗ Xray Core 未運行。" +"startDesc" = "顯示主選單" +"helpDesc" = "機器人幫助" +"statusDesc" = "檢查機器人狀態" +"idDesc" = "顯示您的 Telegram ID" [tgbot.messages] "cpuThreshold" = "🔴 CPU 使用率為 {{ .Percent }}%,超過閾值 {{ .Threshold }}%"