gpt4 book ai didi

api - 如何在 Telegram 中获取电话号码的user_id

转载 作者:行者123 更新时间:2023-12-03 00:18:38 25 4
gpt4 key购买 nike

我正在创建一个机器人来向 Telegram 中的多个联系人发送消息。用户可以与机器人分享联系方式。然后我使用 getUpdates 并获取电话号码。为了使用 sendMessage 方法,我需要 chat_id。现在如何获取用户的chat_id及其电话号码?有没有比这种方法更好的方法来做到这一点?

最佳答案

为了使互联网服务保持活力,他们需要与任何类型的垃圾邮件作斗争。因此,Telegram 机器人无法开始向尚未开始使用该机器人的用户发送消息!

只有当用户开始使用机器人时,您才能看到他/她的 chat_id 并向他发送消息。

话虽这么说,如果用户(用户 A)向您发送了另一个用户(我们称之为用户 B)的联系详细信息,您可以看到 user_id但是,您仍然无法直接发送任何消息,除非他/她之前也开始使用机器人。

此行为使我们能够采取解决方法并通过电话号码查询用户,或者至少在需要时确认用户的电话号码。

为此,您首先需要创建联系消息。谁发送消息并不重要,即使是机器人也可以发送消息。这个想法是让 Telegram 填充新 contact 消息的 user_id。您可以在这里阅读有关此对象的信息:Contact Object

我们需要使用的方法是sendContact,它需要一个目标chat_id、一个first_name和一个phone_number。现在first_name可以是任何字符串,其值与进程无关。此外,chat_id 可以是任何用户与机器人聊天的标识,甚至是您的。它还可以是机器人是具有写入权限的管理员的群组或 channel 的名称,例如 @my_private_bot_channel。简而言之,机器人可以在任何地方发布消息。因此您只需提供phone_number

发送消息后,您将收到服务器响应以及您的机器人刚刚发布的 Message。此新创建消息的 contact 字段包含您刚刚共享其联系人的用户的信息,可能还包含他/她的 Telegram user_id(与用户的聊天内容相同) 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 是我们感兴趣的部分。现在您可以删除您的消息。

关于api - 如何在 Telegram 中获取电话号码的user_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41686463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com