主な質問は、ボットとこれまでに行われたすべての会話のチャットIDを取得するにはどうすればよいですか?
ボットの実行中にユーザーAとの会話があると想像してください。
ここで、ボットプロセスを停止し、再開します。
ユーザーAとの過去のチャットのチャットIDを取得するにはどうすればよいですか?
ユーザーがメッセージを送信したときにチャットIDを取得し、そのIDを使用して返信することを理解しましたが、現在の実行中にユーザーAがボットにメッセージを送信しなくなった場合はどうなりますか?過去の会話IDを取得する方法は?
2番目の実行の開始時にIDを保存して取得する唯一のオプションはありますか?
更新:
@Tick Tockが回答したように、現在の解決策はチャットIDを安全な場所に保存することのようです。
あなたの質問は私にはわかりませんが、あなたの質問から理解できるように、私はあなたに何かを書きました。 chat_id
sを取得し、それを使用してそのchat
に何かを送信できます。サンプルコードを提供しますが、その前に何かを説明します。
Telegram Bot APIには、
chat_id
とfrom_id
の2つの定義があります。1-私たちが
private
チャットをしているとき、chat_id
とfrom_id
は同じです。2-ボットが
group
メンバーである場合、chat_id
はそのグループのIDであり、その人とは異なりますid(from_id
)はグループに何かを送信する可能性があります(ボットもそれを受信する可能性があります-privacy_mode
がオフの場合)
ボットがプライベートチャットにあると仮定します。ユーザーがボットに何かを送信すると、TelegramがそのメッセージをBOTに送信し(スクリプトを呼び出します)、このサンプルコードは「Hellochat_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
は一意であり、ボットのユーザーがボットを離れて再び参加した場合でも、そのユーザーに対して(プライベートチャットで)常に永続的です。 Telegramがbot
全体にユーザーにchat_id
を伝える方法を提供していることを今まで聞いたり読んだりしていません。したがって、ユーザーについて知る最良の方法は、chat_id
やその他の情報(データベース内の)から受信したメッセージからのユーザーからの時間。
少なくとも彼らのchat_id
を単純なデータベースに保存すると、ボットのサブスクライブされたユーザーのリストが得られます。また、chat_id
は永続的であるため、ユーザーに必要なものを何でも送信できます。
そして、あなたの質問から理解できるように、データベースを持っていないが、ユーザーAがボットのサブスクライブユーザーである場合、私が知っているように、彼女/彼があなたに単一のメッセージを送信するまで待ってから、彼女/彼をつかむ必要がありますchat_id
それをデータベースに追加します。今、あなたはいつでも彼女/彼を送ることができます。