package screens import ( "context" "fmt" "github.com/NicoNex/echotron/v3" "github.com/TelegramExchange/tgex-backend/tg_bot/bot" "github.com/rs/zerolog/log" ) type MainMenu struct{} const msgAbout = ` Главное меню
За что отвечает каждая кнопка в этом окне:

• Рабочее пространство — Одно можно использовать для своих проектов, а другое, например, для проектов, где вы являетесь закупщиком.

• Мои проекты — Управляйте вашими телеграм-каналами: добавляйте новые, привязывайте к ним креативы, создавайте закупы.

• Размещения — Просматривайте статистику по всем сделанным размещениям или создавайте новые (бот автоматически сформирует для вас креатив и заменит в нём пригласительную ссылку).

• Веб-платформа — Используйте функционал нашего сервиса на все 100%: планируйте размещения, просматривайте аналитику, следите за показателями проектов.

• Помощь — Изучите инструкции, как пользоваться нашим сервисом или напишите в поддержку, если возникли какие-то вопросы.
Чтобы делать закупы, добавьте канал и креатив: /addchannel — новый канал ` func (s *MainMenu) Enter(b *bot.Bot, mode bot.RenderMode) { msg := msgAbout if b.Session.WasRestarted { msg = "⚠️ Бот был перезапущен. Извиняемся за неудобства :(\n\n" + msgAbout b.Session.WasRestarted = false } loadWorkspace := func() string { workspaces, err := b.Backend.GetWorkspaces(context.Background(), b.Session.JWT) if err != nil { log.Error().Err(err).Msg("Failed to get workspaces for main menu") return "ошибка" } if len(workspaces) == 0 { workspace, err := b.Backend.CreateWorkspace(context.Background(), b.Session.JWT, "Личное") if err != nil { log.Error().Err(err).Msg("Failed to create workspace") } workspaces = append(workspaces, workspace) } selected := workspaces[0] // дефолт — первый if b.Session.WorkspaceID != "" { for _, ws := range workspaces { if ws.ID == b.Session.WorkspaceID { selected = ws break } } } b.Session.WorkspaceID = selected.ID return selected.Name } workspaceName := loadWorkspace() keyboard := Keyboard( Row(Button(fmt.Sprintf("Рабочее пространство: %s", workspaceName), "workspace_menu")), Row(Button("Мои проекты", "my_projects"), URLButton("Поддержка", "https://t.me/SmartpostSupport")), Row(Button("Размещения", "placements"), URLButton("Дашборд", fmt.Sprintf("https://app.smart-post.ru/dashboard/%s", b.Session.WorkspaceID))), ) b.Render(msg, keyboard, mode) } func (s *MainMenu) HandleCallback(b *bot.Bot, u *echotron.Update) { switch u.CallbackQuery.Data { case "my_projects": b.SetState(&MyProjects{BackState: &MainMenu{}}, bot.EditMessage) case "placements": b.SetState(&MyProjects{BackState: &MainMenu{}, OpenPlacements: true}, bot.EditMessage) case "workspace_menu": b.SetState(&WorkspaceMenu{BackState: &MainMenu{}}, bot.EditMessage) default: s.Enter(b, bot.NewMessage) } } func (s *MainMenu) HandleMessage(b *bot.Bot, u *echotron.Update) {} func (s *MainMenu) Handle(b *bot.Bot, u *echotron.Update) { b.SetState(&MainMenu{}, bot.NewMessage) } func (s *MainMenu) Exit() {}