如何在PHP中通过手机号码获取telegram上用户的聊天ID?

Dur*_*mar 1 php telegram telegram-bot

我也浏览了很多论坛和 telegram API。但无法得到正确的答案。

这是我的主要问题。我的数据库中有用户列表及其手机号码,我想通过这些用户的电报向他们发送消息。为此我需要他们的聊天 ID。我如何通过他们的手机号码检索该信息?如果我有聊天 ID,我可以使用以下参考向他们发送消息。

Telegram php 示例发送消息

我访问了以下链接,由用户自己手动从 BOT 获取聊天 ID。但我想要脚本自动执行。

如何获取特定用户的Telegram chat_id?

谢谢。

Nas*_*ghi 5

我对 PHP 不熟悉。但有一种方法可以做到这一点:

如您所知,您可以使用其电话号码和名字(不需要是拥有该号码的联系人的真实名字)在电报机器人中发送联系人。

将联系人发送到chatID(无论您选择什么chatID,可以是您自己的个人聊天ID)后,您可以查找其UserID。

现在,如果该人存在于 Telegram 中,您将得到一个代表他/她的 UserID 或 chatID 的长数字,但如果不存在,长数字将为0

在 C# 中,我使用这段代码来查看 telegram 中是否存在电话号码,效果非常好。

string s = "+44....";    //the phone number
var req2 = await bot.MakeRequestAsync(new SendContact(update.Message.Chat.Id, s, "Name"));
if(req2.Contact.UserId == 0)
{
  Console.WriteLine("The contact does not exist in Telegram");
}else
{
  Console.WriteLine("The contact exists in telegram with UserID:{0}",req2.Contact.UserId.ToString());
}
Run Code Online (Sandbox Code Playgroud)

我相信这也可以在 PHP 中完成。

  • 使用此方法可以获得的 user_ids 数量有限制。您一天只能使用“sendContact”20 次。此后,任何对任何 chat_id 使用 sendContact 的尝试都将导致“Error:429 Too Many Requests: retry after XXXX”。但该机器人的所有其他功能均保持不变。这没有很好的记录。 (3认同)