telegram.User¶
str – Optional. IETF language tag of the user’s language.
telegram.Bot – Optional. The Bot to use for instance methods.
- id ( int ) – Unique identifier for this user or bot.
- is_bot ( bool ) – True, if this user is a bot
- first_name ( str ) – User’s or bot’s first name.
- last_name ( str , optional) – User’s or bot’s last name.
- username ( str , optional) – User’s or bot’s username.
- language_code ( str , optional) – IETF language tag of the user’s language.
- bot ( telegram.Bot , optional) – The Bot to use for instance methods.
str – Convenience property. The user’s first_name , followed by (if available) last_name .
get_profile_photos ( *args, **kwargs ) ¶
str – Convenience property. If username is available, returns a t.me link of the user.
mention_html ( name=None ) ¶
| Parameters: | name ( str ) – The name used as a link for the user. Defaults to full_name . |
|---|---|
| Returns: | The inline mention for the user as HTML. |
| Return type: | str |
mention_markdown ( name=None ) ¶
| Parameters: | name ( str ) – The name used as a link for the user. Defaults to full_name . |
|---|---|
| Returns: | The inline mention for the user as markdown. |
| Return type: | str |
name ¶
str – Convenience property. If available, returns the user’s username prefixed with “@”. If username is not available, returns full_name .
Как телеграмм боту получить id пользователя который нажал /start
Здравствуйте пишу бота на Python- pyTelegramBotApi. Нужно что бы при нажатии юзером на кнопку старт мне пришел его айди. как выполнить такой запрос ?
При нажатии юзером кнопки старт происходит отправка боту сообщения с командой ‘start’, а само сообщения содержит информацию, в том числе id юзера, достать который можно например таким хендлером:
![]()
Обратите внимание на id и from_user .
Если нужно не id пользователя, а его имя, то используйте message.from_user.username
![]()
Попробуйте вот так:
![]()
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.13.43310
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
telegram.User¶
Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their id is equal.
- id ( int ) – Unique identifier for this user or bot.
- is_bot ( bool ) – True , if this user is a bot.
- first_name ( str ) – User’s or bots first name.
- last_name ( str , optional) – User’s or bots last name.
- username ( str , optional) – User’s or bots username.
- language_code ( str , optional) – IETF language tag of the user’s language.
- can_join_groups ( str , optional) – True , if the bot can be invited to groups. Returned only in telegram.Bot.get_me requests.
- can_read_all_group_messages ( str , optional) – True , if privacy mode is disabled for the bot. Returned only in telegram.Bot.get_me requests.
- supports_inline_queries ( str , optional) – True , if the bot supports inline queries. Returned only in telegram.Bot.get_me requests.
- bot ( telegram.Bot , optional) – The Bot to use for instance methods.
Unique identifier for this user or bot.
| Type: | int |
|---|
is_bot ¶
True , if this user is a bot.
| Type: | bool |
|---|
first_name ¶
User’s or bot’s first name.
| Type: | str |
|---|
last_name ¶
Optional. User’s or bot’s last name.
| Type: | str |
|---|
username ¶
Optional. User’s or bot’s username.
| Type: | str |
|---|
language_code ¶
Optional. IETF language tag of the user’s language.
| Type: | str |
|---|
can_join_groups ¶
Optional. True , if the bot can be invited to groups. Returned only in telegram.Bot.get_me requests.
| Type: | str |
|---|
can_read_all_group_messages ¶
Optional. True , if privacy mode is disabled for the bot. Returned only in telegram.Bot.get_me requests.
| Type: | str |
|---|
supports_inline_queries ¶
Optional. True , if the bot supports inline queries. Returned only in telegram.Bot.get_me requests.
| Type: | str |
|---|
bot ¶
Optional. The Bot to use for instance methods.
| Type: | telegram.Bot |
|---|
copy_message ( chat_id: Union[int, str], message_id: Union[str, int], caption: str = None, parse_mode: Union[DefaultValue[DVType], str, None] = None, caption_entities: Union[Tuple[MessageEntity, . ], List[MessageEntity]] = None, disable_notification: Union[DefaultValue[DVType], bool] = None, reply_to_message_id: Union[int, str] = None, allow_sending_without_reply: Union[DefaultValue[DVType], bool] = None, reply_markup: ReplyMarkup = None, timeout: Union[DefaultValue[DVType], float, None] = None, api_kwargs: Dict[str, Any] = None ) → MessageId¶
For the documentation of the arguments, please see telegram.Bot.copy_message() .
| Returns: | On success, instance representing the message posted. |
|---|---|
| Return type: | telegram.Message |
full_name ¶
Convenience property. The user’s first_name , followed by (if available) last_name .
| Type: | str |
|---|
get_profile_photos ( offset: int = None, limit: int = 100, timeout: Union[DefaultValue[DVType], float, None] = None, api_kwargs: Dict[str, Any] = None ) → Optional[UserProfilePhotos]¶
For the documentation of the arguments, please see telegram.Bot.get_user_profile_photos() .
Convenience property. If username is available, returns a t.me link of the user.
| Type: | str |
|---|
mention_html ( name: str = None ) → str¶
| Parameters: | name ( str ) – The name used as a link for the user. Defaults to full_name . |
|---|---|
| Returns: | The inline mention for the user as HTML. |
| Return type: | str |
mention_markdown ( name: str = None ) → str¶
telegram.ParseMode.MARKDOWN is is a legacy mode, retained by Telegram for backward compatibility. You should use mention_markdown_v2() instead.
| Parameters: | name ( str ) – The name used as a link for the user. Defaults to full_name . |
|---|---|
| Returns: | The inline mention for the user as markdown (version 1). |
| Return type: | str |
mention_markdown_v2 ( name: str = None ) → str¶
| Parameters: | name ( str ) – The name used as a link for the user. Defaults to full_name . |
|---|---|
| Returns: | The inline mention for the user as markdown (version 2). |
| Return type: | str |
name ¶
Convenience property. If available, returns the user’s username prefixed with “@”. If username is not available, returns full_name .
Создаём Telegram-бота на Python с помощью pyTelegramBotAPI (telebot)

