如何从 discord.py 中的文本通道获取所有消息的数组?

Posted

技术标签:

【中文标题】如何从 discord.py 中的文本通道获取所有消息的数组?【英文标题】:How can I get an array of all the messages from a text channel in discord.py? 【发布时间】:2019-10-14 09:13:30 【问题描述】:

我有频道对象,我试过了

mess = channel.history(limit=200)

但是mess 是一个HistoryIterator 对象并且在其mess.messages 对象中不包含任何消息(大小= 0)。频道中有消息,所以不应该说大小为0。

我也试过了:

mess = client.logs_from(channel, limit=200)

但是 PyCharm 告诉我 client 没有 logs_from 函数。

有没有一种简单的方法可以从数组中的文本通道中获取所有消息?

【问题讨论】:

【参考方案1】:

HistoryIterator 实现了AsyncIterator 接口。您可以使用AsyncIterator.flatten 方法将 Iterator 的内容消费到一个列表中:

messages = await channel.history(limit=200).flatten()

【讨论】:

以上是关于如何从 discord.py 中的文本通道获取所有消息的数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 discord.py 获取所有文本频道?

如何使用 discord.py 制作一个检查某个服务器通道中所有消息的机器人

获取一个类别Channel的权限并设置为语音通道discord.py

如何访问discord.py中的哪个语音通道用户写入命令?

(Discord.py) 如何锁定和解锁语音通道

discord.py,使用 webhook 在所有通道中发送消息