ошибка создания креатива
This commit is contained in:
@@ -73,6 +73,7 @@ const msgCreativeManagement = `
|
|||||||
Выберите, что изменить:
|
Выберите, что изменить:
|
||||||
|
|
||||||
`
|
`
|
||||||
|
const msgCreativePreviewBroken = "⚠️ Не удалось показать превью: креатив содержит некорректную разметку. Создайте его заново или отредактируйте текст."
|
||||||
|
|
||||||
func buildCreativeKeyboard(buttons [][]echotron.InlineKeyboardButton) echotron.InlineKeyboardMarkup {
|
func buildCreativeKeyboard(buttons [][]echotron.InlineKeyboardButton) echotron.InlineKeyboardMarkup {
|
||||||
keyboard := echotron.InlineKeyboardMarkup{
|
keyboard := echotron.InlineKeyboardMarkup{
|
||||||
@@ -84,6 +85,14 @@ func buildCreativeKeyboard(buttons [][]echotron.InlineKeyboardButton) echotron.I
|
|||||||
return keyboard
|
return keyboard
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func isTelegramParseError(err error) bool {
|
||||||
|
if err == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
msg := err.Error()
|
||||||
|
return strings.Contains(msg, "can't parse entities") || strings.Contains(msg, "Unexpected end tag")
|
||||||
|
}
|
||||||
|
|
||||||
// GetCreativeText возвращает текст для превью креатива
|
// GetCreativeText возвращает текст для превью креатива
|
||||||
func (e *CreativeEditorFields) GetCreativeText() string {
|
func (e *CreativeEditorFields) GetCreativeText() string {
|
||||||
if e.Text == nil {
|
if e.Text == nil {
|
||||||
@@ -162,6 +171,21 @@ func (e *CreativeEditorFields) SendCreativePreview(b *bot.Bot) {
|
|||||||
}
|
}
|
||||||
return res.Result.ID, nil
|
return res.Result.ID, nil
|
||||||
}
|
}
|
||||||
|
sendFallback := func() (int, error) {
|
||||||
|
res, err := b.SendMessage(msgCreativePreviewBroken, b.ChatID, &echotron.MessageOptions{
|
||||||
|
ReplyMarkup: keyboard,
|
||||||
|
LinkPreviewOptions: echotron.LinkPreviewOptions{
|
||||||
|
IsDisabled: true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
if res.Result == nil {
|
||||||
|
return 0, fmt.Errorf("send message: empty result")
|
||||||
|
}
|
||||||
|
return res.Result.ID, nil
|
||||||
|
}
|
||||||
|
|
||||||
// Если есть медиа, отправляем с медиа
|
// Если есть медиа, отправляем с медиа
|
||||||
if e.MediaFileID != "" {
|
if e.MediaFileID != "" {
|
||||||
@@ -206,6 +230,10 @@ func (e *CreativeEditorFields) SendCreativePreview(b *bot.Bot) {
|
|||||||
// Fallback to text message - используем прямой SendMessage
|
// Fallback to text message - используем прямой SendMessage
|
||||||
if id, err := sendText(); err == nil {
|
if id, err := sendText(); err == nil {
|
||||||
msgID = id
|
msgID = id
|
||||||
|
} else if isTelegramParseError(err) {
|
||||||
|
if id, err := sendFallback(); err == nil {
|
||||||
|
msgID = id
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if res.Result != nil {
|
} else if res.Result != nil {
|
||||||
msgID = res.Result.ID
|
msgID = res.Result.ID
|
||||||
@@ -216,10 +244,21 @@ func (e *CreativeEditorFields) SendCreativePreview(b *bot.Bot) {
|
|||||||
id, err := sendText()
|
id, err := sendText()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error().Err(err).Msg("Failed to send creative preview")
|
log.Error().Err(err).Msg("Failed to send creative preview")
|
||||||
|
if isTelegramParseError(err) {
|
||||||
|
id, err = sendFallback()
|
||||||
|
if err == nil {
|
||||||
|
msgID = id
|
||||||
|
} else {
|
||||||
|
log.Error().Err(err).Msg("Failed to send fallback creative preview")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
} else {
|
||||||
msgID = id
|
msgID = id
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ВАЖНО: Сохраняем копию значения, а не указатель на переменную!
|
// ВАЖНО: Сохраняем копию значения, а не указатель на переменную!
|
||||||
e.CreativeMessageID = &msgID
|
e.CreativeMessageID = &msgID
|
||||||
|
|||||||
Reference in New Issue
Block a user