Ответ 1
Чтобы интернет-услуги оставались в живых, им нужно бороться с любым типом спама. В результате боты Telegram не могут отправлять сообщения пользователям, которые еще не начали использовать бота!
Только когда пользователь начинает использовать бота, вы можете видеть его/ее chat_id
и отправлять ему сообщения.
Если пользователь (Пользователь А) отправляет вам contact
информацию о другом пользователе (позвольте этому пользователю, пользователю B), вы можете видеть user_id
пользователя B. Однако вы все еще можете ' t отправлять любые сообщения напрямую, если только он не начал использовать бот раньше.
Это позволяет нам сделать обходной путь и запросить пользователей по номеру телефона или хотя бы подтвердить номер телефона пользователя, если это необходимо.
Для этого сначала необходимо создать сообщение contact
. Неважно, кто передает сообщение, даже бот может отправить сообщение. Идея состоит в том, чтобы Telegram заполнил user_id
нового сообщения contact
. Вы можете прочитать об этом объекте здесь: Контактный объект
Метод, который нам нужно использовать, - sendContact, и ему нужны целевые chat_id
, first_name
и phone_number
, Теперь first_name
может быть любой строкой, и ее значение не имеет отношения к процессу. Кроме того, chat_id
может быть идентификацией любого пользовательского чата с ботом, даже вашим. Это также может быть имя группы или канала, в котором бот является администратором с доступом для записи, например, @my_private_bot_channel
. Короче говоря, где-нибудь, что бот может опубликовать сообщение. Поэтому вам нужно предоставить phone_number
.
После отправки сообщения вы получите ответ сервера, а также Message, который только что опубликовал ваш бот. Поле contact
этого вновь созданного сообщения содержит информацию о пользователе, с которым вы просто делились своим контактом, возможно, вместе с его телеграммой user_id
, которая является тем же самым, что и идентификатор пользователя.
Сразу после этого вы можете удалить свое сообщение с помощью метода deleteMessage.
Ниже приведен пример этого в простом формате запроса/ответа, но вы, вероятно, должны использовать для этого фреймворк:
https://api.telegram.org/{BOT_TOKEN}/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
- это та часть, которая нас интересует. Теперь вы можете удалить свое сообщение.