使用Telegram bot检索所有聊天ID

Cri*_*n T 8 telegram-bot

主要问题是我如何获得与机器人进行的所有对话的聊天ID?

想象一下,在机器人执行期间,与用户A进行了对话.

现在我停止机器人进程并再次启动它.

如何获取与用户A过去聊天的聊天ID?

我知道当用户向您发送消息时您会收到聊天ID,并且您使用该ID进行回复,但是如果用户A在当前执行期间不再向僵尸程序发送消息,该怎么办?如何获得过去的会话ID?

是唯一一个存储id并在第二次执行开始时检索它们的选项吗?

更新:

看起来当前的解决方案是将聊天ID存储在安全的地方,正如@Tick Tock所回答的那样.

Sey*_*yfi 6

你的问题我不清楚,但正如我从你的问题中所理解的那样,我写了一些东西给你,希望对你有帮助.您可以检索chat_id并使用它来发送内容chat.我会给出一个示例代码,但在让我解释之前.

在Telegram Bot API中有两个定义:chat_idfrom_id.

1 - 当我们private与某人聊天chat_id并且from_id是平等的时候.

2 - 当我们的机器人是一个group成员时,那么chat_id该组的id是不同于那个人id(from_id)可能会发送一些东西到组(也许我们的机器人也会收到它 - 当privacy_mode关闭时)

我假设您的机器人在私人聊天中:当用户向您的机器人发送任何内容时,Telegram会将该消息发送给您的BOT(调用您的脚本),此示例代码将"Hello 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)
Run Code Online (Sandbox Code Playgroud)

更新:(由于有问题的版本)

首先,chat_id即使您的机器人的用户离开您的机器人并再次重新加入,该用户(在私人聊天中)也是唯一且永久永久的.到目前为止,我还没有听到或读过任何信息,因为Telegram已经提供了一种方法来告诉您bot的用户chat_id,因此了解用户的最佳方式是保存他们chat_id和其他信息(您从用户那里收集的信息)来自数据库中的消息reciceve).

如果您至少将它们保存chat_id在一个简单的数据库中,那么您将拥有机器人订阅用户的列表.由于chat_id是永久性的,您可以向用户发送任何您想要的内容.

而且,我从你的问题理解,如果你没有一个数据库,但是用户A是你的机器人的订阅用户,因为我知道,你应该等到他/她发送一条消息给你,然后你抓住她/他chat_id和将其添加到您的数据库.现在你可以每次发送给她/他.

  • 在您的回答中,您正在回复刚刚收到的消息,我想向旧对话发送消息。我希望在 API 中调用 GetAllChats 或类似的东西...... (3认同)