iter_messages()

Client.iter_messages()

搜索指定对话中的消息。

参数:
entity (user | chat | channel):

需要检索的对话的对象

limit (int | None, 可选):

限制要检索的消息数。由于API的限制,检索超过 3000 条消息将需要超过半分钟。

配置为 None ,并不会返回所有历史。

offset_date (float, 可选):

将从此时间之前开始检索消息。

offset_id (int, 可选):

将从此消息 id 之前开始检索消息。

max_id (int, 可选):

配置要检索到的消息的最大 id 值。

min_id (int, 可选):

配置要检索到的消息的最小 id 值。

search (str, 可选):

配置检索的字符串。

filter (MessagesFilter, 可选):

过滤消息类型。

from_user (user, 可选)

指定消息发送者。

reverse (bool, 可选):

如果设置为 True,则消息将以相反的顺序返回。这意味着 offset_id 或者 offset_date 参数的含义是相反的。 min_id 等同于 offset_id

reply_to (int, 可选):

返回频道消息的所有评论消息。

此功能只能用于链接了某个频道的*讨论组*。在其他对话中使用它将抛出 PeridInValiderror 错误。

使用此参数时,filtersearch 参数无效,因为 Telegram 的 API 不支持搜索回复中的消息。

生成器

消息对象 message

引发

PeridInValiderror – 此对话不是链接了频道的讨论组。

示例

# 从最新消息开始检索
async for message in client.iter_messages(chat):
    print(message.id, message.text)

# 从第一条消息开始检索
async for message in client.iter_messages(chat, reverse=True):
    print(message.id, message.text)

# 只返回我发送的消息
async for message in client.iter_messages(chat, from_user='me'):
    print(message.text)

# 通过 Telegram 服务器检索匹配的文本消息
async for message in client.iter_messages(chat, search='hello'):
    print(message.id)

# 检索特定类型的消息(例如:图片)
from telethon.tl.types import InputMessagesFilterPhotos
async for message in client.iter_messages(chat, filter=InputMessagesFilterPhotos):
    print(message.photo)

# 检索指定频道消息的评论
async for message in client.iter_messages(channel, reply_to=123):
    print(message.chat.title, message.text)