bot changes

This commit is contained in:
Artem Tsyrulnikov
2026-01-03 11:24:24 +03:00
parent 0577d2a00e
commit 922067d194
13 changed files with 312 additions and 182 deletions

View File

@@ -18,11 +18,12 @@ type PurchaseChannelInput struct {
}
type SelectChannelsForPurchase struct {
WorkspaceID string
ProjectID string
CreativeID string
Channels []PurchaseChannelInput
BackState bot.State
WorkspaceID string
ProjectID string
ProjectTitle string
CreativeID string
Channels []PurchaseChannelInput
BackState bot.State
}
func (s *SelectChannelsForPurchase) Enter(b *bot.Bot, mode bot.RenderMode) {
@@ -30,34 +31,35 @@ func (s *SelectChannelsForPurchase) Enter(b *bot.Bot, mode bot.RenderMode) {
}
func (s *SelectChannelsForPurchase) renderChannelSelection(b *bot.Bot, mode bot.RenderMode) {
text := "<b> Создание закупа</b>\n\n"
text += "<b>Шаг 2/2: Добавление каналов</b>\n\n"
text := "<i>… Создание Каналы</i>\n\n"
text += "<b>Создание закупа</b>\n\n"
text += "<b>Шаг 2/2:</b> Добавление каналов\n\n"
var buttons [][]echotron.InlineKeyboardButton
if len(s.Channels) == 0 {
text += `Добавьте каналы для размещения рекламы.
text += `Добавьте каналы для размещения рекламы
<i>Отправьте username канала (без @)</i>
Отправьте username канала (без @)
Например: <code>channel_name</code>
После добавления всех каналов нажмите "Создать закуп"`
После добавления всех каналов нажмите <b>Создать закуп</b>`
} else {
text += fmt.Sprintf("<b>Добавлено каналов: %d</b>\n\n", len(s.Channels))
text += fmt.Sprintf("Добавлено каналов: <b>%d</b>\n\n", len(s.Channels))
for i, ch := range s.Channels {
channelText := fmt.Sprintf("%d. @%s", i+1, ch.Username)
channelText := fmt.Sprintf(" %d. @%s", i+1, ch.Username)
if ch.PlannedCost != nil {
channelText += fmt.Sprintf(" (%.0f₽)", *ch.PlannedCost)
channelText += fmt.Sprintf(" %.0f₽", *ch.PlannedCost)
}
text += channelText + "\n"
}
text += "\n<i>Добавьте еще каналы или создайте закуп</i>"
text += "\nДобавьте еще каналы или создайте закуп"
// Кнопка создания закупа (доступна только если есть каналы)
buttons = append(buttons, bot.Row(
bot.Button(" Создать закуп", "create"),
bot.Button(" Создать закуп", "create"),
))
}
@@ -95,9 +97,10 @@ func (s *SelectChannelsForPurchase) HandleCallback(b *bot.Bot, u *echotron.Updat
case "back":
// Возвращаемся к выбору креатива
b.SetState(&AddPurchase{
WorkspaceID: s.WorkspaceID,
ProjectID: s.ProjectID,
BackState: s.BackState,
WorkspaceID: s.WorkspaceID,
ProjectID: s.ProjectID,
ProjectTitle: s.ProjectTitle,
BackState: s.BackState,
}, bot.EditMessage)
case "create":
@@ -159,16 +162,18 @@ func (s *SelectChannelsForPurchase) createPurchase(b *bot.Bot, jwt string) {
}
// Показываем успешное создание
successText := fmt.Sprintf(`✅ <b>Закуп создан!</b>
successText := fmt.Sprintf(`<i>… Создание Готово</i>
<b>ID:</b> %s
<b>Креатив:</b> %s
<b>Каналов:</b> %d
<b>Закуп создан</b>
Закуп создан и готов к работе.`, purchase.ID, purchase.CreativeID, len(purchase.Channels))
▪ <b>ID:</b> %s
▪ <b>Креатив:</b> %s
▪ <b>Каналов:</b> %d
Закуп создан и готов к работе`, purchase.ID, purchase.CreativeID, len(purchase.Channels))
b.Edit(successText, bot.Keyboard(
bot.Row(bot.Button(" Готово", "done")),
bot.Row(bot.Button(" Готово", "done")),
))
}