我正在尝试创建一个不和谐的机器人,该机器人将消息发送到服务器中的每个通道。负责此操作的功能如下。
if (message.content === "!broadcast") {
if (!message.member.hasPermission("MANAGE_MESSAGES", "ADMINISTRATOR")) return message.channel.send("You don't have the required permissions to use that silly");
message.guild.channels.cache.forEach(channel => channel.send('test'))
return
}
当被调用时,它给出TypeError并且机器人崩溃。如果可以的话,请帮助我找出我做错了什么。
TypeError: channel.send is not a function
答案 0 :(得分:0)
.channels.cache
上的message.guild
属性是GuildChannels
的集合。该集合具有所有通道,包括VoiceChannels,CategoryChannels等。大多数GuildChannel类型不具有称为send()
的功能,只有TextChannel
和NewsChannel
具有此功能。 / p>
要解决此问题,您首先需要在具有此send()
功能的通道类型上进行过滤,然后再发送消息。查看下面的示例代码,然后尝试一下。通过检查GuildChannel.type
是text
还是news
来工作。
if (message.content === "!broadcast") {
if (!message.member.hasPermission("MANAGE_MESSAGES", "ADMINISTRATOR")) {
return message.channel.send("You don't have the required permissions to use that silly");
}
message.guild.channels.cache
.filter(channel => ['text', 'news'].includes(channel.type))
.forEach(channel => channel.send('test'));
}