Как получить user_id номера телефона в telegram
Я создаю бота, чтобы отправить сообщение нескольким контактам в Telegram. Пользователь может поделиться контактом с ботом. тогда я использую getUpdates и получаю номер телефона. Для использования метода sendMessage мне нужен chat_id. теперь, как получить chat_id пользователя с его номером телефона? Есть ли способ лучше этого метода?
defectivepixel 17 Янв 2017 в 02:05
3 ответа
Лучший ответ
Чтобы интернет-сервисы оставались в живых, им нужно бороться с любым типом спама. В результате боты Telegram не могут начать отправлять сообщения пользователям, которые еще не начали использовать бот!
Только когда пользователь начинает использовать бота, вы можете видеть его / ее chat_id и отправлять ему сообщения.
При этом, если пользователь (пользователь A) отправляет вам contact сведения о другом пользователе (назовем этого пользователя B), вы можете увидеть user_id пользователя B. Однако вы все еще можете не отправлять никаких сообщений напрямую, если только он не начал использовать бота раньше.
Такое поведение позволяет нам обойти и запросить пользователей по номеру телефона или, по крайней мере, подтвердить номер телефона пользователя, если это необходимо.
Для этого сначала нужно создать сообщение contact . Неважно, кто отправил сообщение, даже бот может отправить сообщение. Идея состоит в том, чтобы Telegram заполнил user_id нового contact сообщения. Вы можете прочитать об этом объекте здесь: Контактный объект
Нам нужно использовать метод sendContact, и для него требуется цель chat_id , first_name и phone_number . Теперь first_name может быть любой строкой, и ее значение не имеет отношения к процессу. Кроме того, chat_id может быть идентификатором чата любого пользователя с ботом, даже вашего. Это также может быть имя группы или канала, в котором бот является администратором с правами записи, например, @my_private_bot_channel . Короче говоря, везде, где этот бот может публиковать сообщения. Так что вам нужно только предоставить phone_number .
После отправки сообщения вы получите ответ от сервера вместе с сообщением, что ваш бот только что отправил. Поле contact этого вновь созданного сообщения содержит информацию о пользователе, с которым вы только что поделились его контактом, возможно, вместе с его / ее телеграммой user_id , которая совпадает с идентификатором чата пользователя.
Сразу после этого вы можете удалить свое сообщение с помощью метода deleteMessage.
Ниже приведен пример этого в простом формате запроса / ответа, но вам, вероятно, следует использовать для этого структуру:
https://api.telegram.org//sendContact?chat_id=123456789&phone_number=+989123456789&first_name=Some+Random+String
Ответ на этот запрос следующий:
< "ok": true, "result": < "message_id": 12345678987654321, "from": < "id": 987654321, "first_name": "The Bot Name", "username": "mybot_bot" >, "chat": < "id": 123456789, "first_name": "Your Chat Party", "last_name": "Your Chat Party", "type": "private" >, "date": 1484612850, "contact": < "phone_number": "989123456789", "first_name": "Some Random String", "user_id": 654789321 >> >
«user_id»: 654789321 это та часть, которая нас интересует. Теперь вы можете удалить свое сообщение.
Soroush Falahati 25 Ноя 2017 в 17:17
Знание идентификатора пользователя может быть полезно для бана и отмены. Вот как я это делаю на своем веб-сайте:
1) создайте небольшой случайный код и покажите его пользователю, сказав ему отправить его вашему боту.
2) прочитайте сообщение, используя getUpdate. Итак, в PHP:
$url = "https://api.telegram.org/bot"._TELEGRAM_BOT_TOKEN."/getUpdates?offset=-1"; $response = file_get_contents($url, false, NULL); $jsondata = json_decode($response,true); echo ""; print_r($jsondata); echo "";
Вы получите 3 информации:
$chat_id = $jsondata['result'][0]['message']['chat']['id']; $first_name = $jsondata['result'][0]['message']['chat']['first_name']; $text = $jsondata['result'][0]['message']['text'];Вам просто нужно сравнить прочитанный вами текст с кодом, который вы просите пользователя отправить. Если это то же самое, вы можете прочитать chat_id и first_name.
На данный момент, у вас есть chat_id, которого достаточно, чтобы написать пользователю в «приват». Для этого не нужно знать user_id.
Если вам нужен идентификатор пользователя, вы должны отправить еще одно сообщение. Как этот:
$num = "+55888888888888"; $url = "https://api.telegram.org/bot"._TELEGRAM_BOT_TOKEN."/sendContact?chat_id=".$chat_id."&phone_number=".$num."&first_name=".$first_name; $response = file_get_contents($url, false, NULL); $jsondata = json_decode($response,true); echo ""; print_r($jsondata); echo "";
Как видите, чтобы отправить это второе сообщение, вам нужно 3 информации:
1) номер телефона пользователя. Вы не можете получить это от Telegram. Это означает, что вы должны спросить об этом у пользователя.
2) chat_id. Вы получаете это от предыдущего звонка
3) first_name вы также получаете от предыдущего вызова
User_id находится по адресу:
$jsondata['result']['contact']['user_id']1) Кажется, Telegram не проверяет first_name. Поэтому, если вы отправляете для второго звонка другое имя, отличное от того, которое вы получили от первого звонка, это не имеет значения (но, возможно, более безопасно отправлять то же самое. Во всех случаях вы получаете его от первого звонка!)
2) если вы сделаете второй звонок с неправильным номером телефона, вы получите результат без ввода идентификатора пользователя.
Итак, вы должны сделать:
$a = isset( $jsondata['result']['contact']['user_id']); if ($a == false) < $user_id = 0; // No user_id >else3) Номер телефона должен иметь код страны. +5599888887777 в порядке, но 99888887777 нет и даст вам ответ без записи user_id.
Теперь вы можете общаться с пользователем, используя chat_id, а также забанить его из группы или канала, используя его user_id.
Peter 5 Дек 2018 в 12:19
Существует проблема: вы не можете отправить сообщение от бота пользователю как инициатору разговора, даже если у вас есть user_id.
Telegram user ID — что это и как его узнать
Telegram user ID — это специальный цифровой код, который присваивается каждому при регистрации. Такой идентификатор нужен системе для того, чтобы корректно сохранять данные и связывать их с конкретным пользователем. Иногда возникает острая необходимость узнать свой Telegram user ID или цифровой код канала. В меню мессенджера вы этого не найдете, такая возможность не предусмотрена разработчиками.
Но выяснить это вполне реально с помощью других источников.
Рекомендуем наш Каталог — Телеграм каналы по категориям и странам!
Содержание:
- Для чего нужен Telegram user ID
- Свой Telegram user ID: как узнать
- Как узнать чей-то Telegram user ID
Для чего нужен Telegram user ID
Этот идентификатор может пригодиться в разных ситуациях. Без него просто не обойтись, если вы, например, решили создать группу в Телеграм.
Как только вы это сделаете, сообществу будет присвоен идентификатор. В дальнейшем он понадобится для настройки и нормальной работы чата.
Код Telegram user ID уникален. Для каждого сообщества, которое вы создаете, он свой.
Отсюда следует его основное свойство — идентификация, поскольку двух групп с одним и тем же Telegram ID не может быть.
По этому единственному на всю систему показателю определяют конкретного пользователя, бота, чат или канал. Это удобнее и точнее, нежели определение по юзернейму.
Кстати, если желаемый вами @username занят, а аккаунт, которому он принадлежит на данный момент занят, вы можете связаться с технической поддержкой Telegram на предмет передачи этого юзернейма вам.
Важно учитывать, что пользователи могут менять свой юзернейм в любое время. Нет никакой гарантии, что тот @username, которым вы пользуетесь сейчас, не использовал никто другой до вас.
Все это обосновывает использование системы Telegram User ID. Этот идентификатор не меняется никогда, даже если вы смените имя или, к примеру, описание чата/бота/канала.
Если вы хотите узнать подробнее о том, как создать свой канал и сделать его успешным, читайте наш подробный материал.
Свой Telegram user ID: как узнать
В Телеграм для этой задачи существует как минимум 2 полезных бота: «Get Your Telegram User ID» и «What’s my Telegram ID?».

