Telethon Telegram фильтр сообщений - PullRequest
0 голосов
/ 24 августа 2018

Я хотел бы получить все сообщения из чата, которые были отправлены сегодня.

import sys,datetime
from telethon import TelegramClient
api_id = 1234567
api_hash = "0986asdgshjfag"
client = TelegramClient('session_name', api_id, api_hash)
client.start()

dialogs = client.get_dialogs()
chat = client.get_input_entity('username')


filter = InputMessagesFilterEmpty()
result = client(SearchRequest(
    peer=chat,  # On which chat/conversation
    q='',  # What to search for
    filter=filter,  # Filter to use (maybe filter for media)
    min_date=datetime.date.today(),  # Minimum date
    max_date=None,  # Maximum date
    offset_id=0,  # ID of the message to use as offset
    add_offset=0,  # Additional offset
    limit=5,  # How many results
    max_id=0,  # Maximum message ID
    min_id=0,  # Minimum message ID
    from_id=None,  # Who must have sent the message (peer)
    hash=0  # Special number to return nothing on no-change
))

for message in client.iter_messages(chat,filter=result):
    print(message.message)

Фильтр не работает вообще, я вижу более 5 сообщений (весь чат) и не заботится о времени. Почему?

1 Ответ

0 голосов
/ 10 февраля 2019

Вы можете использовать «message.date».

Если вы хотите получить сообщение с сегодняшнего дня, вам нужно проверить отправленный день. и это будет выглядеть так:

if datetime.datetime.now (). Strftime ('% Y-% m-% d') == message.date.strftime ('% Y-% m-% d')

...