如何使用 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”。
我有 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”。