主要问题是我如何获得与机器人进行的所有对话的聊天ID?
想象一下,在机器人执行期间,与用户A进行了对话.
现在我停止机器人进程并再次启动它.
如何获取与用户A过去聊天的聊天ID?
我知道当用户向您发送消息时您会收到聊天ID,并且您使用该ID进行回复,但是如果用户A在当前执行期间不再向僵尸程序发送消息,该怎么办?如何获得过去的会话ID?
是唯一一个存储id并在第二次执行开始时检索它们的选项吗?
更新:
看起来当前的解决方案是将聊天ID存储在安全的地方,正如@Tick Tock所回答的那样.
你的问题我不清楚,但正如我从你的问题中所理解的那样,我写了一些东西给你,希望对你有帮助.您可以检索chat_id并使用它来发送内容chat.我会给出一个示例代码,但在让我解释之前.
在Telegram Bot API中有两个定义:
chat_id和from_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和将其添加到您的数据库.现在你可以每次发送给她/他.
| 归档时间: |
|
| 查看次数: |
6338 次 |
| 最近记录: |