从Telegram Bot API获取回复消息

时间:2017-06-24 23:07:45

标签: telegram telegram-bot

我正在开发一个我希望用户在回复上一条消息时调用的Bot。因此,您将使用bot命令回复消息。

例如
用户1:Hello World
用户2 :(回复Hello World)/命令测试消息

现在我只能抓取命令中直接发送的文本(“测试消息”),而不是第一条消息(“Hello World”)。根据他们的documentation,我应该能够从reply_to_message获得它。但是,我在webhook的日志中看到的就是这个。

event: {
  body: {
    update_id: 5632431,
    message: {
      message_id: 43,
      from: {
        id: < my_user_id > ,
        first_name: 'User 2',
        username: 'user_2_username',
        language_code: 'en'
      },
      chat: {
        id: < chat_id > ,
        title: < chat_name > ,
        type: 'group',
        all_members_are_administrators: true
      },
      date: 1498342725,
      text: '/command test message',
      entities: [{
        type: 'bot_command',
        offset: 0,
        length: 5
      }]
    }
  }
}

我做错了吗?任何人都有获得回复消息的经验? 任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

转到@BotFather,然后关闭privacy mode

/setprivacy - 设置机器人在添加到群组时会收到哪些消息。禁用隐私模式后,机器人将收到所有消息。

设置完毕后,您可能需要将机器人重新添加到组中。

答案 1 :(得分:0)

当漫游器位于privacy mode中时,它将仅接收(从文档复制):

  • 以斜杠“ /”开头的邮件(请参见上面的命令)
  • 回复机器人自己的消息
  • 服务消息(添加或删除群组的人等)
  • 来自其成员渠道的消息

这不包括回复的邮件。

默认情况下,所有机器人均会启用隐私模式,但以管理员身份添加到组中的机器人除外(机器人管理员始终会收到所有消息)。

因此,使邮件得到回复的唯一方法是按照肖恩(Sean)的建议禁用隐私模式。

答案 2 :(得分:0)

最近我正在处理相同的问题,有两件事对我有用:

1-禁用隐私模式,并且 2-使用@botname进行提及(不使用/ botname),这样我就可以获取reply_to_message字段。

答案 3 :(得分:-1)

分享我的代码,试试这个会成功

$ chatID = $ this-&gt; getChatID();

$ sendto = API_URL。 “sendmessage?chat_id =”。 $ chatID。 “&amp; text =”。 urlencode($ msg)。 “&amp; reply_to_message_id =”。 $ MESSAGEID;         的file_get_contents($ SENDTO);