Сегодня будем учиться создавать ботов в Telegram с помощью Python.
Попробуем заставить бота присылать сводку погоды по нашему городу.
Нам потребуется:
- Компьютер или ноутбук (При должном усердии можно попробовать на телефоне).
- Python 3 (Мы будем работать на версии 3.10).
- Редактор кода (Я использую PyCharm).
- Соединение с интернетом.
У всех на слуху две библиотеки для разработки telegram-ботов, это:
— telebot (он же pyTelegramBotAPI),
— aiogram.
Мы будем использовать telebot как более простой инструмент для личного пользования. Посмотрим как запустить первого бота, что для этого нужно и на что он способен.
Как и aiogram, telebot является адаптацией API telegram для взаимодействия с ответами от сайта. Со справкой API telegram можно ознакомиться тут https://core.telegram.org/. Там же вы сможете узнать подробнее об ответах API.
Получение токена для Telegram-бота
Чтобы создать нашего первого бота на Python надо обратиться к официальному боту от Telegram — BotFather. Там можно создать бота и получить его токен. Токен – это аналог пароля, который позволит нам управлять ботом изнутри и программировать его ответы.
Переходим в BotFather — https://t.me/BotFather и нажимаем «Запустить»:

Дальше выбираем команду /newbot и следуем всем указанием, и в конце мы получаем токен нашего бота:

Установка библиотеки telebot и знакомство с pyTelegramBotAPI
После получения токена нужно скачать библиотеку telebot:
если вы на macOS, то:
Мы не будем раскладывать проект по модулям, поэтому у нас будет один исполнимый файл main.py. После создания файла надо импортировать библиотеку и наш токен:
Первым делом следует инициализировать бота, передав в него токен, полученный от BotFather:
Дальше убедимся, что все корректно работает и заставим отправлять полученное сообщение обратно:
Бот работает за cчёт декораторов, которые указывают, что мы хотим от него. Message handler – это обработчик всех сообщений, которые отправляет пользователь. В списке content_types перечисляем типы сообщений, которые хотим принимать. Можно указать text, audio, image и document.
У объекта bot есть множество методов, частью которых мы будем пользоваться. Основной из них — send message.
Чтобы заставить бота принимать сообщение, в конце файла пропишем:
Параметр none_stop указывает, что мы хотим принимать сообщения постоянно.
В стандартном положении параметр равен False, но мы ставим True.
После всех манипуляций получаем свое же сообщение:

