Telegram Bot:在 getUpdates 方法中使用偏移量

Telegram Bot: using offset in getUpdates method

我想为提要订阅建立一个电报机器人,这样订阅者就可以得到网站更新。但我需要用户开始与我的机器人聊天。我将根据此 url 使用深度 linking: https://core.telegram.org/bots#deep-linking (假设有2个用户)

  1. 向用户 #2 显示以下 link https://telegram.me/MyBot?start=$unique_code
  2. 用户 #2 单击 link 并开始与机器人聊天。
  3. 用户 #2 返回我的网站并点击检查按钮。
  4. 站点发出 getUpdates 请求并找到与用户的 unique_code 关联的 chat_id。
  5. 偏移量将增加 1。

现在有问题了。当 offset 增加时,用户 #1 在用户 #2 之前开始与 bot 聊天。 如果 #1 在将偏移量增加 #2 后单击检查按钮,机器人将不会收到 #1 消息。

p.s。我不想使用 ssl 和 webhook

抱歉英语不好。

您的目标几乎是正确的。两件事:

  • 步骤 3 是不必要的。
  • 你应该把这个 $unique_id 存储在某个地方, 连同用户在您网站上的用户名。然后,当这个 人用您的唯一 ID 点击您的 link,您可以 link 用户的 userId 到用户的用户名。

所以步骤变成:

  1. 生成唯一代码(我们称之为 $unique_code)。保存此代码 连同此人的用户名 当前在数据库中登录您的网站(我们称其为 $username)。
  2. 用这个唯一代码 (https://telegram.me/MyBot?start=$unique_code)
  3. 向用户 #2 显示 link
  4. 用户点击 link,之后您的机器人会收到一条包含 $unique_code 的消息('/start $unique_code')。
  5. 机器人将 $unique_code 与 $username 相关联,并将发送消息的用户的 chat_id 存储在数据库中。 (message.chat.id - 见 https://core.telegram.org/bots/api#message)

现在,只要您想向 $username 发送消息,只需在数据库中查找他们的 chat_id 并向该 chatId (https://core.telegram.org/bots/api#sendmessage) 发送消息即可。