67 lines
1.6 KiB
Go
67 lines
1.6 KiB
Go
package telegram
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/go-telegram/bot/models"
|
|
)
|
|
|
|
// enrichReplyContent extracts the quoted/original message from a Telegram reply
|
|
// and formats it so the AI agent can see the context of what the user is replying to.
|
|
// Returns the enriched content string, or empty string if this is not a reply.
|
|
func enrichReplyContent(msg *models.Message) string {
|
|
if msg.ReplyToMessage == nil {
|
|
return ""
|
|
}
|
|
|
|
original := msg.ReplyToMessage
|
|
var parts []string
|
|
|
|
// Extract text content from the original message
|
|
if original.Text != "" {
|
|
parts = append(parts, original.Text)
|
|
} else if original.Caption != "" {
|
|
parts = append(parts, original.Caption)
|
|
}
|
|
|
|
if original.Location != nil {
|
|
parts = append(parts, fmt.Sprintf("[Location] Latitude: %.6f, Longitude: %.6f",
|
|
original.Location.Latitude, original.Location.Longitude))
|
|
}
|
|
|
|
if len(original.Photo) > 0 {
|
|
parts = append(parts, "[Image]")
|
|
}
|
|
|
|
if original.Document != nil {
|
|
parts = append(parts, fmt.Sprintf("[File: %s]", original.Document.FileName))
|
|
}
|
|
|
|
if original.Voice != nil {
|
|
parts = append(parts, "[Voice Message]")
|
|
}
|
|
|
|
if original.Audio != nil {
|
|
parts = append(parts, fmt.Sprintf("[Audio: %s]", original.Audio.FileName))
|
|
}
|
|
|
|
if len(parts) == 0 {
|
|
return ""
|
|
}
|
|
|
|
// Identify who wrote the original message
|
|
fromName := "Unknown"
|
|
if original.From != nil {
|
|
fromName = original.From.FirstName
|
|
if original.From.LastName != "" {
|
|
fromName += " " + original.From.LastName
|
|
}
|
|
if original.From.Username != "" {
|
|
fromName = "@" + original.From.Username
|
|
}
|
|
}
|
|
|
|
return fmt.Sprintf("[Reply to %s]: %s", fromName, strings.Join(parts, " "))
|
|
}
|