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

@@ -10,9 +10,10 @@ import (
)
type Purchases struct {
WorkspaceID string
ProjectID string
BackState bot.State
WorkspaceID string
ProjectID string
ProjectTitle string
BackState bot.State
}
func (s *Purchases) Enter(b *bot.Bot, mode bot.RenderMode) {
@@ -39,7 +40,12 @@ func (s *Purchases) renderPurchases(b *bot.Bot, mode bot.RenderMode, jwt string)
return
}
text := "<b>📦 Закупы</b>\n\n"
// Навигация: 2 последних уровня
navPath := "… Закупы"
if s.ProjectTitle != "" {
navPath = fmt.Sprintf("… %s Закупы", s.ProjectTitle)
}
text := fmt.Sprintf("<i>%s</i>\n\n<b>Закупы</b>\n\n", navPath)
var buttons [][]echotron.InlineKeyboardButton
@@ -47,24 +53,24 @@ func (s *Purchases) renderPurchases(b *bot.Bot, mode bot.RenderMode, jwt string)
text += `Список закупов пуст.
<i>Закуп — это план размещения рекламы в каналах:</i>
Выбор креатива
Список каналов для размещения
Планируемая стоимость
Статус выполнения
Выбор креатива
Список каналов для размещения
Планируемая стоимость
Статус выполнения
<i>Создайте первый закуп 👇</i>`
Создайте первый закуп`
} else {
text += "Управление закупами для проекта.\n\n"
text += "<i>Выберите закуп для деталей:</i>\n\n"
text += "Выберите закуп для деталей:\n\n"
for i, purchase := range purchases {
// Определяем статус emoji
statusEmoji := "📌"
// Определяем статус
statusSymbol := ""
switch purchase.Status {
case "active":
statusEmoji = "🟢"
statusSymbol = ""
case "archived":
statusEmoji = "📦"
statusSymbol = ""
}
// Считаем каналы по статусам
@@ -77,7 +83,7 @@ func (s *Purchases) renderPurchases(b *bot.Bot, mode bot.RenderMode, jwt string)
}
buttonText := fmt.Sprintf("%s Закуп #%d (%d/%d каналов)",
statusEmoji,
statusSymbol,
i+1,
completedChannels,
totalChannels,
@@ -132,9 +138,10 @@ func (s *Purchases) HandleCallback(b *bot.Bot, u *echotron.Update) {
case "add_purchase":
b.SetState(&AddPurchase{
WorkspaceID: s.WorkspaceID,
ProjectID: s.ProjectID,
BackState: s,
WorkspaceID: s.WorkspaceID,
ProjectID: s.ProjectID,
ProjectTitle: s.ProjectTitle,
BackState: s,
}, bot.EditMessage)
default:
@@ -142,10 +149,11 @@ func (s *Purchases) HandleCallback(b *bot.Bot, u *echotron.Update) {
if len(data) > 9 && data[:9] == "purchase:" {
purchaseID := data[9:]
b.SetState(&PurchaseDetails{
WorkspaceID: s.WorkspaceID,
ProjectID: s.ProjectID,
PurchaseID: purchaseID,
BackState: s,
WorkspaceID: s.WorkspaceID,
ProjectID: s.ProjectID,
ProjectTitle: s.ProjectTitle,
PurchaseID: purchaseID,
BackState: s,
}, bot.NewMessage)
} else {
s.Enter(b, bot.NewMessage)