Бот Nodejs discord

#javascript #node.js #discord.js

#язык JavaScript #node.js #discord.js

Вопрос:

Добрый день, у меня есть код, но я не могу сделать проверки, допустим, если на канале уже есть канал discord с таким названием, бот выводит в чате ошибку «такой канал уже существует», что-то вроде этого помогите, пожалуйста, напишите такую проверку, если есть другие варианты решения этой проблемы, тоже хочу услышать.

Подробная информация

Переменная результата получает весь список каналов, которые находятся в канале discord.

Channels.channels[key].Имя — этот импорт получает объект из другого файла, где он имеет только два значения: имя и строку кода.

введите описание изображения здесь

Код приведен ниже.

 function info_channels(robot, mess, args) {  const result = [];   robot.channels.cache.forEach(el =gt; {  let new_key = el.name.replace(re, '');  result.push(new_key);  return result;  });   for(key in Channels.channels){  mess.guild.channels.create(`${Channels.channels[key].Name} ${eval(Channels.channels[key].count_users)}`,{  type: "voice",  permissionOverwrites: [  {  id: mess.guild.roles.everyone,  allow: [  'VIEW_CHANNEL',  'READ_MESSAGE_HISTORY'  ],  deny: [  'CONNECT',  'MANAGE_CHANNELS',  'SPEAK'  ]  },  {  id: mess.guild.roles.cache.get(config.userRole),  allow: ['VIEW_CHANNEL', 'READ_MESSAGE_HISTORY'],  deny: ['CONNECT','MANAGE_CHANNELS','SPEAK']  },  {  id: mess.guild.roles.cache.get(config.role_Rinka),  allow: ['VIEW_CHANNEL','MANAGE_CHANNELS','READ_MESSAGE_HISTORY'],  }  ],  parent: '914852886599569458',  })  .then(console.log(`Канал${Channels.channels[key].Name.replace(re, '')} создан!`))  .catch(console.error);  }   if (Channels.channels[key].Name === result) {  mess.channels.send('я создала');   }   else {  mess.channel.send('я не создала');  }  }  

Ответ №1:

Вы можете легко проверить, начинается ли название канала с какой-либо строки.

 // lt;Guildgt; is a placeholder for any Guild object // lt;namegt; is a placeholder for a channel name you're trying to check //  // Note: Channels are always cached, no matter what.  const existingChannel = lt;Guildgt;.channels.cache.find(chnl =gt; chnl.name.startsWith(lt;namegt;);  if (existingChannel) {  // Channel already exists };  

Комментарии:

1. Как можно будет выполнить поиск объекта Channels.channels и поместить туда названия каналов, которые я ищу, вместо lt;имяgt;

2. Вы можете превратить объект в массив значений объекта с помощью Object.values(lt;the objectgt;) . Затем после этого используйте цикл for (), чтобы сделать все необходимое

3. и тогда как поместить все значения в начало после цикла for?

4. Это зависит от того, какой цикл for вы сделали, я предлагаю вам задать для этого новый вопрос.

5. Не нужно, я уже придумал, как это сделать, спасибо за вашу помощь