web-dev-qa-db-fra.com

Comment télécharger l'historique de discussion d'un groupe dans Telegram?

Je souhaite télécharger l'historique des discussions (tous les messages) qui ont été postés dans un groupe public sur Telegram. Comment puis-je faire cela avec Python?

J'ai trouvé cette méthode dans l'API https://core.telegram.org/method/messages.getHistory qui, je pense, ressemble à ce que j'essaie de faire. Mais comment puis-je l'appeler? Il semble qu’il n’y ait pas d’exemples en python pour le protocole MTproto qu’ils utilisent.

J'ai aussi examiné l'API Bot, mais il ne semble pas avoir de méthode pour télécharger des messages.

10
siamii

Vous pouvez utiliser Téléthon . L'API de télégramme est assez compliqué et avec le téléthon, vous pouvez commencer à utiliser l'API de télégramme très rapidement sans aucune connaissance préalable de l'API.

pip install telethon

Puis enregistrez votre application (tirée du téléthon):  enter image description here

le lien est: https://my.telegram.org/

Ensuite, pour obtenir l'historique des messages d'un groupe (en supposant que vous ayez l'identifiant du groupe): 

chat_id = YOUR_CHAT_ID
api_id=YOUR_API_ID
api_hash = 'YOUR_API_HASH'

from telethon import TelegramClient
from telethon.tl.types.input_peer_chat import InputPeerChat

client = TelegramClient('session_id', api_id=api_id, api_hash=api_hash)
client.connect()
chat = InputPeerChat(chat_id)

total_count, messages, senders = client.get_message_history(
                        chat, limit=10)

for msg in reversed(messages):
    # Format the message content
    if getattr(msg, 'media', None):
        content = '<{}> {}'.format(  # The media may or may not have a caption
        msg.media.__class__.__name__,
        getattr(msg.media, 'caption', ''))
    Elif hasattr(msg, 'message'):
        content = msg.message
    Elif hasattr(msg, 'action'):
        content = str(msg.action)
    else:
        # Unknown message, simply print its class name
        content = msg.__class__.__name__

    text = '[{}:{}] (ID={}) {}: {} type: {}'.format(
            msg.date.hour, msg.date.minute, msg.id, "no name",
            content)
    print (text)

L'exemple est pris et simplifié à partir de exemple de téléthon .

8
apadana

Telegram MTProto est difficile à utiliser pour les débutants, je vous recommande donc telegram-cli.

Vous pouvez utiliser third-partytg-export script, mais ce n'est pas toujours facile pour les débutants.

1
Sean

vous pouvez utiliser telepot ( documentation ici ) pour python, par exemple: 

import telepot

token = 'your_token'
bot = telepot.Bot(token)
tmp_history = bot.getUpdates()
print(tmp_history['result'])

mais vous pouvez utiliser une limite de 100 enregistrements dans l'historique lire ceci à ce sujet

0
Vadim

Avec une mise à jour (août 2018), l'application Telegram Desktop prend désormais en charge l'enregistrement de l'historique des discussions très facilement ..___. Vous pouvez le stocker au format json ou html.

Pour utiliser cette fonctionnalité, assurez-vous que la dernière version de Telegram Desktop est installée sur votre ordinateur, puis cliquez sur Paramètres> Exporter les données Telegram.

https://telegram.org/blog/export-and-more

0
newsha