diff --git a/pkg/channels/telegram.go b/pkg/channels/telegram.go index e3b2afc..f7c5cad 100644 --- a/pkg/channels/telegram.go +++ b/pkg/channels/telegram.go @@ -303,11 +303,15 @@ func (c *TelegramChannel) Send(ctx context.Context, msg bus.OutboundMessage) err } if pID, ok := c.placeholders.Load(msg.ChatID); ok { + htmlForEdit := htmlContent + if len([]rune(htmlForEdit)) > 3500 { + htmlForEdit = sanitizeTelegramHTML(markdownToTelegramHTML(splitTelegramText(plainTextFromTelegramHTML(htmlForEdit), 3500)[0])) + } editCtx, cancelEdit := withTelegramAPITimeout(ctx) params := &telego.EditMessageTextParams{ ChatID: chatID, MessageID: pID.(int), - Text: htmlContent, + Text: htmlForEdit, ParseMode: telego.ModeHTML, ReplyMarkup: markup, } diff --git a/pkg/providers/http_provider.go b/pkg/providers/http_provider.go index 0ddd3ca..54e1f4a 100644 --- a/pkg/providers/http_provider.go +++ b/pkg/providers/http_provider.go @@ -394,7 +394,7 @@ func (p *HTTPProvider) callChatCompletionsStream(ctx context.Context, messages [ requestBody["temperature"] = temperature } var fullText strings.Builder - _, status, ctype, err := p.postJSONStream(ctx, endpointFor(p.apiBase, "/chat/completions"), requestBody, func(event string) { + rawBody, status, ctype, err := p.postJSONStream(ctx, endpointFor(p.apiBase, "/chat/completions"), requestBody, func(event string) { var chunk struct { Choices []struct { Delta struct { @@ -416,6 +416,9 @@ func (p *HTTPProvider) callChatCompletionsStream(ctx context.Context, messages [ if err != nil { return nil, status, ctype, err } + if status != http.StatusOK || !strings.Contains(strings.ToLower(ctype), "text/event-stream") { + return rawBody, status, ctype, nil + } body, _ := json.Marshal(map[string]interface{}{ "choices": []map[string]interface{}{{ "message": map[string]interface{}{"content": fullText.String()},