【问题标题】:Telethon Telegram message filterTelethon 电报消息过滤器
【发布时间】:2018-08-24 11:07:52
【问题描述】:

我想从今天发送的聊天中获取所有消息。

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 条消息(整个聊天)而且它不关心时间。 为什么?

【问题讨论】:

  • 用python而不是telethon制作过滤器。您可以制作一个过滤器来检查关键字,或者限制您可以发送的消息数量,在 Telethon 的文档中并不清楚。如果你愿意,我可以解释更多。我希望这可以帮助你我不太了解过滤器的提议。

标签: python chat telegram telethon


【解决方案1】:

您可以使用“message.date”。

如果您想从今天收到消息,您需要检查发送日期。这就像:

如果 datetime.datetime.now().strftime('%Y-%m-%d') == message.date.strftime('%Y-%m-%d')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    相关资源
    最近更新 更多