#javascript #node.js #discord #discord.js
#JavaScript #node.js #Discord #discord.js
Вопрос:
По какой-то причине, которую я не знаю, мой код не понимает, что существует канал, содержащий имя пользователя отправителя сообщения. Чтобы использовать этого бота, вы DM бота, а затем он создает канал с именем вашего тега. Например, мой тег discord — Llama #0729, и он создает канал с именем llama0729. Проблема в том, что при запуске кода перед созданием канала он проверяет, чтобы убедиться, что нет канала, который содержит какую-либо часть имени пользователя пользователя. Однако он всегда создает канал.
if (msg.channel.type == "dm") {
if (!client.guilds.cache.get('720571393636434031').channels.cache.find(channel => channel.name == msg.author.username.toLowerCase())) {
client.guilds.cache.get('720571393636434031').channels.create(msg.author.tag, {type: 'text'}).then((channel) => {
channel.setParent('778216162403942401');
});
};
} else {
console.log('A Channel For ', msg.author.tag, 'Has Already Been Made.');
return;
};
Ответ №1:
Когда вы проверяете, существуют ли какие-либо каналы, вы должны сравнивать их tag
, а не их username
. Я немного изменил ваш код, а также удалил #
из их tag
.
var newChannelName = msg.author.tag.replace("#", "").toLowerCase();
if (msg.channel.type == "dm") {
if (!client.guilds.cache.get('720571393636434031').channels.cache.find(channel => channel.name == newChannelName)) {
client.guilds.cache.get('720571393636434031').channels.create(newChannelName, {type: 'text'}).then((channel) => {
channel.setParent('778216162403942401');
})
.catch(error => {
console.log(error);
});
}
else
{
console.log('A Channel For ' newChannelName ' Has Already Been Made.');
return;
}
}
Комментарии:
1. Не сработало, хотя удаление # было хорошей идеей.
2. Я просто попробовал его с
.catch(x => {console.log(x);});
помощью after.then
, чтобы перехватить любые исключения при создании канала, и обнаружил, что у меня нет разрешений. Вы устранили это как причину, по которой оно не работает?3. Теперь у бота есть права администратора
4. Мне удалось заставить его работать после добавления
.toLowerCase()
, похоже, что Discord преобразуется в нижний регистр при создании канала. Я отредактировал свой ответ с помощью нижнего регистра и catch.5. Цым! Это очень поможет в будущем и для этого проекта!