Как получить id пользователя telegram python
Перейти к содержимому

Как получить id пользователя telegram python

  • автор:

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. Нужно что бы при нажатии юзером на кнопку старт мне пришел его айди. как выполнить такой запрос ?

easy's user avatar

При нажатии юзером кнопки старт происходит отправка боту сообщения с командой ‘start’, а само сообщения содержит информацию, в том числе id юзера, достать который можно например таким хендлером:

Pavel Durmanov's user avatar

Обратите внимание на id и from_user .

Если нужно не id пользователя, а его имя, то используйте message.from_user.username

Alex Bocharov's user avatar

Попробуйте вот так:

0xdb's user avatar

Дизайн сайта / логотип © 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 с помощью pyTelegramBotAPI (telebot)

Сегодня будем учиться создавать ботов в Telegram с помощью Python.
Попробуем заставить бота присылать сводку погоды по нашему городу.

Нам потребуется:

  1. Компьютер или ноутбук (При должном усердии можно попробовать на телефоне).
  2. Python 3 (Мы будем работать на версии 3.10).
  3. Редактор кода (Я использую PyCharm).
  4. Соединение с интернетом.

У всех на слуху две библиотеки для разработки 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:

  1. кликаем на меню
  2. выбираем команду /mybots
  3. ищем нашего бота
  4. edit bot
  5. и выбираем edit commands
  6. дальше вводим нашу команду (Пример: команда – описание)

После всех манипуляций у нас появится всплывающая менюшка с командами:

Финальный код Telegram-бота на Python

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

Если вам хочется потренироваться самостоятельно — попробуйте написать бота со следующими функциями: конвертор валюты, сводка по курсу валюты.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *