我在尝试使用 forEach 时遇到问题
2021-10-03
54
我尝试当有人在公会 A/B/C 中写消息时,位于例如 3 个服务器中的机器人向第 4 个服务器中的我发送消息,通过名为“公会 A”、“公会 B”和“公会 C ”的不同文本频道(而不是同一个频道)发送...
我收到以下错误:
channel.send(msgLog)
TypeError: Cannot read property 'send' of undefined
这是我的代码:
const msgLog = `[#${message.channel.name}]=[${message.author.username}#${message.author.discriminator}]=> ${message.content}` ```
client.guilds.cache.map(guild => server.channels.cache.find(channel => channel.name == guild.name)).forEach(channel =>
channel.send(msgLog)
);
1个回答
该错误意味着
channel
是
undefined
,并且您不能将任何属性(例如
'send'
)设置为
undefined
。
这意味着
server
对于某些公会来说没有名为
guild.name
的频道。
您可以使用
filter
来仅包含已定义的频道:
client.guilds.cache
.map(guild => server.channels.cache.find(channel => channel.name == guild.name))
.filter(channel => channel) // returns false if channel === undefined
.forEach(channel => channel.send(msgLog));
这大致相当于
client.guilds.cache.forEach(guild => {
const channel = server.channels.cache.find(channel => channel.name == guild.name));
if (channel) {
channel.send(msgLog);
}
});
Lauren Yim
2021-10-03