В свободное время я медленно изучаю javascript и еще не дошел до этого. Но друг попросил меня сделать простого бота, который будет отправлять личные сообщения каждому новому пользователю, который присоединяется к серверу, спрашивает их, какого цвета они хотели бы, чтобы их имя пользователя было, и добавляет их к роли, которой они отвечают. Роли на сервере не имеют значения разрешений. Это просто цвет для имени пользователя (сервер Discord - это чат сообщества на основе DeviantArt).
В приведенном ниже отрывке он работает нормально, пока пользователь не ответит «синим цветом» и ответом «Пожалуйста, выберите цвет или убедитесь, что вы ввели цвет точно так, как показано». отправляется вместо добавления пользователя к нужной роли и ответа с указанием цвета. Я почти уверен, что проблема с этой частью:
user.addTo(server.roles.get("name", `${collected.first().content}`));
newmsg.channel.send(`Your name is now: **${collected.first().content}** Thank you and enjoy the server!`)
Я просто не уверен, что мне не хватает или как это должно быть структурировано, чтобы это работало. Перечисленные цвета отображаются строчными буквами в области ролей, и роли существуют.
bot.on('guildMemberAdd', member => {
member.send("Welcome to RebornWings! Please select a color for your username! **Choices: orange-red, red, blue, blue-green, or purple** Please type exactly how they appear in the list of choices.")
.then((newmsg) => { //Now newmsg is the message you sent
newmsg.channel.awaitMessages(response => response.content, {
max: 1,
time: 300000,
errors: ['time'],
}).then((collected) => {
user.addTo(server.roles.get("name", `${collected.first().content}`))
newmsg.channel.send(`Your name is now: **${collected.first().content}** Thank you and enjoy the server!`)
}).catch(() => {
newmsg.channel.send('Please choose a color or be sure you typed the color exactly as shown.');
});
});
});
bot.login(config.token);
Я думаю, что я довольно близок к тому, чтобы экспериментировать с вещами, просто не знаю, какой части мне не хватает.
Заранее спасибо за помощь, пока я медленно учусь самостоятельно.
server.roles.get()
). Кроме того, вы проверяли, чтоcollected.first().content
содержит то, что вы ожидаете? Наконец (на самом деле, во-первых) вызываемый.catch()
получает ошибку в качестве первого аргумента, описывающего проблему: попробуйте.catch((err) => {...
и отобразите этотerr
, чтобы лучше понять, что произошло. - person Stock Overflaw   schedule 27.08.2018