закуп много каналов

This commit is contained in:
Artem Tsyrulnikov
2026-01-04 18:06:12 +03:00
parent 9637f6ec3a
commit 5251ec3015
7 changed files with 115 additions and 15 deletions

View File

@@ -3,6 +3,7 @@ package bot
import (
"context"
"fmt"
"strings"
"example.com/m/adapter/backend"
"github.com/NicoNex/echotron/v3"
@@ -143,6 +144,11 @@ func (b *Bot) SendNew(text string, keyboard echotron.InlineKeyboardMarkup) {
func (b *Bot) Edit(text string, keyboard echotron.InlineKeyboardMarkup) {
if b.LastMessageID != 0 {
log.Info().
Int("last_msg_id", b.LastMessageID).
Int("keyboard_rows", len(keyboard.InlineKeyboard)).
Int("text_len", len(text)).
Msg("EditMessageText request")
_, err := b.EditMessageText(
text,
echotron.NewMessageID(b.ChatID, b.LastMessageID),
@@ -152,6 +158,13 @@ func (b *Bot) Edit(text string, keyboard echotron.InlineKeyboardMarkup) {
},
)
if err != nil {
if strings.Contains(err.Error(), "message is not modified") {
log.Info().Msg("EditMessageText ignored: message is not modified")
if b.exec != nil {
b.exec.handled = true
}
return
}
log.Error().Err(err).Msg("EditMessageText")
}
} else {
@@ -195,6 +208,9 @@ func (b *Bot) Update(u *echotron.Update) {
log.Info().
Int64("chat_id", b.ChatID).
Str("current_state", fmt.Sprintf("%T", b.CurrentState)).
Bool("has_callback", u.CallbackQuery != nil).
Bool("has_message", u.Message != nil).
Bool("has_edited_message", u.EditedMessage != nil).
Msg("Update received")
// Обрабатываем системные события (добавление в канал, подписки и т.д.)
@@ -255,7 +271,21 @@ func (b *Bot) Update(u *echotron.Update) {
}
if u.CallbackQuery != nil {
log.Info().
Str("callback_data", u.CallbackQuery.Data).
Int("callback_msg_id", func() int {
if u.CallbackQuery.Message != nil {
return u.CallbackQuery.Message.ID
}
return 0
}()).
Int("last_msg_id", b.LastMessageID).
Msg("Callback received")
b.cleanupCallbackUI(u)
if u.CallbackQuery.Data == "empty" || u.CallbackQuery.Data == "page_info" || u.CallbackQuery.Data == "noop" {
exec.handled = true
return
}
if b.GlobalCallbackRouter != nil && u.CallbackQuery.Data != "" {
if newState := b.GlobalCallbackRouter(u.CallbackQuery.Data); newState != nil {
@@ -272,11 +302,23 @@ func (b *Bot) Update(u *echotron.Update) {
}
if !exec.handled && !exec.transitioned {
log.Info().
Bool("has_callback", u.CallbackQuery != nil).
Bool("has_message", u.Message != nil).
Bool("handled", exec.handled).
Bool("transitioned", exec.transitioned).
Msg("No handler handled update, calling common handler")
log.Info().Msg("Common handler")
b.CurrentState.Handle(b, u)
}
if !exec.handled && !exec.transitioned {
log.Info().
Bool("has_callback", u.CallbackQuery != nil).
Bool("has_message", u.Message != nil).
Bool("handled", exec.handled).
Bool("transitioned", exec.transitioned).
Msg("Default feedback triggered")
log.Info().Msg("Default feedback")
b.SetState(b.DefaultStateFactory(), NewMessage)
}