fix: создания креатива
This commit is contained in:
@@ -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, "&", "&")
|
||||
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(`<b>➕ Добавляем этот креатив?</b>
|
||||
|
||||
<b>Название креатива:</b> %s
|
||||
|
||||
<i>Если нужно изменить название креатива, просто введите его здесь. Название автоматически сохранится. Лимит 200 символов.</i>`, *s.Name)
|
||||
<i>Если нужно изменить название креатива, просто введите его здесь. Название автоматически сохранится. Лимит 200 символов.</i>`, escapedName)
|
||||
|
||||
// 3. Показываем панель с кнопками редактирования + сохранения
|
||||
var buttons [][]echotron.InlineKeyboardButton
|
||||
|
||||
Reference in New Issue
Block a user