Они очень простые и созданы лишь для одной задачи: отсылать вам ваш ID. Чтобы воспользоваться их помощью, делаем так:
- Копируем название бота и вставляем в строку поиска мессенджера или переходим по прямым ссылкам: @MyTelegramID_bot или @my_id_bot ;
Если у вас возникают трудности с переходом по прямым ссылкам в Телеграм, воспользуйтесь средствами обхода блокировки.
- Начинаем диалог с ним (нажимаем кнопку start).
- Бот вышлет Telegram user ID — сочетание цифр и букв.
Как узнать чей-то Telegram user ID
Кажется, с тем, как определить свой идентификатор, мы разобрались. Но это еще не все.
В Телеграм можно найти информацию о user ID вообще любого пользователя.
Расскажем, как это делается. Информацию об Telegram user ID «сливает» бот под названием @userinfobot. Чтобы узнать чей-то идентификатор, выполните следующие действия:
- Перейдите по прямой ссылке или найдите бота через поисковую строку в Телеграм, после чего начните диалог с ним с помощью кнопки старт;
- Перешлите ему любое сообщение от человека, Telegram user ID которого вам нужен.
Для этого кликните по сообщению правой кнопкой мыши (если Телеграм установлен на компьютере) и выберите вариант «переслать». Затем укажите, кому (в нашем случае боту).
Если программа запущена на мобильном устройстве, вызовите меню долгим тапом по сообщению и проделайте все то же самое.
- В ответ бот отправит информацию о пользователе: имя (то, что указано в полях First и Last name), Telegram user ID и язык.
Бот пришлет интересующую вас информацию, и на данный момент это самый быстрый способ узнать user ID в мессенджере.
Приятного использования Телеграм!
Как получить user_id в Телеграм боте?
Есть тг бот с базой данных sqlite3
Как получить user_id и создать запись с этим user_id в бд ?
Например можно ли без регистрации пользователя получить user_id если пользователь отправил команду /start боту ?
При этом создать запись в таблице БД с его user_id ?
- Вопрос задан более трёх лет назад
- 587 просмотров
4 комментария
Простой 4 комментария
у каждого пользователя телеграмма есть уникальный идентификатор — telegram id — tid
в уведомлениях есть поле отправитель и получатель — chat_id
chat_id — положительное значение — это тид пользователя, отрицательные — ид бесед
Из вашего вопроса не совсем понятно что вы называете user_id
Если это ид пользователя в вашей учетной системе, то нужно реализовать какой-то
из вариантов установления соответствия
Например в ЛК ссылка на начало беседы с ботом с полезной нагрузкой в виде тукена
или если регистрация через смс то получение в ответ на запрос от бота визитки с номером телефона
Maxim @wkes Автор вопроса
Олег, под user_id я подразумеваю как уникальный идентификатор пользователя телеграм, то есть id аккаунта.
Как то же бот определяет пользователя который посылает ему команды?
именно это id мне нужно получить
И это вроде возможно после того как юзер запустил бота командой /start
я же писал, что чат ид = тиду для положительных значений.
возможно в питоне отличается от пхп типом и признак будет немного другим
Maxim @wkes Автор вопроса
Олег, спасибо, буду разбираться
Решения вопроса 1
Александр @shabelski89
Пользоваться поиском вот тут
Ответ написан более трёх лет назад
Нравится 1 4 комментария
Maxim @wkes Автор вопроса
Там нет того что я ищу
«Например можно ли без регистрации пользователя получить user_id если пользователь отправил команду /start боту ?»
Уже читал ваш ответ, но вопрос в другом
Maxim @wkes Автор вопроса
Я хочу реализовать команду «избранное» в тг боте, так как людей пользуется много, и команд вызываемых очень много, хочу что бы к каждому user_id привязывалась команда которую он нажал и добавил в «избранное» что бы при переходе в раздел избранное у него был список команд которые он добавил.
Потому и хочется узнать как без регистрации получить user_id и создать запись в таблице.
с бд работаю впервые
Александр @shabelski89
Maxim, в каком другом?
Вы крайне не внимательно читаете, регистрации для пользователя не видна, его данные просто заносятся в таблицу USERS чтобы потом его найти. ЕЩЁ раз, пользователь не проходит процедуру регистрации как на форумах и прочее, в моем примере, как только пользователь написал /start его данные автоматически заносятся в таблицу. Надеюсь этот момент понятен, попробуйте и увидите о чем речь.
По поводу «много людей, много команд», для этого Вам нужно спроектировать минимальную БД с таблицами и связями. Например выше уже есть таблица USERS, в которой id, username и прочее. Создаете таблицу ACTIONS — перечень всех возможных команд бота (id, act_name) (1, start) . Создаете таблицу FAVORITES, которую связываете с таблице USERS и ACTION, в ней для каждого пользователя заносится его команды.
Если так не понятно, то ещё рано писать ботов, вернитесь к курсам SQL и Python.
Как в Телеграме можно узнать свой и не только ID, способы получения адреса

