Как достать id пользователя в телеграм боте?

Рейтинг: 1Ответов: 1Опубликовано: 11.02.2023

Нужно достать id пользователя для дальнейших операций? Написал код, но он не видит user_id как переменную, и когда хочу сделать какую-то операцию с юзером, то пишет, что такой переменной не существует. Ниже сам код:

@bot.message_handler(commands=['start'])
def start(message):
   user_id = message.from_user.id

Ответы

▲ 1Принят

Ваша переменная user_id локальна для данной функции, а значит не доступна в глобальном пространстве имен. Лучше в таком коде использовать класс бота и хранить все что нужно о пользователе в специальном словаре или отдельных полях.

Я не знаком с созданием телеграмм ботов, но могу представить что-то подобное:

class Bot:
    def __init__(self, **options):
        self.bot_info = ...
        self.recent_user_info = {
            'user id': None
            ...
        }

    def start(self, message):
        self.recent_user_info['user id'] = message.from_user.id
    
    ...

Все нужные декораторы и детали добавь сам. Перед созданием ботов убедись, что полностью освоил язык.