59 lines
1.5 KiB
Go
59 lines
1.5 KiB
Go
package screens
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/NicoNex/echotron/v3"
|
|
"github.com/TelegramExchange/tgex-backend/tg_bot/bot"
|
|
"github.com/rs/zerolog/log"
|
|
)
|
|
|
|
type Login struct{}
|
|
|
|
const msgHelloLogin = `
|
|
Привет, %s!
|
|
Нажми кнопку для входа на сайт. 👇
|
|
`
|
|
|
|
func (s *Login) Enter(b *bot.Bot, mode bot.RenderMode) {
|
|
token, err := b.Backend.CreateLoginToken(context.Background(), b.ChatID)
|
|
if err != nil {
|
|
b.SendNew("❌ Произошла ошибка при создании токена входа. Попробуйте позже.", emptyKeyboard)
|
|
return
|
|
}
|
|
|
|
loginURL := b.Backend.LoginURL(token)
|
|
|
|
usernameDisplay := "аноним"
|
|
if b.Session.FirstName != "" {
|
|
usernameDisplay = b.Session.FirstName
|
|
}
|
|
|
|
kb := Keyboard(Row(URLButton("Войти на сайт", loginURL)))
|
|
|
|
res, err := b.SendMessage(fmt.Sprintf(msgHelloLogin, usernameDisplay), b.ChatID, &echotron.MessageOptions{
|
|
ReplyMarkup: kb,
|
|
ParseMode: echotron.HTML,
|
|
})
|
|
if err != nil {
|
|
log.Err(err).Msg("SendMessage error")
|
|
return
|
|
}
|
|
|
|
if res.Result != nil {
|
|
if err := b.Backend.AttachLoginTokenMessage(context.Background(), token, res.Result.ID); err != nil {
|
|
log.Err(err).Msg("AttachLoginTokenMessage error")
|
|
}
|
|
}
|
|
|
|
b.SetState(&MainMenu{}, bot.NewMessage)
|
|
}
|
|
func (s *Login) HandleCallback(b *bot.Bot, u *echotron.Update) {}
|
|
|
|
func (s *Login) HandleMessage(b *bot.Bot, u *echotron.Update) {}
|
|
|
|
func (s *Login) Handle(b *bot.Bot, u *echotron.Update) {}
|
|
|
|
func (s *Login) Exit() {}
|