【问题标题】:how to get user_id from phone_number using Telegram Bot API如何使用 Telegram Bot API 从 phone_number 获取 user_id
【发布时间】:2018-12-14 01:31:24
【问题描述】:

我目前正在开发一个 Telegram Bot,一旦你知道电话号码,它就会在 Telegram 中获取用户信息。主要目标是为用户获取存储在 Telegram 中的所有用户信息,只需知道他/她的电话号码。

所以,我尝试使用 Telegram Bot API 中解释的 sendContact 函数,并喜欢这篇文章:How to get user_id of a phone number in telegram

问题是,如果我尝试将自己的号码作为联系人发送到我的 chat_id,我会收到联系人结构,但如果我从机器人向自己发送另一个 phone_number(对应于另一个活动的 Telegram 帐户) ,我在 JSON 文件中没有 user_id。问题是我只能获得一个 user_id,如果我使用 chat_id 帐户的 phone_number,这意味着我无法获得任何使用他的电话号码的人的任何信息。但是我已经看到了很多可能的解决方案,但没有一个对我有用。

任何帮助将不胜感激!

我正在使用: https://api.telegram.org/bot<BOT TOKEN>/sendContact?chat_id=<MY CHAT ID>&phone_number=<PHONE_NUMBER I WANT TO KNOW USER_ID>&first_name=<RANDOM NAME>

如果使用我自己的 chat_id 来接收消息,并且我的 phone_number 可以正常工作,但每当我使用另一个 phone_number 时它就不会。

【问题讨论】:

  • 你的bot不知道你朋友的Chat_ID,因为他们不是你的bot的用户,你应该使用telegram的核心API来查找每个电话号码的chat_id。
  • @tashakori 我明白你的意思,但我一直在寻找解决方案,但仍然找不到。所以你知道有办法只知道phone_number就可以找到用户信息吗?任何额外的帮助将不胜感激。谢谢!

标签: php telegram telegram-bot


【解决方案1】:

Bot API 不能给你 chat_id,你应该使用 Telegram 的 Core_API 来完成任务。 你应该使用类似下面的 sn-p 来获取用户的 chat_id:

contact = InputPhoneContact(client_id = 0, phone = phone, first_name="a", last_name="")
result = client(ImportContactsRequest([contact]))
usersDic = result.__dict__['users']
if(len(usersDic)>0):
    chatID = usersDic[0].__dict__["id"]

请注意,我在上面的代码中使用了 Telethon 库,但它以某种方式演示了如何执行该过程。

【讨论】:

  • 谢谢你!我现在将尝试实现它,我正在用 PHP 编写 Bot,但我想我可以使用 Python 来检索我想要的数据,就像你在上面向我展示的那样。我以前从未编码过,但我想我能,所以谢谢你的回答!
  • 小心点,这是我上面写的python代码。但是您可以使用任何具有良好实现的 Telegram Core_API 库的语言来完成。
猜你喜欢
  • 2016-02-23
  • 2017-11-28
  • 1970-01-01
  • 2019-02-14
  • 2022-07-28
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 2016-04-04
相关资源
最近更新 更多