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
错误。使用此参数时,
filter
和search
参数无效,因为 Telegram 的 API 不支持搜索回复中的消息。
- entity (
- 生成器
消息对象
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)