首页 > 解决方案 > Discord 节点 js “TypeError:channel.send 不是函数”

问题描述

目前正在创建一个不和谐的机器人并遇到一些错误,声称“channel.send”不是一个函数。

这是一个允许机器人向公会中的每个频道发送消息的命令。

case "msgall":
    if (!args[1]) return message.reply("enter a msg")
    if (message.author.bot) return undefined;
    announce = args.slice(1).join(" ")
    message.delete();
    message.guild.channels.forEach(channel=>{
        channel.send(announce)
        channel.send(announce)
        channel.send(announce)
    }).catch(console.log);
    break;

它应该能够向服务器上的每个通道发送消息,但它不断抛出错误。

标签: node.jsdiscord

解决方案


原因是 message.guild.channels 不是 Channel 对象的数组。根据文档,您首先需要找到频道(按名称或频道 ID):

// Get a Channel by Name message.guild.channels.find(channel => channel.name === "channel-name"); // returns <Channel>

我建议您创建一个频道名称(或 ID)数组并遍历该数组。例如:

const channels = ['channel-1', 'channel-2'];
channels.forEach(c => {
  const ch = message.guild.channels.find(channel => channel.name === c);
  ch.send(announce);
});

推荐阅读