Как узнать user id telegram telebot python
Перейти к содержимому

Как узнать user id telegram telebot python

  • автор:

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.

is_premium ( bool , optional) –

True , if this user is a Telegram Premium user.

New in version 13.13.

added_to_attachment_menu ( bool , optional) –

True , if this user added the bot to the attachment menu.

New in version 13.13.

Unique identifier for this user or bot.

True , if this user is a bot.

User’s or bot’s first name.

Optional. User’s or bot’s last name.

Optional. User’s or bot’s username.

Optional. IETF language tag of the user’s language.

Optional. True , if the bot can be invited to groups. Returned only in telegram.Bot.get_me requests.

Optional. True , if privacy mode is disabled for the bot. Returned only in telegram.Bot.get_me requests.

Optional. True , if the bot supports inline queries. Returned only in telegram.Bot.get_me requests.

Optional. The Bot to use for instance methods.

Optional. True , if this user is a Telegram Premium user.

New in version 13.13.

Optional. True , if this user added the bot to the attachment menu.

New in version 13.13.

approve_join_request ( chat_id , timeout = None , api_kwargs = None ) ¶

For the documentation of the arguments, please see telegram.Bot.approve_chat_join_request() .

New in version 13.8.

On success, True is returned.

copy_message ( chat_id , message_id , caption = None , parse_mode = None , caption_entities = None , disable_notification = None , reply_to_message_id = None , allow_sending_without_reply = None , reply_markup = None , timeout = None , api_kwargs = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.copy_message() .

On success, instance representing the message posted.

decline_join_request ( chat_id , timeout = None , api_kwargs = None ) ¶

For the documentation of the arguments, please see telegram.Bot.decline_chat_join_request() .

New in version 13.8.

On success, True is returned.

Convenience property. The user’s first_name , followed by (if available) last_name .

get_menu_button ( timeout = None , api_kwargs = None ) ¶

For the documentation of the arguments, please see telegram.Bot.get_chat_menu_button() .

New in version 13.12.

On success, the current menu button is returned.

get_profile_photos ( offset = None , limit = 100 , timeout = None , api_kwargs = None ) ¶

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.

mention_button ( name = None ) ¶

New in version 13.9.

name ( str ) – The name used as a link for the user. Defaults to full_name .

InlineButton with url set to the user mention

mention_html ( name = None ) ¶ Parameters

name ( str ) – The name used as a link for the user. Defaults to full_name .

The inline mention for the user as HTML.

mention_markdown ( name = None ) ¶

telegram.ParseMode.MARKDOWN is a legacy mode, retained by Telegram for backward compatibility. You should use mention_markdown_v2() instead.

name ( str ) – The name used as a link for the user. Defaults to full_name .

The inline mention for the user as markdown (version 1).

mention_markdown_v2 ( name = None ) ¶ Parameters

name ( str ) – The name used as a link for the user. Defaults to full_name .

The inline mention for the user as markdown (version 2).

Convenience property. If available, returns the user’s username prefixed with “@”. If username is not available, returns full_name .

pin_message ( message_id , disable_notification = None , timeout = None , api_kwargs = None ) ¶

For the documentation of the arguments, please see telegram.Bot.pin_chat_message() .

On success, True is returned.

send_action ( action , timeout = None , api_kwargs = None ) ¶

send_animation ( animation , duration = None , width = None , height = None , thumb = None , caption = None , parse_mode = None , disable_notification = None , reply_to_message_id = None , reply_markup = None , timeout = 20 , api_kwargs = None , allow_sending_without_reply = None , caption_entities = None , filename = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_animation() .

On success, instance representing the message posted.

send_audio ( audio , duration = None , performer = None , title = None , caption = None , disable_notification = None , reply_to_message_id = None , reply_markup = None , timeout = 20 , parse_mode = None , thumb = None , api_kwargs = None , allow_sending_without_reply = None , caption_entities = None , filename = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_audio() .

On success, instance representing the message posted.

send_chat_action ( action , timeout = None , api_kwargs = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_chat_action() .

send_contact ( phone_number = None , first_name = None , last_name = None , disable_notification = None , reply_to_message_id = None , reply_markup = None , timeout = None , contact = None , vcard = None , api_kwargs = None , allow_sending_without_reply = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_contact() .

On success, instance representing the message posted.

send_copy ( from_chat_id , message_id , caption = None , parse_mode = None , caption_entities = None , disable_notification = None , reply_to_message_id = None , allow_sending_without_reply = None , reply_markup = None , timeout = None , api_kwargs = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.copy_message() .

On success, instance representing the message posted.

send_dice ( disable_notification = None , reply_to_message_id = None , reply_markup = None , timeout = None , emoji = None , api_kwargs = None , allow_sending_without_reply = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_dice() .

On success, instance representing the message posted.

send_document ( document , filename = None , caption = None , disable_notification = None , reply_to_message_id = None , reply_markup = None , timeout = 20 , parse_mode = None , thumb = None , api_kwargs = None , disable_content_type_detection = None , allow_sending_without_reply = None , caption_entities = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_document() .

On success, instance representing the message posted.

send_game ( game_short_name , disable_notification = None , reply_to_message_id = None , reply_markup = None , timeout = None , api_kwargs = None , allow_sending_without_reply = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_game() .

On success, instance representing the message posted.

send_invoice ( title , description , payload , provider_token , currency , prices , start_parameter = None , photo_url = None , photo_size = None , photo_width = None , photo_height = None , need_name = None , need_phone_number = None , need_email = None , need_shipping_address = None , is_flexible = None , disable_notification = None , reply_to_message_id = None , reply_markup = None , provider_data = None , send_phone_number_to_provider = None , send_email_to_provider = None , timeout = None , api_kwargs = None , allow_sending_without_reply = None , max_tip_amount = None , suggested_tip_amounts = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_invoice() .

As of API 5.2 start_parameter is an optional argument and therefore the order of the arguments had to be changed. Use keyword arguments to make sure that the arguments are passed correctly.

Changed in version 13.5: As of Bot API 5.2, the parameter start_parameter is optional.

On success, instance representing the message posted.

send_location ( latitude = None , longitude = None , disable_notification = None , reply_to_message_id = None , reply_markup = None , timeout = None , location = None , live_period = None , api_kwargs = None , horizontal_accuracy = None , heading = None , proximity_alert_radius = None , allow_sending_without_reply = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_location() .

On success, instance representing the message posted.

send_media_group ( media , disable_notification = None , reply_to_message_id = None , timeout = 20 , api_kwargs = None , allow_sending_without_reply = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_media_group() .

] On success, instance representing the message posted.

send_message ( text , parse_mode = None , disable_web_page_preview = None , disable_notification = None , reply_to_message_id = None , reply_markup = None , timeout = None , api_kwargs = None , allow_sending_without_reply = None , entities = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_message() .

On success, instance representing the message posted.

send_photo ( photo , caption = None , disable_notification = None , reply_to_message_id = None , reply_markup = None , timeout = 20 , parse_mode = None , api_kwargs = None , allow_sending_without_reply = None , caption_entities = None , filename = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_photo() .

On success, instance representing the message posted.

send_poll ( question , options , is_anonymous = True , type = ‘regular’ , allows_multiple_answers = False , correct_option_id = None , is_closed = None , disable_notification = None , reply_to_message_id = None , reply_markup = None , timeout = None , explanation = None , explanation_parse_mode = None , open_period = None , close_date = None , api_kwargs = None , allow_sending_without_reply = None , explanation_entities = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_poll() .

On success, instance representing the message posted.

send_sticker ( sticker , disable_notification = None , reply_to_message_id = None , reply_markup = None , timeout = 20 , api_kwargs = None , allow_sending_without_reply = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_sticker() .

On success, instance representing the message posted.

send_venue ( latitude = None , longitude = None , title = None , address = None , foursquare_id = None , disable_notification = None , reply_to_message_id = None , reply_markup = None , timeout = None , venue = None , foursquare_type = None , api_kwargs = None , google_place_id = None , google_place_type = None , allow_sending_without_reply = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_venue() .

On success, instance representing the message posted.

send_video ( video , duration = None , caption = None , disable_notification = None , reply_to_message_id = None , reply_markup = None , timeout = 20 , width = None , height = None , parse_mode = None , supports_streaming = None , thumb = None , api_kwargs = None , allow_sending_without_reply = None , caption_entities = None , filename = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_video() .

On success, instance representing the message posted.

send_video_note ( video_note , duration = None , length = None , disable_notification = None , reply_to_message_id = None , reply_markup = None , timeout = 20 , thumb = None , api_kwargs = None , allow_sending_without_reply = None , filename = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_video_note() .

On success, instance representing the message posted.

send_voice ( voice , duration = None , caption = None , disable_notification = None , reply_to_message_id = None , reply_markup = None , timeout = 20 , parse_mode = None , api_kwargs = None , allow_sending_without_reply = None , caption_entities = None , filename = None , protect_content = None ) ¶

For the documentation of the arguments, please see telegram.Bot.send_voice() .

On success, instance representing the message posted.

set_menu_button ( menu_button = None , timeout = None , api_kwargs = None ) ¶

For the documentation of the arguments, please see telegram.Bot.set_chat_menu_button() .

New in version 13.12.

On success, True is returned.

unpin_all_messages ( timeout = None , api_kwargs = None ) ¶

For the documentation of the arguments, please see telegram.Bot.unpin_all_chat_messages() .

On success, True is returned.

unpin_message ( timeout = None , api_kwargs = None , message_id = None ) ¶

Python-сообщество

API TelegramBot библиотека “telebot”
Есть ли такая возможность узнать юзернейм(@username) или Имя человека зная его id c помощью бота, без личной переписки человека с ботом?
Если есть, то как?

Как пример @SangMataInfo_bot, он может найти все юзернеймы человека по его id

Отредактировано danker038 (Апрель 8, 2020 20:27:10)

#2 Апрель 8, 2020 21:52:37

pyTelegramBotAPI поиск юзернейма(@username) по ID человека

#3 Апрель 9, 2020 01:10:57

pyTelegramBotAPI поиск юзернейма(@username) по ID человека

немного не разобрался, как их использовать
как и куда вставлять
можете подробнее рассказать?

#4 Апрель 9, 2020 02:29:18

pyTelegramBotAPI поиск юзернейма(@username) по ID человека

#5 Апрель 9, 2020 02:44:48

pyTelegramBotAPI поиск юзернейма(@username) по ID человека

например я дал боту чей то ID, бот должен отдать его @username, но пользователь может даже не знать этого бота.

Отредактировано danker038 (Апрель 9, 2020 02:45:35)

#6 Апрель 9, 2020 03:16:46

pyTelegramBotAPI поиск юзернейма(@username) по ID человека

Скорее всего, не получится так сделать. У Telegram боты сильно ограничены.

In order to obtain an API id and develop your own application using the Telegram API you need to do the following:

Sign up for Telegram using any application.
Log in to your Telegram core: https://my.telegram.org.
Go to ‘API development tools’ and fill out the form.
You will get basic addresses as well as the api_id and api_hash parameters required for user authorization.
For the moment each number can only have one api_id connected to it.

We will be sending important developer notifications to the phone number that you use in this process, so please use an up-to-date number connected to your active Telegram account.

Python Telebot — получить телефон пользователя

получить телефон пользователя

Ниже — пример рабочего года, который, надеюсь, вам поможет �� Вдруг что — не стесняйтесь задавать вопросы на почту или в Telegram.

Специально для вас — видео с более наглядной инструкцией:

Как видите — все очень и очень просто ��
Спасибо за внимание!

P.S. На моем канале Youtube один из подписчиков задал интересный вопрос: как скрыть клавиатуру после того, как телефонный номер был отправлен? Ответа на вопрос я не знал �� Впрочем, спустя день подписчик подсказал решение, которым я и делюсь:

P.P.S. не так давно возник вопрос — а как полученный от пользователя номер телефона отправить, например, в удобоваримом виде куда-то в группу? Все просто:
1. Добавляете бота, который должен отправить полученную информацию в нужную группу с правами администратора
2. В коде бота вносите следующие изменения в функцию def contact(message):

Собственно, вы можете выводить все, что угодно — для этого просто используем название нужного поля по схеме:

где звездочками скрыты получаемые в полном виде контактные данные пользователя.

Библиотека python-telegram-bot в Python.

Пакет python-telegram-bot предоставляет чистый интерфейс Python для Telegram Bot API. Он совместим с версиями Python 3.6+. Пакет python-telegram-bot также может работать с PyPy3 (официально не поддерживается), хотя раньше было много проблем.

В дополнение к чистой реализации API эта библиотека содержит ряд высокоуровневых классов, которые делают разработку ботов простой и понятной. Эти классы содержатся в модуле telegram.ext .

Реализация чистого API без расширений telegram.ext доступна как отдельный пакет python-telegram-bot-raw .

Установка пакета python-telegram-bot в виртуальное окружение:

Пакет python-telegram-bot в основном будет разбираться на примерах. Содержание, обзорного/вводного материала по библиотеке ниже. Меню с материалами по всему разделу — справа. Поехали.

Содержание:

Чистая реализация официального Telegram Bot API.

API бота предоставляется через класс telegram.Bot . Методы, определенные в telegram.Bot являются эквивалентами в виде методов snake_case , описанных в официальной документации Telegram Bot API. Для удобства, также доступны точные названия методов в виде camelCase , указанные в документации Telegram. Так, например, вызов telegram.Bot.send_message совпадает с вызовом метода telegram.Bot.sendMessage .

Все классы объектов Telegram Bot API расположены в основном модуле пакета telegram , например, класс объекта Message доступен как telegram.Message .

Чтобы сгенерировать токен доступа, необходимо пообщаться с @BotFather и выполнить несколько простых шагов, описанных в разделе Команды и оповещения @BotFather в Telegram.

Чтобы получить представление об API и о том, как его использовать с пакетом python-telegram-bot , запустите интерпретатор Python и выполните следующие несколько шагов.

Сначала создаем экземпляр telegram.Bot . Константу TOKEN следует заменить токеном API, который был получен от @BotFather :

Примечание: боты не могут инициировать чаты с пользователями. Пользователь должен либо добавить их в группу, либо сначала отправить им сообщение. Для подключения к создаваемому боту или каналу в основном используются ссылки, такие как https://telegram.me/bot_username или можно попробовать найти бота по имени в своем десктопном или мобильном приложении.

Как отвечать/получать сообщения на чистом API?

Для получения сообщений, отправленных боту, можно использовать метод API .getUpdates .

Примечание: не нужно использовать .get_updates , если пишете своего бота с модулем расширения telegram.ext , поскольку telegram.ext.Updater получает все обновления/сообщения в автоматическом режиме.

На чистом API это выглядит следующим образом:

Получение изображения, отправленного боту:

Для отправки сообщения всегда нужен будет chat_id :

Примечание. Метод .send_message , как и любой из методов send_* класса Bot возвращает экземпляр класса Message , поэтому его можно использовать в коде позже.

Ответ на конкретное сообщение, полученное в обновлении:

Примечание. Существуют эквиваленты этого метода для ответа с фотографиями, аудио и т. д., а так же аналогичные эквиваленты встречаются по всей библиотеке python-telegram-bot .

Пример бота для ответа на сообщения на чистой реализации API Telegram.

Простой бот для ответа на сообщения Telegram. Пример построен на чистом API Telegram, который реализует пакет python-telegram-bot .

Модуль расширения telegram.ext .

Модуль расширений telegram.ext построен поверх чистой реализации Telegram Bot API. Он предоставляет простой в использовании интерфейс и снимает с программиста некоторую работу.

Он состоит из нескольких классов, но два наиболее важных — это telegram.ext.Updater и telegram.ext.Dispatcher .

Класс Updater постоянно слушает сервер Telegram, получает новые сообщения и передает их классу Dispatcher . Если создать объект Updater , то он автоматически создаст Dispatcher и свяжет их вместе с очередью. Затем в объекте Dispatcher можно зарегистрировать обработчики разных типов, которые будут сортировать полученные объектом Updater сообщения. Поступающие сообщения будут обрабатываться в соответствии с зарегистрированными обработчиками и передавать их в функцию обратного вызова, которую необходимо определить.

Еще нужно знать и понимать, что экземпляр Updater реализует все методы класса telegram.Bot (API Telegram), которые будут связаны с данным Updater . У экземпляра Dispatcher , в свою очередь, есть так называемый контекст context , который, при регистрации любого обработчика сообщений передается в функцию обратного вызова этого обработчика (кстати в нее так же передается updater ). Так вот, у этого контекста то же есть экземпляр класса telegram.Bot , только он связан с конкретным сообщением, которое попало в эту функцию обратного вызова.

Каждый обработчик является экземпляром подкласса класса telegram.ext.Handler . Пакет python-telegram-bot предоставляет классы обработчиков почти на все стандартные случаи, но если нужно что-то конкретное, то можно создать собственный обработчик, наследуясь от класса Handler .

Создание Telegram bot, шаг за шагом.

Во-первых, нужно создать объект Updater . В коде ниже замените константу TOKEN на токен API вашего бота. Для более быстрого доступа к Dispatcher , в который Updater посылает сообщение, можно создать его отдельно:

Примечание. Аргумент use_context=True (по умолчанию False ) — это специальный аргумент, необходимый только для python-telegram-bot меньше 12 версии. Это обеспечивает лучшую обратную совместимость со старыми версиями и дает пользователям время для обновления. Начиная с 13-ой версии, значение аргумента use_context=True используется по умолчанию (указывать не нужно).

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

Примечание. если хотите узнать больше об обработке исключений с python-telegram-bot , прочтите подраздел об "Обработка исключений".

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

Цель состоит в том, чтобы эта функция вызывалась каждый раз, когда бот получает сообщение с серверов Telegram, содержащее команду /start . Для этого можно использовать класс CommandHandler (один из предоставленных подклассов Handler ) и зарегистрировать его в Dispatcher :

И это все, что нужно! Для запуска бота дописываем команду:

Начните чат со своим ботом и введите команду /start — если все пойдет хорошо, он ответит.

Созданный бот может отвечать только на команду /start . Добавим еще один обработчик, который прослушивает обычные сообщения. Для этого используем класс MessageHandler — другой подкласс Handler , для вывода всех текстовых сообщений:

С этого момента создаваемый бот должен обрабатывать все получаемые текстовые сообщения, а так же работать с командой /start , но не будет реагировать на любые другие команды (например, /your_command ) .

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

Примечание. Класс telegram.ext.Filters содержит ряд так называемых фильтров, которые фильтруют входящие сообщения по тексту, изображениям, обновлениям статуса и т. д. Любое сообщение, которое возвращает True хотя бы для одного из фильтров, переданных в MessageHandler , будет принято. Если необходимо, то можно написать свои собственные фильтры. Подробнее смотрите раздел "Все о фильтрации сообщений python-telegram-bot в Python".

Добавим боту другую функциональность и реализуем команду /caps , которая будет принимать какой-то текст в качестве аргумента и отвечать на него тем же текстом, только в верхнем регистре. Аргументы команды (например /caps any args ) будут поступать в функцию обратного вызова в виде списка ['any', 'args'] , разделенного по пробелам:

Примечание. Обратите внимание на использование context.args . Объект CallbackContext будет иметь много разных атрибутов в зависимости от того, какой обработчик используется.

Режим встроенных запросов.

Еще одна интересная особенность официального Telegram Bot API — это режим встроенных запросов к ботам. Помимо отправки команд в личных сообщениях или группах, пользователи могут взаимодействовать с ботом с помощью встроенных запросов. Если встроенные запросы включены, то пользователи могут вызвать вашего бота, введя его имя @bot_username и запрос в поле ввода текста в любом чате. Запрос отправляется боту в обновлении. Таким образом, люди могут запрашивать контент у ботов в любом из своих чатов, групп или каналов, вообще не отправляя им никаких отдельных сообщений.

Если необходимо реализовать такую функциональность для своего бота, то сначала необходимо изменить конфигурацию в @BotFather , включив этот режим при помощи команды /setinline . Иногда требуется какое-то время, пока бот не зарегистрируется в качестве встроенного бота на вашем клиенте. Можно ускорить процесс, перезапустив приложение Telegram или иногда просто нужно немного подождать.

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

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