node.js - 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;
它应该能够向服务器上的每个通道发送消息,但它不断抛出错误。
解决方案
原因是 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);
});
推荐阅读
- django - 如何使用 django 在数据库中上传图像?
- firebase - Firebase函数onRequest未触发
- python - for循环如何在不使用readline()的情况下打印文本文件的所有行
- python - 如何在 Pandas 中合并包含数字数据的多列,但忽略空单元格
- text - 各种压缩软件程序的有趣行为
- python - 如何在 python 上的 openpyxl 的帮助下在现有的 xlsx 文件上写入文本?
- android - React Native 应用程序中的通知声音设置对话框,例如 WhatsApp
- c# - Visual Studio 2019 中的“项目位置”设置存储在哪里?
- python - 无法从 python 计算器获得正确的输出
- automation - ansible 角色的常见用例