fix: создания креатива

This commit is contained in:
Artem Tsyrulnikov
2026-01-07 19:09:30 +03:00
parent 30791d7f76
commit 3e5bdb8164

View File

@@ -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, "<b>", "")
cleanText = strings.ReplaceAll(cleanText, "</b>", "")
cleanText = strings.ReplaceAll(cleanText, "<i>", "")
cleanText = strings.ReplaceAll(cleanText, "</i>", "")
cleanText = strings.ReplaceAll(cleanText, "<u>", "")
cleanText = strings.ReplaceAll(cleanText, "</u>", "")
cleanText = strings.ReplaceAll(cleanText, "<s>", "")
cleanText = strings.ReplaceAll(cleanText, "</s>", "")
cleanText = strings.ReplaceAll(cleanText, "<code>", "")
cleanText = strings.ReplaceAll(cleanText, "</code>", "")
// Удаляем ВСЕ 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, "&", "&amp;")
s = strings.ReplaceAll(s, "<", "&lt;")
s = strings.ReplaceAll(s, ">", "&gt;")
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(`<b> Добавляем этот креатив?</b>
<b>Название креатива:</b> %s
<i>Если нужно изменить название креатива, просто введите его здесь. Название автоматически сохранится. Лимит 200 символов.</i>`, *s.Name)
<i>Если нужно изменить название креатива, просто введите его здесь. Название автоматически сохранится. Лимит 200 символов.</i>`, escapedName)
// 3. Показываем панель с кнопками редактирования + сохранения
var buttons [][]echotron.InlineKeyboardButton