电报API:如何从公共频道获取消息,我不参与?

时间:2017-09-08 13:20:42

标签: telegram

一旦我知道message IDs,我就可以通过channels.getMessages请求成功检索来自频道的消息。顺便说一句,我找到contacts.search的频道ID。

目前,消息ID是连续的整数,因此获取max_id可以解决问题。

我确信这是可能的,因为官方客户这样做(查看频道而不加入它)。我将通过阅读its sources来了解官方桌面应用程序是如何做到这一点的,但我们将非常感谢任何帮助。

我需要这个,因为我正在写一个简单的公共电报频道 - > rss / web界面。

请不要将Telegram Client API与Telegram Bot API混淆。 Bot API允许接收'推送'有关新邮件的消息,但没有阅读历史记录'。

2 个答案:

答案 0 :(得分:7)

以下是您从未加入的频道收到邮件时必须执行的步骤:

  1. 使用contacts.resolveUsername
  2. 将用户名解析为ID和access_hash
  3. 调用messages.getHistory以获取所需的消息。
  4. 以下是messages.getHistory参数的简短说明:

        :param peer:        The channel from whom to retrieve the message history
        :param limit:       Number of messages to be retrieved
        :param offset_date: Offset date (messages *previous* to this date will be retrieved)
        :param offset_id:   Offset message ID (only messages *previous* to the given ID will be retrieved)
        :param max_id:      All the messages with a higher (newer) ID or equal to this will be excluded
        :param min_id:      All the messages with a lower (older) ID or equal to this will be excluded
        :param add_offset:  Additional message offset (all of the specified offsets + this offset = older messages)
    

答案 1 :(得分:2)

事实证明,messages.getHistory还可以,给你最后N条消息+总计数。