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

Ame*_*avi 51 telegram-bot

我可以知道telegram bot API中的chat_id是什么吗?文件说:

整数| 邮件收件人的唯一标识符 - User或GroupChat id

我找不到任何描述.如何为用户或组获取它?

fre*_*ian 38

我创建了一个机器人来获取User或GroupChat id,只需发送/my_id到电报机器人@get_id_bot.

它不仅适用于用户聊天ID,也适用于群聊ID.

要获取群组聊天ID,首先您必须将群组添加到群组,然后发送/my_id群组.

是机器人的链接.

  • 您也可以将您的电报联系人分享到@get_id_bot以显示他们的chat_id (5认同)
  • 的确。让我补充一下,您的回答和修复很快就来了。谢谢。 (2认同)

Chr*_*and 32

您通过收到的邮件更新,getUpdates或者您的webhook将包含特定邮件的聊天ID.它将包含在message.chat.id密钥下.

这似乎是您能够检索聊天ID的唯一方法.因此,如果您想要编写机器人启动对话的内容,您可能必须在某种键 - >值存储(如MemCache或Redis)中存储与用户相关的聊天ID.

我相信他们的文档在这里提出了类似的建议,https://core.telegram.org/bots#deep-linking-example.您可以使用深层链接来发起对话,而无需用户先键入消息.


Rob*_*lla 12

首先,在包含您的机器人的聊天中发布消息(频道、提及机器人的群组或一对一聊天)。然后,只需运行:

curl https://api.telegram.org/bot<TOKEN>/getUpdates | jq
Run Code Online (Sandbox Code Playgroud)

| jq如果您没有安装 jq,请随意删除该部分,它仅对漂亮的打印有用。你应该得到这样的东西:

在此处输入图片说明

您可以在返回的 json 对象中看到聊天 ID,以及聊天名称和关联消息。


Ian*_*Ian 8

您可以与机器人共享联系人,通过/ getUpdates,您可以获得"联系"对象


Ram*_*lat 8

有一个机器人在开始对话时会回显您的聊天ID。

只需搜索@chatid_echo_bot并点击/start。它将回显您的聊天ID。

聊天ID机器人屏幕截图

另一个选择是@getidsbot为您提供更多信息。如果您将消息转发到机器人,该机器人还会提供有关转发的消息的信息(从用户到用户,聊天室ID等)。

  • @AxelBeckert,我的错误。我把名字写错了,应该是`@chatid_echo_bot`。刚刚检查过,这是一个机器人并且可以工作。 (2认同)
  • chatid_echo_bot 当我输入 /start 时没有响应,我认为它不再工作了,使用这个,它在我上次检查 @get_id_bot 时工作 (2认同)

Fra*_*sch 6

使用Perl API,您可以通过以下方式获取:首先您从Telegram向bot发送消息,然后发出getUpdates并且聊天ID必须在那里:

#!/usr/bin/perl

use Data::Dumper;
use WWW::Telegram::BotAPI;

my $TOKEN = 'blablabla';
my $api = WWW::Telegram::BotAPI->new (
    token => $TOKEN
) or die "I can't connect";

my $out = $api->api_request ('getUpdates');
warn Dumper($out);
my $chat_id = $out->{result}->[0]->{message}->{chat}->{id};
print "chat_id=$chat_id\n";
Run Code Online (Sandbox Code Playgroud)

id应该在chat_id中,但它可能取决于结果,所以我还添加了整个结果的转储.

您可以从https://github.com/Robertof/perl-www-telegram-botapi安装Perl API .这取决于你的系统,但我安装在我的Linux服务器上轻松运行:

$ sudo cpan WWW::Telegram::BotAPI
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助