Каждому пользователю Телеграма программа присваивает уникальный личный цифровой код, который называется Telegram user ID. Для рядового человека этот код практически никакой ценности не представляет, а вот интерфейс самого мессенджера хранит под этим номером личные данные своих юзеров. Но порой его все же нужно выяснить. И тут пользователи сталкиваются с трудностью — как за короткое время узнать свой ID в Телеграме.
Для чего нужен Telegram user ID

В программе есть ник, который можно установить самостоятельно. Он помогает искать друг друга на просторах сети и контактировать без обмена телефонными номерами. User ID Telegram – это тот же самый идентификатор, но уже для самой системы. Он автоматически генерируется внутри Телеграма и прикрепляется к странице юзера (группе, чату, каналу) в момент регистрации. User ID позволяет связываться пользователям между собой, вступать в группы, пользоваться ботами и читать каналы. Помимо этого, у ID есть и другие функции:
- Бесперебойное взаимодействие профилей внутри мессенджера: обмен сообщениями, возможность прикрепить и отправить файл, добавить в чат или группу нового участника.
- Идентификация конкретного пользователя. Можно изменить фотографию, содержание страницы и канала, но ID нельзя, даже если он не нравится.
В отличие от имени пользователя, которое можно написать и буквами, и числовыми знаками, user ID состоит только из цифр и статичен. Кроме того, его нельзя посмотреть просто в настройках и вообще найти где-то на своей странице. Но как же тогда быть? Ведь ID нужен для создания группы в Телеграме, например. Или для настройки и нормальной работы группового чата. Придется прибегать к дополнительным инструментам, чтобы его найти.
Как его узнать
Выяснить ID проще всего через специальных ботов, коих было придумано больше двух десятков. Однако многие уже не функционируют или выдают ошибочные данные. Актуальные боты работают, по сути, одинаково.

