如何使用 telethon 仅从聊天中获取未读消息?

How to get only unread messages from chat using telethon?

我有 client.get_messages(dialog.entity) 但它的 return 只是没有“read/unread 标记”的消息... 那么,如何才能只收到未读的新消息呢? 有人知道吗?

每个对话框都有unread_count

x = [[d.unread_count, d.title] for d in client.get_dialogs() if not getattr(d.entity, 'is_private', False) and d.unread_count != 0]
x = [[d.unread_count, d.title] for d in client.get_dialogs() if not getattr(d.entity, 'megagroup', False) and d.unread_count != 0]

除了已接受的答案外,还可以使用 GetPeerDialogsRequest 仅获取您感兴趣的对话框,这也可用于对整个文件夹进行操作。

获取来自'username'的未读消息数量:

from telethon.sync import TelegramClient
from telethon import functions, types

with TelegramClient(name, api_id, api_hash) as client:
    result = client(functions.messages.GetPeerDialogsRequest(
        peers=['username']
    ))
    print(result.dialogs[0].unread_count)

请注意,peers 可能是一个列表,因此您可以一次获取多个。请注意,该对话框包含更多信息,例如“已读取到哪个 ID”。