Telegram API: как получать сообщения с общедоступного канала, участником которого я не являюсь?

Я могу успешно получать сообщения с канала через каналы.метода getmessages просьба, как только я узнаю их message IDs. Я нахожу идентификатор канала контакты.поиск, кстати.

на данный момент идентификаторы mesage являются последовательными целыми числами, поэтому получение max_id решит проблему.

Я уверен, что это возможно, так как официальные клиенты делают это (просмотр канала без присоединения к нему). Я попытаюсь узнать, как официальное настольное приложение делает это чтение источники, но любая помощь будет высоко ценится.

мне это нужно, потому что я пишу простой общественный канал телеграммы - > rss / Веб-интерфейс.

пожалуйста, не путайте telegram API с telegram bot API. Bot API позволяет получать "push" сообщения о новых сообщениях, но не "чтение исторических журналов".

2 ответов


вот шаги, которые вы должны сделать, чтобы получить сообщения от канала, к которому вы не присоединились:

  1. разрешите имя пользователя в ID и access_hash с contacts.resolveUsername
  2. Invoke messages.getHistory чтобы получить нужные сообщения.

вот краткое описание на 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)

оказывается сообщения.getHistory просто хорошо, дает вам последние N сообщений + общее количество.