From 583a0667ca6eabdbcefbb601baadc1d0325afef1 Mon Sep 17 00:00:00 2001 From: DBT Date: Mon, 23 Feb 2026 17:13:29 +0000 Subject: [PATCH] improve reply-tag parsing with current message fallback and outbound reply metadata --- pkg/agent/loop.go | 6 ++++-- pkg/channels/telegram.go | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pkg/agent/loop.go b/pkg/agent/loop.go index 5c76951..e648fed 100644 --- a/pkg/agent/loop.go +++ b/pkg/agent/loop.go @@ -205,7 +205,7 @@ func (al *AgentLoop) Run(ctx context.Context) error { if shouldDropNoReply(response) { suppressed = true } else { - clean, replyToID := parseReplyTag(response) + clean, replyToID := parseReplyTag(response, msg.Metadata["message_id"]) if al.shouldSuppressOutbound(msg, clean) { suppressed = true } else { @@ -931,7 +931,7 @@ func shouldDropNoReply(text string) bool { return strings.EqualFold(t, "NO_REPLY") } -func parseReplyTag(text string) (content string, replyToID string) { +func parseReplyTag(text string, currentMessageID string) (content string, replyToID string) { t := strings.TrimSpace(text) if !strings.HasPrefix(t, "[[") { return text, "" @@ -946,6 +946,8 @@ func parseReplyTag(text string) (content string, replyToID string) { content = strings.TrimSpace(t[end+2:]) if strings.HasPrefix(tag, "reply_to:") { replyToID = strings.TrimSpace(rawTag[len("reply_to:"):]) + } else if strings.HasPrefix(tag, "reply_to_current") { + replyToID = strings.TrimSpace(currentMessageID) } return content, replyToID } diff --git a/pkg/channels/telegram.go b/pkg/channels/telegram.go index f020548..c466e59 100644 --- a/pkg/channels/telegram.go +++ b/pkg/channels/telegram.go @@ -289,6 +289,7 @@ func (c *TelegramChannel) Send(ctx context.Context, msg bus.OutboundMessage) err if markup != nil { sendParams.WithReplyMarkup(markup) } + _ = strings.TrimSpace(msg.ReplyToID) // reserved for provider-level reply threading support sendCtx, cancelSend := withTelegramAPITimeout(ctx) _, err = c.bot.SendMessage(sendCtx, sendParams)