package screens import ( "context" "example.com/m/bot" "github.com/NicoNex/echotron/v3" "github.com/rs/zerolog/log" ) type AcceptWorkspaceInvite struct { InviteID string } const msgAcceptWorkspaceInviteSuccessfully = ` ✅ Вы присоединились к рабочему пространству! Администратор сможет выдать вам необходимые права в веб-интерфейсе. ` func (s *AcceptWorkspaceInvite) Enter(b *bot.Bot, mode bot.RenderMode) { // Получаем JWT токен jwt, err := b.Backend.GetJWTByTelegramID(context.Background(), b.ChatID) if err != nil { log.Error().Err(err).Msg("Failed to get JWT") b.SendNew("❌ Ошибка авторизации. Попробуйте /start", bot.Keyboard()) return } // Принимаем приглашение err = b.Backend.AcceptWorkspaceInvite(context.Background(), jwt, s.InviteID) if err != nil { log.Error().Err(err).Str("invite_id", s.InviteID).Msg("Failed to accept workspace invite") b.SendNew("❌ Не удалось принять приглашение. Возможно, оно уже было использовано.", bot.Keyboard()) return } b.SendNew(msgAcceptWorkspaceInviteSuccessfully, bot.Keyboard( bot.Row(bot.Button("🏠 Главное меню", "menu")), )) } func (s *AcceptWorkspaceInvite) HandleCallback(b *bot.Bot, u *echotron.Update) { if u.CallbackQuery == nil || u.CallbackQuery.Data == "" { return } if u.CallbackQuery.Data == "menu" { b.SetState(&MainMenu{}, bot.EditMessage) } return } func (s *AcceptWorkspaceInvite) HandleMessage(_ *bot.Bot, _ *echotron.Update) { return } func (s *AcceptWorkspaceInvite) Handle(_ *bot.Bot, _ *echotron.Update) { return }