Discord. js: message.guild.channels.forEach не является функцией - PullRequest
0 голосов
/ 15 апреля 2020

Я создаю бот Discord с использованием Discord. js

Я создаю команду отключения звука, но когда я хочу отключить разрешение на выступление для роли отключения звука для каждого канала, я получаю эту ошибку:

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));

}

Ответы [ 2 ]

2 голосов
/ 15 апреля 2020

Пожалуйста, попробуйте

message.guild.channels.cache.forEach((channel)=>{
 ...
})

Ссылка: https://discord.js.org/# / docs / main / stable / class / GuildChannelManager? ScrollTo = cache

0 голосов
/ 15 апреля 2020

Это как ошибка говорит. message.guild.channels.forEach - это не функция!

Возможно, вы используете дискорд. js v12. В этой версии message.guild.channels не возвращает коллекцию, он возвращает ChannelManager. Чтобы получить коллекцию всех каналов, вы используете message.guild.channels.cache. И теперь вы можете использовать .forEach():

message.guild.channels.cache.forEach((channel) => {

 // your code here

});
...