我正在尝试在电报频道中获取媒体帖子
我注意到一件事:如果一篇帖子有超过 1 种媒体,比如说 3 张照片,它们将会出现在不同的信息中。
例如,假设在一个 id = 1 - 3 张照片的帖子中,当我通过此代码收到此消息时,id = 1 的帖子(消息)将只有一张照片,而 id = 2 的消息将包含此帖子的下一张照片,等等。
我需要以某种方式按帖子对媒体进行分组,谢谢
代码:
history = await client(GetHistoryRequest(
peer=input_channel,
offset_id=offset_id,
offset_date=None,
add_offset=0,
limit=limit,
max_id=0,
min_id=0,
hash=0
))
messages: List[Message] = history.messages
for message in messages:
if message.id == 2607:
print(message)
if message.id == 2606:
print(message)
if isinstance(message.media, MessageMediaPhoto):
await client.download_media(message.media, "")
Telegram 中带有不同媒体文件的消息是一组不同的消息。也就是说,每个媒体文件都有 1 条单独的消息。所有这些单独的消息都被分组为一个媒体组,并且具有唯一的
grouped_id。为了更清楚的理解,可以将消息的内容输出到控制台:
在其中我们将看到一个
group_id对于一个媒体组的所有消息都相同的参数:一旦收到,
group_id = event.message.grouped_id您可以构建进一步的逻辑,将所有消息收集到一条媒体消息中,并根据需要进一步发送。它被称为相册,但并不完全清楚你想用这些帖子做什么。保存、转发、还是发送?
为了正确地按帖子对媒体进行分组,你需要考虑
grouped_id