我正在尝试获取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
})