139 lines
3.9 KiB
Go
139 lines
3.9 KiB
Go
package screens
|
||
|
||
import (
|
||
"github.com/NicoNex/echotron/v3"
|
||
"github.com/TelegramExchange/tgex-backend/tg_bot/bot"
|
||
)
|
||
|
||
const msgEditCreativeText = `
|
||
<b>✎ Введите текст креатива:</b>
|
||
|
||
⚠ <b>Важно:</b> Текст должен содержать <b>ОДНУ</b> инвайт-ссылку вашего канала
|
||
|
||
<b>Формат ссылки:</b>
|
||
<code>https://t.me/+xxx</code>
|
||
|
||
<b>Пример:</b>
|
||
<i>Присоединяйтесь к нашему каналу!
|
||
https://t.me/+AbCdEfGhIjKlMn</i>
|
||
|
||
`
|
||
const msgAddButtonPrompt = `
|
||
<b>+ Добавить кнопку</b>
|
||
|
||
Введите <b>текст кнопки:</b>
|
||
|
||
<i>Например:</i>
|
||
• Перейти на сайт
|
||
• Написать нам
|
||
|
||
<i>Ссылка на канал подставится автоматически при создании закупа.</i>
|
||
|
||
`
|
||
const msgAddMediaPrompt = `
|
||
<b>+ Добавить медиа</b>
|
||
|
||
Отправьте <b>фото, видео или GIF</b>
|
||
|
||
<i>Можно добавить несколько медиа — отправляйте по одному.</i>
|
||
<i>Нажмите «Отмена», когда закончите.</i>
|
||
|
||
`
|
||
const msgButtonURLPrompt = `
|
||
<b>✧ Введите URL для кнопки:</b>
|
||
|
||
URL должен начинаться с <code>http://</code> или <code>https://</code>
|
||
|
||
<i>Например:</i>
|
||
<code>https://example.com</code>
|
||
<code>https://t.me/yourchannel</code>
|
||
|
||
`
|
||
const msgInvalidURL = `
|
||
<b>❌ Неверный формат URL</b>
|
||
|
||
URL должен начинаться с <code>http://</code> или <code>https://</code>
|
||
|
||
Попробуйте ещё раз.
|
||
|
||
`
|
||
|
||
const msgEditTag = `
|
||
<b>🏷 Выберите тег креатива:</b>
|
||
|
||
🧪 <b>Тестовый</b> — для A/B тестов и экспериментов
|
||
🚀 <b>Рабочий</b> — проверенный эффективный креатив
|
||
|
||
`
|
||
|
||
func (e *CreativeEditorFields) ShowTagPanel(b *bot.Bot) {
|
||
testingLabel := "🧪 Тестовый"
|
||
productionLabel := "🚀 Рабочий"
|
||
|
||
if e.Tag != nil {
|
||
if *e.Tag == "testing" {
|
||
testingLabel = "✓ 🧪 Тестовый"
|
||
} else if *e.Tag == "production" {
|
||
productionLabel = "✓ 🚀 Рабочий"
|
||
}
|
||
}
|
||
|
||
e.ShowControlPanel(b, msgEditTag, [][]echotron.InlineKeyboardButton{
|
||
Row(
|
||
Button(testingLabel, "tag_testing"),
|
||
Button(productionLabel, "tag_production"),
|
||
),
|
||
Row(Button("« Назад", "cancel_edit")),
|
||
})
|
||
}
|
||
|
||
func (e *CreativeEditorFields) GetTagLabel() string {
|
||
if e.Tag != nil && *e.Tag == "production" {
|
||
return "🏷 Рабочий"
|
||
}
|
||
return "🏷 Тестовый"
|
||
}
|
||
|
||
func (e *CreativeEditorFields) ShowAddButtonPanel(b *bot.Bot) {
|
||
inviteLabel := "Ссылка на канал"
|
||
customLabel := "Своя ссылка"
|
||
if e.PendingButtonType == "invite" {
|
||
inviteLabel = "✓ Ссылка на канал"
|
||
}
|
||
if e.PendingButtonType == "custom" {
|
||
customLabel = "✓ Своя ссылка"
|
||
}
|
||
|
||
e.ShowControlPanel(b, msgAddButtonPrompt, [][]echotron.InlineKeyboardButton{
|
||
Row(
|
||
Button(inviteLabel, "button_type_invite"),
|
||
Button(customLabel, "button_type_custom"),
|
||
),
|
||
Row(Button("« Отмена", "cancel_add_button")),
|
||
})
|
||
}
|
||
|
||
func (e *CreativeEditorFields) ShowTextEditPanel(b *bot.Bot) {
|
||
e.ShowControlPanel(b, msgEditCreativeText, [][]echotron.InlineKeyboardButton{
|
||
Row(Button("« Отмена", "cancel_edit")),
|
||
})
|
||
}
|
||
|
||
func (e *CreativeEditorFields) ShowMediaPanel(b *bot.Bot) {
|
||
e.ShowControlPanel(b, msgAddMediaPrompt, [][]echotron.InlineKeyboardButton{
|
||
Row(Button("« Отмена", "cancel_media")),
|
||
})
|
||
}
|
||
|
||
func (e *CreativeEditorFields) ShowButtonURLPanel(b *bot.Bot) {
|
||
e.ShowControlPanel(b, msgButtonURLPrompt, [][]echotron.InlineKeyboardButton{
|
||
Row(Button("« Отмена", "cancel_add_button")),
|
||
})
|
||
}
|
||
|
||
func (e *CreativeEditorFields) ShowInvalidButtonURLPanel(b *bot.Bot) {
|
||
e.ShowControlPanel(b, msgInvalidURL, [][]echotron.InlineKeyboardButton{
|
||
Row(Button("« Отмена", "cancel_add_button")),
|
||
})
|
||
}
|