@@ -0,0 +1,100 @@
|
||||
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 = `
|
||||
<i>Главное меню</i>
|
||||
|
||||
<blockquote expandable>
|
||||
За что отвечает каждая кнопка в этом окне:
|
||||
|
||||
<b>• Рабочее пространство</b> — Одно можно использовать для своих проектов, а другое, например, для проектов, где вы являетесь закупщиком.
|
||||
|
||||
<b>• Мои проекты</b> — Управляйте вашими телеграм-каналами: добавляйте новые, привязывайте к ним креативы, создавайте закупы.
|
||||
|
||||
<b>• Размещения</b> — Просматривайте статистику по всем сделанным размещениям или создавайте новые (бот автоматически сформирует для вас креатив и заменит в нём пригласительную ссылку).
|
||||
|
||||
<b>• Веб-платформа</b> — Используйте функционал нашего сервиса на все 100%: планируйте размещения, просматривайте аналитику, следите за показателями проектов.
|
||||
|
||||
<b>• Помощь</b> — Изучите инструкции, как пользоваться нашим сервисом или напишите в поддержку, если возникли какие-то вопросы.
|
||||
</blockquote>
|
||||
|
||||
Чтобы делать закупы, добавьте канал и креатив:
|
||||
<b>/addchannel</b> — новый канал
|
||||
`
|
||||
|
||||
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() {}
|
||||
Reference in New Issue
Block a user