Discords.js将消息发送到服务器中的每个通道

时间:2020-09-17 06:19:32

标签: javascript discord.js

我正在尝试创建一个不和谐的机器人,该机器人将消息发送到服务器中的每个通道。负责此操作的功能如下。

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

1 个答案:

答案 0 :(得分:0)

.channels.cache上的message.guild属性是GuildChannels的集合。该集合具有所有通道,包括VoiceChannels,CategoryChannels等。大多数GuildChannel类型不具有称为send()的功能,只有TextChannelNewsChannel具有此功能。 / p>

要解决此问题,您首先需要在具有此send()功能的通道类型上进行过滤,然后再发送消息。查看下面的示例代码,然后尝试一下。通过检查GuildChannel.typetext还是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'));
}