2016-07-31 32 views
4

主な質問は、ボットと一緒に開催されたすべての会話のチャットIDを取得する方法です。テレグラムのボットを使用してすべてのチャットIDを取得する

は、ボットの実行中にユーザA

との会話は、今私はボットプロセスを停止し、再度起動していることを想像してみてください。

ユーザAと過去のチャットのチャットIDを取得するにはどうすればよいですか?

あなたがメッセージを送信したときにチャットIDを取得し、そのIDを使用して返信することを理解していますが、現在実行中にユーザーAがボットにメッセージを送信しなくなった場合はどうなりますか?過去の会話IDを取得する方法は?

idsを格納して2回目の実行を開始するときにidsを取得する唯一のオプションはありますか?

UPDATE:

@Tickトクによって答えとして、現在のソリューションは、チャットIDはどこか安全な格納することであるように見えます。

答えて

4

あなたの質問は私には不明ですが、あなたの質問から理解しているとおり、私はあなたに何かを書いて助けてくれることを望みます。 chat_idを取得し、それを使用して何かをchatに送信することができます。私はサンプルコードを与えるだろうが、私は何かを説明する前に。

テレグラムのBot APIには、chat_idfrom_idという2つの定義があります。

1-私たちがprivateにいるときには、chat_idfrom_idのどちらかとチャットしています。

2-た場合、当社のボットがgroupメンバーであり、そしてchat_idは、そのグループのIDで、その人のID(from_id)グループに何かを送る(そしておそらく私たちのボットはそれを受け取るかもしれ異なるすぎるときprivacy_modeがオフになっています)

私はあなたのボットは、プライベートチャットであ​​ると仮定します。 ユーザーがボットには何も送信した場合、その後、電報は)あなたのスクリプトを呼び出します(自分のBOTにそのメッセージを与えて、このサンプルコードは、そのユーザーに「こんにちはchat_id」を送信。(PHPで)

define('BOT_TOKEN','12345:abcde');//replace with your bot token 
$command_prefix_url='https://api.telegram.org/bot' . BOT_TOKEN ; 

$update = json_decode(file_get_contents('php://input')); //retrieves data sent by telegram 

$chat_id=$update->message->chat->id; //retrives `chat_id` 

$rep = json_decode(file_get_contents($command_prefix_url . '/SendMessage?chat_id=' . 
    $chat_id . '&text=' . urldecode('Hello '.(string)$chat_id))); //send something to that `chat_id` (sender) 

更新:(起因する問題の版に)

まず、chat_idはユニークで、そのユーザのための常に永続的である(プライベートチャット中) あなたのボットのユーザーがあなたのボットを離れ、再び再参加しても。 これまで電報にはbot全員にchat_idを知らせる方法が提供されていません。そのため、ユーザーについて知る最も良い方法は、chat_idなどの情報を保存することですデータベースからのメッセージrecycleからのユーザーからの時間)。

少なくともchat_idを単純なデータベースに保存すると、ボットの購読しているユーザーの一覧が表示されます。 chat_idは永久保存されているので、あなたが望むものをあなたのユーザーに送信することができます。

あなたの質問から分かるように、データベースを持っていないのにユーザーAがあなたのボットの登録済みユーザーである場合、彼女はあなたにメッセージを1つ送信するまで待つべきです彼女/彼chat_idをデータベースに追加してください。今はいつでも何かを送ることができます。

+0

私は質問を改定しました。私はそれがより明確であることを望みます。 –

+0

受信したメッセージに返信しているので、古い会話にメッセージを送信します。私はGetAllChatsまたはそのようなものへのAPIの呼び出しを期待していた... –

+0

@CristianTありがとう、更新されました! –

関連する問題