diff --git a/telegram_bot/screens/add_creative.go b/telegram_bot/screens/add_creative.go
index 8f03b72..7c64290 100644
--- a/telegram_bot/screens/add_creative.go
+++ b/telegram_bot/screens/add_creative.go
@@ -3,6 +3,7 @@ package screens
import (
"context"
"fmt"
+ "regexp"
"strings"
"example.com/m/adapter/backend"
@@ -473,17 +474,9 @@ func (s *AddCreative) extractCreativeFromMessage(message *echotron.Message) {
func (s *AddCreative) generateCreativeName() string {
// Если есть текст, берем первые слова
if s.Text != nil && *s.Text != "" {
- // Удаляем HTML теги для генерации названия
- cleanText := strings.ReplaceAll(*s.Text, "", "")
- cleanText = strings.ReplaceAll(cleanText, "", "")
- cleanText = strings.ReplaceAll(cleanText, "", "")
- cleanText = strings.ReplaceAll(cleanText, "", "")
- cleanText = strings.ReplaceAll(cleanText, "", "")
- cleanText = strings.ReplaceAll(cleanText, "", "")
- cleanText = strings.ReplaceAll(cleanText, "", "")
- cleanText = strings.ReplaceAll(cleanText, "", "")
- cleanText = strings.ReplaceAll(cleanText, "", "")
- cleanText = strings.ReplaceAll(cleanText, "", "")
+ // Удаляем ВСЕ HTML теги с помощью regex
+ re := regexp.MustCompile(`<[^>]*>`)
+ cleanText := re.ReplaceAllString(*s.Text, "")
// Берем первые 50 символов
runes := []rune(strings.TrimSpace(cleanText))
@@ -499,6 +492,14 @@ func (s *AddCreative) generateCreativeName() string {
return "Новый креатив"
}
+// escapeHTML экранирует HTML-символы для безопасного вывода
+func escapeHTML(s string) string {
+ s = strings.ReplaceAll(s, "&", "&")
+ s = strings.ReplaceAll(s, "<", "<")
+ s = strings.ReplaceAll(s, ">", ">")
+ return s
+}
+
// showCreativeConfirmation показывает превью креатива + панель с предложением добавить
func (s *AddCreative) showCreativeConfirmation(b *bot.Bot) {
@@ -510,11 +511,13 @@ func (s *AddCreative) showCreativeConfirmation(b *bot.Bot) {
}
// 2. Формируем текст панели управления
+ // Экранируем HTML-символы в названии для безопасного вывода
+ escapedName := escapeHTML(*s.Name)
confirmText := fmt.Sprintf(`➕ Добавляем этот креатив?
Название креатива: %s
-Если нужно изменить название креатива, просто введите его здесь. Название автоматически сохранится. Лимит 200 символов.`, *s.Name)
+Если нужно изменить название креатива, просто введите его здесь. Название автоматически сохранится. Лимит 200 символов.`, escapedName)
// 3. Показываем панель с кнопками редактирования + сохранения
var buttons [][]echotron.InlineKeyboardButton