我可以知道telegram bot API中的chat_id是什么吗?文件说:
整数| 邮件收件人的唯一标识符 - User或GroupChat id
我找不到任何描述.如何为用户或组获取它?
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,以及聊天名称和关联消息。
有一个机器人在开始对话时会回显您的聊天ID。
只需搜索@chatid_echo_bot
并点击/start
。它将回显您的聊天ID。
另一个选择是@getidsbot
为您提供更多信息。如果您将消息转发到机器人,该机器人还会提供有关转发的消息的信息(从用户到用户,聊天室ID等)。
使用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)
希望这可以帮助