【问题标题】:Telegram Bot: using offset in getUpdates methodTelegram Bot:在 getUpdates 方法中使用偏移量
【发布时间】:2015-10-22 19:35:34
【问题描述】:

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

附言我不想使用 ssl 和 webhook

抱歉英语不好。

【问题讨论】:

  • 我认为你应该再次阅读电报 getUpdates api。
  • @hamed 谢谢。看了好几遍还是没看懂。
  • 您不需要向每个用户显示一个唯一的链接,每个用户都有一个唯一的用户 ID,您可以在任何需要的地方使用它
  • 为什么用户应该回到您的网站?什么是检查按钮?
  • 为了向用户发送消息,我需要他们的 chat_id,因为我无法检测到哪个用户正在发送 /start 命令,所以我需要在我的站点中给他们一个 unique_code。然后用户点击链接,当点击 /start 命令时,unique_code 传递给机器人。由于我还没有 webhook,所以用户应该返回我的站点并单击检查按钮以获取更新。

标签: php telegram-bot


【解决方案1】:

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

  • 步骤 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)。

【讨论】:

    猜你喜欢
    • 2017-12-17
    • 2021-11-26
    • 2023-03-28
    • 1970-01-01
    • 2015-12-08
    • 2016-03-09
    • 2021-11-02
    • 1970-01-01
    • 2020-11-09
    相关资源
    最近更新 更多