web-dev-qa-db-ja.com

特定のユーザーのTelegram chat_idを取得する方法は?

TelegramボットAPIでユーザーchat_idを取得する方法は?ドキュメントには次のように書かれています:

整数|メッセージ受信者の一意の識別子—ユーザーまたはGroupChat ID

48
Ameer Mousavi

getUpdatesを介して受信するメッセージの更新またはwebhookには、特定のメッセージのチャットIDが含まれます。 message.chat.idキーの下に含まれます。

これは、チャットIDを取得できる唯一の方法のようです。そのため、ボットが会話を開始する場所に何かを書きたい場合は、おそらくMemCacheやRedisなどの何らかのキー->値ストアにユーザーに関連するチャットIDを保存する必要があります。

私は彼らのドキュメントがここで似たようなものを示唆していると信じています https://core.telegram.org/bots#deep-linking-exampledeep-linkingを使用して、ユーザーが最初にメッセージを入力しなくても会話を開始できます。

31
Chris Brand

UserまたはGroupChat IDを取得するボットを作成し、/my_idをTelegramボット@get_id_botに送信します。

ユーザーチャットIDだけでなく、グループチャットIDでも機能します。

グループチャットIDを取得するには、まずグループにボットを追加してから、グループに/my_idを送信する必要があります。

Here はボットへのリンクです。

36
fredy kardian

連絡先をボットと共有するだけで、/ getUpdatesを介して「連絡先」オブジェクトを取得できます。

7
Ian

会話を開始するとチャットIDをエコーするボットがあります。

@chat_id_echo_botを検索し、/startをタップします。チャットIDがエコーされます。

Chat id bot screenshot

5
Ramazan Polat

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

お役に立てれば

5
Francesc Guasch