#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. Не нужно, я уже придумал, как это сделать, спасибо за вашу помощь