package main import ( "context" "strconv" "strings" "github.com/go-telegram/bot" "github.com/go-telegram/bot/models" ) func (appCtx *App) handleDockerList(ctx context.Context, b *bot.Bot, chatID int64) { text, keyboard, _ := appCtx.renderContainerPage(ctx, 0, true) appCtx.sendMessage(ctx, b, chatID, text, true, keyboard) } func (appCtx *App) callbackDockerPagination(ctx context.Context, b *bot.Bot, update *models.Update) { if update.CallbackQuery == nil { return } cb := update.CallbackQuery parts := strings.Split(cb.Data, ":") if len(parts) != 2 { return } pageIndex, err := strconv.Atoi(parts[1]) if err != nil { pageIndex = 0 } text, keyboard, err := appCtx.renderContainerPage(ctx, pageIndex, false) if err != nil { appCtx.logger.Error("Pagination render failed", "error", err) b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ CallbackQueryID: cb.ID, Text: appCtx.T("e.container.list"), ShowAlert: true, }) return } b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ CallbackQueryID: cb.ID, }) _, err = b.EditMessageText(ctx, &bot.EditMessageTextParams{ ChatID: cb.Message.Message.Chat.ID, MessageID: cb.Message.Message.ID, Text: text, ParseMode: "html", ReplyMarkup: keyboard, }) if err != nil { appCtx.logger.Warn("Failed pagination edit", "error", err) return } } func (appCtx *App) callbackDockerListRefresh(ctx context.Context, b *bot.Bot, update *models.Update) { if update.CallbackQuery == nil { return } cb := update.CallbackQuery parts := strings.Split(cb.Data, ":") if len(parts) != 2 { return } pageIndex, err := strconv.Atoi(parts[1]) if err != nil { pageIndex = 0 } text, keyboard, err := appCtx.renderContainerPage(ctx, pageIndex, true) if err != nil { appCtx.logger.Error("Refresh render failed", "error", err) b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ CallbackQueryID: cb.ID, Text: appCtx.T("e.container.list"), ShowAlert: true, }) return } b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ CallbackQueryID: cb.ID, Text: "🔄 Actualizado", }) _, err = b.EditMessageText(ctx, &bot.EditMessageTextParams{ ChatID: cb.Message.Message.Chat.ID, MessageID: cb.Message.Message.ID, Text: text, ParseMode: "html", ReplyMarkup: keyboard, }) if err != nil { appCtx.logger.Warn("Failed refresh edit", "error", err) return } } func (appCtx *App) callbackDockerBack(ctx context.Context, b *bot.Bot, update *models.Update) { if update.CallbackQuery == nil { return } cb := update.CallbackQuery parts := strings.Split(cb.Data, ":") if len(parts) != 2 { return } pageIndex, err := strconv.Atoi(parts[1]) if err != nil { pageIndex = 0 } text, keyboard, err := appCtx.renderContainerPage(ctx, pageIndex, false) if err != nil { appCtx.logger.Error("Back render failed", "error", err) b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ CallbackQueryID: cb.ID, Text: appCtx.T("e.container.list"), ShowAlert: true, }) return } b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ CallbackQueryID: cb.ID, }) _, err = b.EditMessageText(ctx, &bot.EditMessageTextParams{ ChatID: cb.Message.Message.Chat.ID, MessageID: cb.Message.Message.ID, Text: text, ParseMode: "html", ReplyMarkup: keyboard, }) if err != nil { appCtx.logger.Warn("Failed back edit", "error", err) return } }