From 12bf7e6f934caf84f893a17d8446e648452b2442 Mon Sep 17 00:00:00 2001 From: fluffur Date: Mon, 29 Jun 2026 09:02:32 +0500 Subject: [PATCH 1/3] feat(callback): pass message to callback query updates --- on.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/on.go b/on.go index fb8d4b2..4772042 100644 --- a/on.go +++ b/on.go @@ -32,7 +32,17 @@ func (b *Bot) installHandlers() { return nil }) b.disp.OnBotCallbackQuery(func(ctx context.Context, e tg.Entities, u *tg.UpdateBotCallbackQuery) error { - b.route(ctx, &Update{CallbackQuery: callbackQueryFromTg(e, u), Entities: e}) + cq := callbackQueryFromTg(e, u) + + chat, err := b.chatByPeer(ctx, u.Peer) + if err == nil { + cq.Message = &Message{ + MessageID: u.MsgID, + Chat: chat, + } + } + + b.route(ctx, &Update{CallbackQuery: callbackQueryFromTg(e, u)}) return nil }) From fbff7e0756cdc7f58b870e39e8bb4ee37f5c70ea Mon Sep 17 00:00:00 2001 From: fluffur Date: Mon, 29 Jun 2026 09:14:45 +0500 Subject: [PATCH 2/3] fix(callback): pass modified callback query instance instead of the same one --- on.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/on.go b/on.go index 4772042..fafe2da 100644 --- a/on.go +++ b/on.go @@ -42,7 +42,7 @@ func (b *Bot) installHandlers() { } } - b.route(ctx, &Update{CallbackQuery: callbackQueryFromTg(e, u)}) + b.route(ctx, &Update{CallbackQuery: cq}) return nil }) From e96ccfcad65164325b2f68634a31b64a58e0e700 Mon Sep 17 00:00:00 2001 From: fluffur Date: Mon, 29 Jun 2026 10:17:25 +0500 Subject: [PATCH 3/3] fix(callback): pass whole message info instead of chat and id only --- on.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/on.go b/on.go index fafe2da..6e8234d 100644 --- a/on.go +++ b/on.go @@ -35,10 +35,19 @@ func (b *Bot) installHandlers() { cq := callbackQueryFromTg(e, u) chat, err := b.chatByPeer(ctx, u.Peer) - if err == nil { - cq.Message = &Message{ - MessageID: u.MsgID, - Chat: chat, + if err != nil { + b.logger().Warn(ctx, "Resolve callback chat", log.Error(err)) + } else { + msg, err := b.GetMessage(ctx, ID(chat.ID), u.MsgID) + if err != nil { + b.logger().Warn(ctx, "Get callback message", log.Error(err)) + + cq.Message = &Message{ + MessageID: u.MsgID, + Chat: chat, + } + } else { + cq.Message = msg } }