问题描述
我正在 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 来设置您的机器人隐私:
- 向@BotFather 发送
/mybots
命令 - 通过用户名选择您的机器人
- 选择机器人设置
- 选择群组隐私
- 启用或禁用机器人的隐私
如果启用了隐私模式,您的机器人只会接收以斜杠 /
开头的消息
好的,我找到了问题的答案。
我将一个机器人作为管理员添加到聊天中,这就是他发送所有消息的原因。管理员机器人将推送所有聊天消息。 像普通用户一样添加机器人解决了这个问题,现在我只收到 /command 更新。
默认情况下为所有机器人启用隐私模式,除了 以管理员身份添加到组中(机器人管理员始终接收所有消息)。 可以禁用它,以便机器人接收所有消息,例如 普通用户(需要将机器人重新添加到组中) 更改生效)。我们只建议在以下情况下执行此操作 对你的机器人工作来说是绝对必要的——用户总是可以看到 bot 在群组成员列表中的当前隐私设置。多数情况 在这种情况下,对机器人的消息使用强制回复选项应该是 绰绰有余。