为什么当我尝试获取频道时'fetch'返回未定义? |不和谐.js v13



我正在尝试获取discord服务器中的所有通道,然后检查每条消息是否是特定用户编写的。然而,每当我试图获取通道时,它总是会导致错误。

message.guild.channels.cache.forEach(channel => {
channel.messages.fetch().then(messages => {
if(messages.author.id == member.id) {
messages.forEach(msg => console.log(msg.content));
}
});
});

错误:

channel.messages.fetch().then(messages => {
^
TypeError: Cannot read properties of undefined (reading 'fetch')

成员已经定义,并且以前也使用过它,只是没有包含在代码片段中。

您似乎对服务器上的任何通道都使用了forEach()函数,
但是有一个通道不具有messages属性(例如GUILD_VOICE(。这就是你犯这个错误的原因。您可以做的是将通道过滤为仅GUILD_TEXT

代码示例:

message.guild.channels.cache.filter(ch => ch.type === "GUILD_TEXT").forEach((ch) => {
// do here your stuff
}) 

最新更新