Достаточно направить им запрос от своего имени. Сейчас можно пользоваться @my_id_bot, @getmyid_bot, @MyTelegramID_bot.
Как узнать свой user ID
В старой версии Телеграма была функция просмотра собственного системного идентификатора, позже ее убрали в целях безопасности. И почти сразу же появились роботы, ведь потребность в этой информации осталась. Ботам неважно, зачем человеку знать личный ID. Они просто среагируют на ряд команд и выдадут необходимую информацию.
- В строке поиска нужно найти необходимого chat-бота. Можно использовать тех, которые даны выше.

- Открыть диалоговое окно с ним и нажать внизу кнопку «Запустить».

- Следующим же сообщением бот вышлет ID идентификатор.

Ботом можно пользоваться бесконечное количество раз, если диалог потерялся или слетел.
Адрес другого человека
Если требуется получить идентификатор постороннего пользователя в Телеграме, это так же легко. Поможет в этом бот @getmyid_bot. Он позволяет проверить как свои данные, так и чужие.
- Отыскать бота по никнейму и открыть с ним чат.

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

- В ответ бот вышлет сообщение с тремя строчками «Your user», «Current chat» и «Forwarded from». Где первая – собственный айди пользователя, вторая – идентификатор робота, а третья – как раз то, что нужно было изначально, – ID другого юзера.
Ответ поступает обычно в течение секунды, но при плохом соединении придется подождать до минуты.
Стоит заметить, что если аккаунт пользователя скрыт, то любые боты бессильны. Они просто не пробьются через блокировку программы. Исключение — если сам контакт есть в телефонной книге смартфона.
Чата
Выяснить ID пользователя — дело нехитрое. Другой вопрос — как рассекретить айди чата. А вот в этой ситуации уже стоит прибегнуть к услугам другого виртуального помощника: @username_to_id_bot. Дальнейшие действия будут такими:
- Найти робота через строку поиска и запустить с ним чат.

- Далее следует зайти в чат, информацию о котором нужно выяснить.
- В названии чата жмем «Дополнительно», а дальше – «Информация о группе».

- В открывшемся окне есть ссылка. Это «адрес» чата. Копируем ее.

- Отправить скопированную ссылку боту.
- Он считывает ее и высылает искомую информацию.

Канала
Выяснить ID канала или группы можно несколькими способами:
- Изменить статус на «общедоступный». Для этого придется написать соответствующий запрос боту @channelName. Но есть один нюанс — сделать это может только владелец не менее 5 ресурсов.
- Использовать ботов, как во всех предыдущих случаях.
- Найти канал в общей базе Телеграма и обратить внимание на первые цифры url. Это и есть
Несмотря на простую и легкую, казалось бы, схему просмотра любого ID в Телеграме, еще не было ни одного случая утечки информации. Все же этот мессенджер по праву считается самым надежным в плане защиты данных.
