Improve Telegram keyboards and fix admin user menu navigation
Unified inline menus, user callbacks for all users, Home button to exit admin panel. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+14
-11
@@ -8,6 +8,8 @@ import (
|
||||
|
||||
"telegramvpn/internal/db"
|
||||
"telegramvpn/internal/remnawave"
|
||||
|
||||
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
||||
)
|
||||
|
||||
func (h *Handler) handleUserConfig(chatID, telegramID int64) {
|
||||
@@ -26,7 +28,7 @@ func (h *Handler) handleUserConfig(chatID, telegramID int64) {
|
||||
}
|
||||
if existing != nil && existing.ExpireAt != nil && existing.ExpireAt.After(time.Now()) {
|
||||
link := h.resolveSubscriptionLink(ctx, existing.RemnawaveUsername, telegramID)
|
||||
h.sendConfigMessage(chatID, days, existing.RemnawaveUsername, *existing.ExpireAt, link)
|
||||
h.sendConfigMessage(chatID, telegramID, days, existing.RemnawaveUsername, *existing.ExpireAt, link)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -37,7 +39,7 @@ func (h *Handler) handleUserConfig(chatID, telegramID int64) {
|
||||
link = h.subscriptionLink(panelUser.ShortUUID)
|
||||
}
|
||||
_ = h.saveVPNFromPanel(ctx, telegramID, panelUser)
|
||||
h.sendConfigMessage(chatID, days, panelUser.Username, panelUser.ExpireAt, link)
|
||||
h.sendConfigMessage(chatID, telegramID, days, panelUser.Username, panelUser.ExpireAt, link)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -71,7 +73,7 @@ func (h *Handler) handleUserConfig(chatID, telegramID int64) {
|
||||
if link == "" {
|
||||
link = h.subscriptionLink(u.ShortUUID)
|
||||
}
|
||||
h.sendConfigMessage(chatID, days, u.Username, u.ExpireAt, link)
|
||||
h.sendConfigMessage(chatID, telegramID, days, u.Username, u.ExpireAt, link)
|
||||
}
|
||||
|
||||
func (h *Handler) saveVPNFromPanel(ctx context.Context, telegramID int64, u *remnawave.PanelUser) error {
|
||||
@@ -116,21 +118,22 @@ func (h *Handler) subscriptionLink(shortUUID string) string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (h *Handler) sendConfigMessage(chatID int64, days int, username string, expireAt time.Time, link string) {
|
||||
func (h *Handler) sendConfigMessage(chatID, telegramID int64, days int, username string, expireAt time.Time, link string) {
|
||||
text := fmt.Sprintf(
|
||||
"✅ Ваш VPN-конфиг готов\n\n"+
|
||||
"Срок: %d дн. (до %s)\n"+
|
||||
"Логин: %s\n",
|
||||
"✅ VPN готов\n\n"+
|
||||
"⏱ Срок: %d дн. (до %s)\n"+
|
||||
"👤 Логин: %s\n",
|
||||
days,
|
||||
expireAt.Local().Format("02.01.2006 15:04"),
|
||||
username,
|
||||
)
|
||||
if link != "" {
|
||||
text += "\n🔗 Ссылка подписки (добавьте в приложение):\n" + link
|
||||
text += "\n🔗 Ссылка подписки — кнопка ниже или:\n" + link
|
||||
} else {
|
||||
text += "\n⚠️ Ссылка подписки не настроена. Администратору нужно указать REMNAWAVE_SUBSCRIPTION_URL в .env"
|
||||
text += "\n\n⚠️ Ссылка не настроена — REMNAWAVE_SUBSCRIPTION_URL в .env"
|
||||
}
|
||||
text += "\n\nИмпортируйте ссылку в V2rayNG, Hiddify, Streisand и др."
|
||||
h.sendText(chatID, text)
|
||||
msg := tgbotapi.NewMessage(chatID, text)
|
||||
msg.ReplyMarkup = configResultKeyboard(h.cfg, telegramID, h.admin, link)
|
||||
h.send(msg)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user