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)