web-dev-qa-db-fra.com

API Telegram: Comment puis-je recevoir des messages d'un canal public auquel je ne participe pas?

Je suis en mesure de récupérer avec succès les messages d'un canal via la requête channels.getMessages , une fois que je connais leur message IDs. Je trouve l'identifiant du canal par contacts.search , soit dit en passant.

Pour le moment, les identifiants de mesurage sont des entiers conséquents, donc obtenir max_id résoudrait le problème.

J'en suis sûr, car les clients officiels le font (voir une chaîne sans la rejoindre). J'essaierai de savoir comment l'application de bureau officielle le fait en lisant ses sources , mais toute aide sera très appréciée.

J'en ai besoin car j'écris une simple chaîne de télégramme publique -> interface rss/web.

Veuillez ne pas confondre l'API client Telegram avec l'API Telegram Bot. L'API Bot permet de recevoir des messages "Push" sur les nouveaux messages, mais pas de "lecture des journaux historiques".

14
Samat

Voici les étapes à suivre pour recevoir des messages d'un canal auquel vous n'êtes pas joint:

  1. Résolvez le nom d'utilisateur en ID et access_hash avec contacts.resolveUsername
  2. Invoquer messages.getHistory pour obtenir les messages souhaités.

Voici une brève description de messages.getHistory paramètres:

    :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)
7
Ali Hashemi

Il s'avère que messages.getHistory est juste correct, vous donne les derniers N messages + le nombre total.

2
Samat