5

我想为订阅源构建一个电报机器人,以便订阅者可以获得站点更新。但我需要用户开始与我的机器人聊天。我将根据此 url 使用深度链接: 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。

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

ps 我不想使用 ssl 和 webhook

抱歉英语不好。

4

1 回答 1

4

你想要达到的目标几乎是正确的。两件事情:

  • 步骤 3 是不必要的。
  • 您应该将此 $unique_id 与您网站上的用户名一起存储在某处。然后,当此人使用您的唯一 ID 单击您的链接时,您可以将用户的 userId 链接到用户的用户名。

所以步骤变成了:

  1. 生成一个唯一代码(我们称之为 $unique_code)。将此代码与当前登录您网站的人的用户名(我们称其为 $username)一起保存在数据库中。
  2. 向用户 #2 显示带有此唯一代码的链接(https://telegram.me/MyBot?start= $unique_code)
  3. 用户单击该链接,之后您的机器人会收到一条带有 $unique_code ('/start $unique_code') 的消息。
  4. 机器人将 $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 )。

于 2015-08-02T00:06:31.310 回答