diff --git a/pkg/channels/telegram/telegram.go b/pkg/channels/telegram/telegram.go index bb04261a..d7265fb3 100644 --- a/pkg/channels/telegram/telegram.go +++ b/pkg/channels/telegram/telegram.go @@ -1185,7 +1185,7 @@ func (c *TelegramChannel) handleMessages(ctx context.Context, messages []*telego inboundCtx := bus.InboundContext{ Channel: c.Name(), - ChatID: fmt.Sprintf("%d", chatID), + ChatID: compositeChatID, ChatType: peerKind, SenderID: platformID, MessageID: messageID, diff --git a/pkg/channels/telegram/telegram_test.go b/pkg/channels/telegram/telegram_test.go index 6d243e18..ddecad28 100644 --- a/pkg/channels/telegram/telegram_test.go +++ b/pkg/channels/telegram/telegram_test.go @@ -1212,8 +1212,9 @@ func TestHandleMessage_ForumTopic_SetsMetadata(t *testing.T) { inbound, ok := <-messageBus.InboundChan() require.True(t, ok, "expected inbound message") - // ChatID remains the parent chat; TopicID isolates the sub-conversation. - assert.Equal(t, "-1001234567890", inbound.ChatID) + // ChatID includes the thread ID for forum topics so outbound + // delivery resolves the correct topic without relying solely on TopicID fallback. + assert.Equal(t, "-1001234567890/42", inbound.ChatID) assert.Equal(t, "group", inbound.Context.ChatType) assert.Equal(t, "42", inbound.Context.TopicID) }