【问题标题】:Telegram bot webhook send only commandsTelegram bot webhook 仅发送命令
【发布时间】:2021-08-22 01:34:47
【问题描述】:

我正在用 nodejs 构建一个可以在 webhook 上运行的电报聊天机器人。目前,机器人在聊天中的每条消息都会点击我的 webhook URL。是否可以只在机器人的命令执行时推送有效载荷?

所以我只想在用户执行 /test 命令时从聊天中获取有效负载,并且聊天中的任何其他消息都不应 git 到我的 URL。

#编辑

当前的隐私设置

“启用” - 您的机器人将仅接收以“/”符号开头或通过用户名提及机器人的消息。 “禁用” - 您的机器人将接收人们发送给群组的所有消息。 当前状态为:已启用

我想在群组中使用 bot 并与 bot - 我直接聊天,这样我就可以进行测试了。

我创建了一个测试组,添加了机器人,我在组中输入的任何内容都可以在 Webhook URL 的日志中看到。所以无论是它的 /test 还是一些文本,它都被推送了

#编辑 2

这就是我在 webhook URL 中收到的内容(普通聊天文本和机器人命令)

{
  "update_id": 1,
  "channel_post": {
    "message_id": 65,
    "sender_chat": {
      "id": -1,
      "title": "Tssos",
      "type": "channel"
    },
    "chat": {
      "id": -1,
      "title": "Tssos",
      "type": "channel"
    },
    "date": 1,
    "text": "test"
  }
}
{
  "update_id": 1,
  "channel_post": {
    "message_id": 67,
    "sender_chat": {
      "id": -1,
      "title": "Tssos",
      "type": "channel"
    },
    "chat": {
      "id": -1,
      "title": "Tssos",
      "type": "channel"
    },
    "date": 1,
    "text": "/test@TESTss_bot",
    "entities": [
      {
        "offset": 0,
        "length": 23,
        "type": "bot_command"
      }
    ]
  }
}

【问题讨论】:

标签: node.js telegram telegram-bot node-telegram-bot-api


【解决方案1】:

好的,所以我找到了问题的答案。

我将一个机器人作为管理员添加到聊天中,这就是他发送所有消息的原因。管理员机器人将推送所有聊天消息。 像普通用户一样添加机器人解决了这个问题,现在我只收到 /command 更新。

默认情况下,所有机器人都启用隐私模式,除了那些 以管理员身份添加到组中(机器人管理员始终接收所有消息)。 它可以被禁用,以便机器人接收所有消息,如 普通用户(为此需要将机器人重新添加到组中 更改生效)。我们只建议在以下情况下这样做 对你的机器人工作来说是绝对必要的——用户总是可以看到 bot 在组成员列表中的当前隐私设置。多数情况 在这种情况下,应该对机器人的消息使用强制回复选项 绰绰有余。

Docs

【讨论】:

    【解决方案2】:

    您必须使用@BotFather 设置您的机器人隐私:

    1. 向@BotFather 发送/mybots 命令
    2. 通过用户名选择您的机器人
    3. 选择机器人设置
    4. 选择群组隐私
    5. 启用或禁用机器人的隐私

    如果启用隐私模式,您的机器人只会接收以斜线 / 开头的消息

    【讨论】:

    • 我已启用此功能,并且在我的 webhook url 中,我看到了我在聊天中发布的所有消息
    • 这仅适用于群聊。您必须忽略使用 JavaScript (NodeJS) 在私人聊天中手动发送的其他消息,并检查消息文本中是否包含“/”,例如:text.startsWith("/")
    • 那么有没有办法保护我的 URL 免受聊天中的垃圾邮件?假设有 1000 个用户输入,那么所有这些都会被推送到我的 Webhook URL?
    • 电报服务器可能会阻止这种情况。您也可以使用 Nginx 在多个服务器之间进行负载平衡。启用隐私模式与垃圾邮件无关。垃圾邮件发送者可以在开头使用斜杠发送消息文本。更新隐私模式后,尝试从群聊中删除机器人并重新添加。
    • 没有帮助。我在发布正常聊天消息时看到它只包含文本,而当我执行命令时,还有其他属性“实体”,其中包含 bot_command 值。
    猜你喜欢
    • 2018-10-13
    • 2023-03-12
    • 2019-05-21
    • 2017-08-03
    • 2018-03-12
    • 1970-01-01
    • 2016-08-27
    • 2017-01-11
    • 2017-07-22
    相关资源
    最近更新 更多