Как Телеграм-боту управлять информацией о пользователях
Боты могут работать в личных сообщениях, в группах и в каналах — в зависимости от их назначения. Эти типы чатов работают по разным правилам, поэтому мы рассмотрим их все в главе "Чаты".
Однако тем или иным образом ваш бот всегда будет взаимодействовать с пользователями. Поэтому на этой странице мы обсудим некоторые общие советы по управлению пользователями.
Профиль пользователя
У пользователей может не быть юзернейма или фамилии — вы должны учитывать это при хранении информации об их профиле. В группах это означает, что бот не всегда может упомянуть пользователя по юзернейму (см. упоминания по ID.)
Кроме того, имя, юзернейм и другие данные профиля, кроме ID, могут меняться со временем, поэтому ID — единственный надеёжный способ идентифицировать пользователя. Мы рассмотрим ID пользователей более подробно далее в книге.
Не у всех пользователей есть фамилия, поэтому user.full_name
— это шорткат для строки с именем и фамилией, когда она существует.
user.full_name
Языки пользователей
Бот может узнать язык, который стоит у человека в приложении Телеграма — благодаря этому бот может общаться с пользователем на родном языке.
Однако язык пользователя включается не во все апдейты. Если ваш бот поддерживает несколько языков, Telegram рекомендует использовать последний известный язык, когда эта информация отсутствует в апдейте.
user.language_code # Иногда может быть None
Видимые пользователи
Бот должен "увидеть" пользователя, чтобы выполнять действия, связанные с ним (например, упоминать его в сообщении). Бот "видит" пользователя, когда, например, получает от него сообщение или получает информацию о нем по имени пользователя.
Это не официальный термин, а условное объяснение того, как работает API Телеграма. Технически говоря, запросы API должны включать не только ID пользователя, но и соответствующий хеш доступа. API предоставляет эти хеши вместе с другой информацией о пользователе в обновлениях. Как Bot API, так и хорошо спроектированные библиотеки Telegram API автоматически обрабатывают кеширование хешей доступа, поэтому обычно вам не нужно об этом думать.