TelegramボットAPIでユーザーchat_id
を取得する方法は?ドキュメントには次のように書かれています:
整数|メッセージ受信者の一意の識別子—ユーザーまたはGroupChat ID
getUpdates
を介して受信するメッセージの更新またはwebhookには、特定のメッセージのチャットIDが含まれます。 message.chat.id
キーの下に含まれます。
これは、チャットIDを取得できる唯一の方法のようです。そのため、ボットが会話を開始する場所に何かを書きたい場合は、おそらくMemCacheやRedisなどの何らかのキー->値ストアにユーザーに関連するチャットIDを保存する必要があります。
私は彼らのドキュメントがここで似たようなものを示唆していると信じています https://core.telegram.org/bots#deep-linking-example 。 deep-linkingを使用して、ユーザーが最初にメッセージを入力しなくても会話を開始できます。
UserまたはGroupChat IDを取得するボットを作成し、/my_id
をTelegramボット@get_id_bot
に送信します。
ユーザーチャットIDだけでなく、グループチャットIDでも機能します。
グループチャットIDを取得するには、まずグループにボットを追加してから、グループに/my_id
を送信する必要があります。
Here はボットへのリンクです。
連絡先をボットと共有するだけで、/ getUpdatesを介して「連絡先」オブジェクトを取得できます。
Perl APIを使用すると、次の方法で取得できます。まず、Telegramからボットにメッセージを送信し、次に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";
Idはchat_idにあるはずですが、結果に依存する可能性があるため、結果全体のダンプも追加しました。
Perl APIは https://github.com/Robertof/Perl-www-telegram-botapi からインストールできます。それはシステムに依存しますが、これをLinuxサーバーに簡単にインストールしました:
$ Sudo cpan WWW::Telegram::BotAPI
お役に立てれば