Работа с API Яндекс Погоды
Перейдем к добавлению нужных функций — получению данных о погоде.
Для погоды мы будем пользоваться услугами бесплатного API от Яндекс Погоды:
https://yandex.ru/dev/weather/. Следует отметить, что бесплатный API от Яндекса ограничен 50 запросам в сутки. Если вас такое количество не устраивает, можно воспользоваться OpenWeather.
Запрос будет выглядеть так:
Запрос состоит из местоположения — в данном случае указаны координаты Москвы. Далее можно просить у пользователя геолокацию и присылать ему погоду по его координатам.
Для отправки GET-запроса к API Яндекс.Погоды нам поможет библиотека requests, а для обработки ответа — библиотека json.
Библиотека requests предназначена для работы с GET и POST запросами, которые обычный пользователь делает через браузер. Теперь же мы можем общаться с сервером через python оставляя браузер за скобками. Часто используют requests вместе с BS4 (beautiful soup 4), чтобы удобно получать и анализировать информацию из html кода. Но в наш случае другая задача.
API Яндекс.Погоды отдаёт данные в формате JSON, поэтому библиотека json подойдёт лучше всего. JSON основан на JavaScript объекте и часто используется при обмене данными. Раньше он использовался только на сайтаx для работы с текстовыми данными. Сейчас его используют почти везде для удобного обмена данными. JSON принимают все языки программирования, что является его большим плюсом. В python библиотека json уже установлена и не требует отдельной команды.
Добавляем импорт нужных библиотек:
До этого мы не затрагивали тему, как именно обрабатывать команды через слеш. Для этого у декоратора есть метод message_handlers, внутрь которого мы передаем название команд:
Для удобства выносим токен Яндекс.Погоды и ссылку в отдельные переменные:
Отправим себе в Telegram полный ответ от API Яндекс.Погоды и проверим что все работает:

После получения ответа сформируем нормальный ответ для пользователя. Сразу сделаем проверку на status_code, чтобы оповестить пользователя, если проблемы на стороне API. После получения ответа от API в текстовом формате, надо перевести его в словарь. Для этого подключаем библиотеку json — в функцию loads мы передаем текст ответа, а на выходе получаем объект типа dict (словарь):
Теперь бот отправляет температуру, как она ощущается и какая сейчас погода:

Настройка команд для telegram-бота
Нам осталось сделать реакцию на команду /start. Она будет выводить команду для получения данных о погоде:
Мы обращаемся к информации, которая приходит нам в сообщении пользователя, чтобы получить из нее имя пользователя. Подробнее узнать о сообщениях пользователей можно тут https://core.telegram.org/constructor/message.
Теперь создадим подсказки для пользователей. Библиотека pyTElegramBotAPI не позволяет из кода редактировать подсказки для написания команды. Чтобы это сделать нам потребуется несколько операций в BotFather:
- кликаем на меню
- выбираем команду /mybots
- ищем нашего бота
- edit bot
- и выбираем edit commands
- дальше вводим нашу команду (Пример: команда – описание)
После всех манипуляций у нас появится всплывающая менюшка с командами:

Финальный код Telegram-бота на Python
Мы с вами затронули лишь малу часть того, что можно сделать с помощью python и Telegram. Telebot — не самая лучшая библиотека для создания ботов под большую аудитории. Если вы хотите писать бот для магазинов, вам потребуется более сильные инструменты разработки, которые есть в aiogram.
Если вам хочется потренироваться самостоятельно — попробуйте написать бота со следующими функциями: конвертор валюты, сводка по курсу валюты.