Telegram bot webhook 只发送命令

问题描述

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

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

#编辑

当前隐私设置

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

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

我创建了一个测试组,添加了机器人以及我在组中输入的任何内容,我都可以在 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,"date": 1,"text": "test"
  }
}
{
  "update_id": 1,"channel_post": {
    "message_id": 67,"text": "/test@TESTss_bot","entities": [
      {
        "offset": 0,"length": 23,"type": "bot_command"
      }
    ]
  }
}

解决方法

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

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

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

,

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

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

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

Docs

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...