информация о пользователе

This commit is contained in:
Artem Tsyrulnikov
2026-01-07 12:22:56 +03:00
parent 5b46737536
commit 3e1ad27c66
17 changed files with 139 additions and 229 deletions

View File

@@ -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