Telegramの公開グループに投稿されたチャット履歴(すべてのメッセージ)をダウンロードします。どうすればPythonでこれを行うことができますか?
APIでこのメソッドを見つけました https://core.telegram.org/method/messages.getHistory これは私がやろうとしているように見えると思います。しかし、実際にどのように呼び出すのですか? python使用するMTprotoプロトコルの例はないようです。
ボットAPIも調べましたが、メッセージをダウンロードする方法はないようです。
Telethon を使用できます。 Telegram APIはかなり複雑で、telethonを使用すると、APIについての予備知識がなくても、非常に短時間でTelegram APIの使用を開始できます。
pip install telethon
リンクは: https://my.telegram.org/
次に、グループのメッセージ履歴を取得するには(グループIDがあると仮定):
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)
この例は telethonの例 から取られ、簡略化されています。
更新(2018年8月)により、Telegram Desktopアプリケーションはチャット履歴の保存を非常に便利にサポートするようになりました。 jsonまたはhtml形式で保存できます。
この機能を使用するには、コンピューターにTelegram Desktopの最新バージョンがインストールされていることを確認してから、[設定]> [電報データのエクスポート]をクリックします。
Telegram MTProtoは初心者には使いにくいので、telegram-cliをお勧めします。
third-partytg-export スクリプトを使用できますが、初心者にも簡単ではありません。