Discord.js:message.guild.channels.forEach 不是函数
Posted
技术标签:
【中文标题】Discord.js:message.guild.channels.forEach 不是函数【英文标题】:Discord.js: message.guild.channels.forEach is not a function 【发布时间】:2020-07-27 20:57:55 【问题描述】:我正在使用 Discord.js 创建一个 Discord 机器人
我正在创建静音命令,但是当我想为每个频道禁用静音角色的发言权限时,我收到此错误:
TypeError: message.guild.channels.forEach is not a function
我有 V12。 我查看了其他一些选项,但找不到任何可行的选项。
if(!toMute) return message.reply('It looks like you didnt specify the user!');
if(toMute.hasPermission('MANAGE_MESSAGES')) return message.reply("can't mute them");
let muterole = message.guild.roles.cache.find(r => r.name === 'muted');
if(!muterole)
try
muterole = await message.guild.roles.create(
name: "muted",
color: "#000000",
permissions: []
)
message.guild.channels.forEach(async (channel, id) =>
await channel.overwritePermission(muterole,
SEND_MESSAGES: false,
ADD_REACTIONS: false
);
);
catch(e)
console.log(e.stack);
return message.channel.send('Cant')
let mutetime = args[1];
if(!mutetime) return message.reply('You didnt specify the time');
await(toMute.addRole(muterole.id));
message.reply(`Successfully muted <@$toMute.id> for $ms(mutetime)`);
setTimeout(function()
toMute.removeRole(muterole.id);
message.channel.send(`<@$toMute.id> has been unmuted!`);
, ms(mutetime));
【问题讨论】:
【参考方案1】:请尝试
message.guild.channels.cache.forEach((channel)=>
...
)
参考:https://discord.js.org/#/docs/main/stable/class/GuildChannelManager?scrollTo=cache
【讨论】:
【参考方案2】:就像错误所说的那样。 message.guild.channels.forEach
不是函数!
您可能正在使用 discord.js v12。
在此版本中,message.guild.channels
不返回集合,而是返回 ChannelManager
。要获取所有频道的集合,请使用 message.guild.channels.cache
。
现在你可以使用.forEach()
:
message.guild.channels.cache.forEach((channel) =>
// your code here
);
【讨论】:
以上是关于Discord.js:message.guild.channels.forEach 不是函数的主要内容,如果未能解决你的问题,请参考以下文章
Discord.js,message.guild.owner 返回 null