Telegram Bot:在getUpdates方法

时间:2015-07-31 07:46:41

标签: php telegram-bot

我想为订阅源构建一个电报机器人,因此订阅者可以获得站点更新。但我需要用户开始与我的机器人聊天。我根据这个网址使用深层链接: https://core.telegram.org/bots#deep-linking (假设有2个用户)

  1. 显示以下指向用户#2的链接 https://telegram.me/MyBot?start= $ UNIQUE_CODE
  2. 用户#2点击链接并开始与机器人聊天。
  3. 用户#2返回我的网站并点击检查按钮。
  4. 网站发出getUpdates请求,并找到与用户的unique_code相关联的chat_id。
  5. 偏移量将增加1。
  6. 现在有一个问题。当偏移量增加时,用户#1开始与用户#2之前的机器人聊天。 如果#1在将偏移增加#2后单击检查按钮,则机器人将不会收到#1消息。

    P.S。我不想使用ssl和webhook

    抱歉英语不好。

1 个答案:

答案 0 :(得分:2)

你想要实现的目标几乎正确。两件事:

  • 第3步是不必要的。
  • 您应该将此$ unique_id存储在某处, 连同用户在您网站上的用户名。然后,当这个 用户点击您的链接时,您可以链接 用户的userId为用户的用户名。

步骤变为:

  1. 生成唯一代码(让我们称之为$ unique_code)。保存此代码 连同该人的用户名 目前已在您的网站上登录(让我们称之为$ username)。
  2. 向用户#2显示包含此唯一代码(https://telegram.me/MyBot?start= $ unique_code)
  3. 的链接
  4. 用户点击该链接,之后您的机器人会收到包含$ unique_code的消息(' / start $ unique_code')。
  5. 机器人将$ unique_code与$ username关联,并在数据库中存储发送消息的用户的chat_id。 (message.chat.id - 见https://core.telegram.org/bots/api#message
  6. 现在,每当您想要向$ username发送消息时,只需在数据库中查找他们的chat_id并向该chatId发送消息(https://core.telegram.org/bots/api#sendmessage)。