【问题标题】:Get username and first name via Telegram Bot API with available matching phone number通过 Telegram Bot API 获取用户名和名字以及可用的匹配电话号码
【发布时间】:2016-07-29 22:13:28
【问题描述】:

我有一个电话号码列表。

我需要他们在 Telegram 中匹配的 usernamefirst_name(如果他们订阅了 Telegram)。

我想通过 Telegram BOT API 获取这些信息(用户名和名字)。

有可能吗?我怎样才能做到这一点? (使用 PHP)

这是我的示例代码:

<?php

//telegram sdk and configuration
$client = new Zelenin\Telegram\Bot\Api('someRandomToken');

$update = json_decode(file_get_contents('php://input'));

//your app
try {

    if($update->message->text != '/next_event_datetime')
        exit;

    $dom = Sunra\PhpSimple\HtmlDomParser::file_get_html('http://laratalks.com/');
    $element = $dom->find('#location header.section-header h3', 0);
    $dateTime = $element->plaintext;

    $response = $client->sendMessage([
        'chat_id' => $update->message->chat->id,
        'text' => $dateTime
    ]);

} catch (\Zelenin\Telegram\Bot\NotOkException $e) {

    //echo error message ot log it
    //echo $e->getMessage();

}

【问题讨论】:

  • 最好不要提及您的示例代码,因为它与您的问题部分无关
  • 想一想...您是否希望只有您的电话号码的人能够获得您的姓名和用户名?这将是对隐私的侵犯,并且对于想要对您进行网络钓鱼攻击的人来说是一个严重的潜在开始。

标签: php api telegram telegram-bot


【解决方案1】:

好吧,当您有电话号码时,您可以从用户那里获取用户名和user_id。我不知道有什么方法可以得到名字。

只需发送包含任何名字和电话号码的联系人 (sendContact)。 Telegram 回复发送的联系人,其中包括user_id(如果用户有 Telegram)和username(如果用户设置了一个)。

一步一步:

  1. 将带有号码和任何名字的联系人发送到任何聊天室(您自己,群组,无所谓...)
  2. Telegram API 将响应发送消息或一些错误代码。如果消息发送成功,响应中的联系人可能有更多详细信息(用户名和用户 ID)。

【讨论】:

  • 由于Telegram Bot Doc 方法(sendContact)用于将现有联系人(例如人 A 的联系电话)发送给人 B。与此问题完全不同
  • 自己试试吧。让机器人发送联系人并查看生成的消息。
  • 我做了一个测试机器人来测试一些apihere。向它发送一条类似/raw sendContact phone_number 424314159 first_name bot_support 的消息,它会以(略微解析的)JSON 结果进行回复。请注意,有一个 user_id 字段。
  • 你的机器人是这样的:你发送一个phone_number和任意user_id。然后,如果该电话号码订阅了电报,您的机器人会显示一条 add contact 消息,其中包含任意 user_name。这就像用我的名字而不是用户真实的用户名向我的手机电话簿添加一个电话号码。自行检查。这些也是为客户而不是机器人提供的(添加联系人)
  • 当我在 android 应用程序中添加带有电话号码的联系人时。电报显示联系人的用户名。是否可以在 api 中使用?
【解决方案2】:

简而言之,它是不可能。但是请阅读整篇文章,它可能对您有用。

从 Telegram 和通过 Telegram Bot API 获取电话号码是一种方式, 这意味着您不能发送电话号码并从电报中获取用户数据。(注意:我们假设您之前没有通过电话号码添加用户)

在电报中获取用户电话号码只有两种方式:

1- 使用特定的KeyboardButton 按钮获取它。通过这种方式,Telegram 在用户接受后发送用户电话号码。(注意:用户之前必须是您的 Bot 订阅者)

2-询问用户他/她的电话号码,但不可靠,您应该通过其他方式(如短信批准等)检查它

毕竟,虽然这两种方法都可以用来抓取用户的电话号码,但是当你抓取电话号码时,你有,所以你的列表没有用。

但是你想用可用的电话号码获取username,由于 Telegram Bot API 基础设施,这是不可能的。

【讨论】:

    猜你喜欢
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2016-10-05
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 2017-02-24
    相关资源
    最近更新 更多