информация о пользователе
This commit is contained in:
@@ -68,6 +68,49 @@ func NewBot(
|
||||
return bot
|
||||
}
|
||||
|
||||
// GetOrCreateJWT получает JWT токен, передавая актуальные данные пользователя из update
|
||||
func (b *Bot) GetOrCreateJWT(u *echotron.Update) error {
|
||||
// Извлекаем данные пользователя из update
|
||||
var user *echotron.User
|
||||
if u.Message != nil && u.Message.From != nil {
|
||||
user = u.Message.From
|
||||
} else if u.CallbackQuery != nil && u.CallbackQuery.From != nil {
|
||||
user = u.CallbackQuery.From
|
||||
}
|
||||
|
||||
var username, firstName, lastName *string
|
||||
if user != nil {
|
||||
if user.Username != "" {
|
||||
username = &user.Username
|
||||
}
|
||||
if user.FirstName != "" {
|
||||
firstName = &user.FirstName
|
||||
}
|
||||
if user.LastName != "" {
|
||||
lastName = &user.LastName
|
||||
}
|
||||
}
|
||||
|
||||
// Запрашиваем JWT с актуальными данными пользователя (или создаем нового если не существует)
|
||||
jwt, err := b.Backend.GetJWTByTelegramUser(
|
||||
context.Background(),
|
||||
b.ChatID,
|
||||
username,
|
||||
firstName,
|
||||
lastName,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Сохраняем в сессию
|
||||
b.Session.JWT = jwt
|
||||
if username != nil {
|
||||
b.Session.UserName = *username
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *Bot) SetState(s State, mode RenderMode) {
|
||||
log.Info().
|
||||
Int64("chat_id", b.ChatID).
|
||||
@@ -265,6 +308,12 @@ func (b *Bot) Update(u *echotron.Update) {
|
||||
return
|
||||
}
|
||||
|
||||
// Получаем или создаем JWT, обновляя данные пользователя (username, first_name, last_name)
|
||||
if err := b.GetOrCreateJWT(u); err != nil {
|
||||
log.Error().Err(err).Msg("Failed to get or create JWT")
|
||||
// Не блокируем работу бота если JWT не удалось получить - это не критично для всех действий
|
||||
}
|
||||
|
||||
exec := &Exec{}
|
||||
|
||||
b.exec = exec
|
||||
|
||||
Reference in New Issue
Block a user