如何反向下载 Telegram 消息?

问题描述 投票:0回答:3

我通过 GetHistoryRequest 获取 Telegram 频道的所有消息。我想每天运行一个脚本,它会给我新的消息。是否可以颠倒 GetHistoryRequest 中消息的顺序?我看到了一个附加属性reverse=True,但这给了我一条错误消息。这是代码(可在线获取)

history = client(GetHistoryRequest(
            peer=my_channel,
            offset_id=0,
            offset_date=None,
            add_offset=0,
            limit=limit,
            max_id=0,
            min_id=0,
            hash=0
        ))
python-3.x telethon
3个回答
0
投票

根据文档

GetHistoryRequest
没有
reverse
参数。但是,该方法
client.iter_messages
确实可以


0
投票

这在这里有效。下载 100 条消息

from telethon.tl import functions, types

channel_link = "https://t.me/joinchat/xxxxxx-xxx"
channel_hash = channel_link.strip().split("joinchat/",1)[1]


channel = await client(functions.messages.CheckChatInviteRequest(hash=channel_hash))
    async for message in client.iter_messages(channel.chat, limit = 100,reverse=True):

0
投票
  while True:
        # Fetch a batch of messages
        history = await self.client(GetHistoryRequest(
            peer=source[0],
            limit=batch_size,
            offset_date=None,
            offset_id=offset_id,  # No offset, as we're starting from the first message
            max_id=0,
            min_id=0,  # Start from the current min_id
            add_offset=0,
            hash=0
        ))

        if not history.messages:
            # Stop if there are no more messages
            break

        total_messages += len(history.messages)
        print(f"Fetched {total_messages} messages so far")

        for message in history.messages[::-1]:  # Process messages from oldest to newest
            try:
© www.soinside.com 2019 - 2024. All rights reserved.