В javascript есть несколько способов обработки асинхронного кода.
В вашем примере вы используете функцию async
. Это означает, что вы можете использовать async / await - эта функция построена поверх Promise
с синтаксическим сахаром.
Она позволяет вам писать свой код "синхронно". Поэтому вы можете переписать свой вызов Promise следующим образом:
module.exports.run = async (bot, message, args) => {
let target = message.mentions.members.first()
if(!target) {
const message = await message.channel.send("Couldn't find that ID!");
return message.delete(15000)
}
Также ошибка UnhandledPromiseRejectionWarning
предупреждает вас о том, что у вас есть ошибка при выполнении Promise. Здесь параметр, переданный функции delete
, имеет неправильный тип. Ожидается объект, но номер получен. Вот документация API сообщения .
Чтобы go сделать шаг вперед, вы можете справиться с отклонением Promises с помощью функции .catch
цепочки, это может быть полезно для отладки или зарегистрируйте ошибку.
// Promises style
let target = message.mentions.members.first()
if(!target) {
return message.channel.send("Couldn't find that ID!")
.then(m => m.delete(15000))
.catch(error => console.log(error))
}
Или используйте синтаксис async / await:
// async/await style
let target = message.mentions.members.first()
if(!target) {
try {
const message = await message.channel.send("Couldn't find that ID!");
return message.delete(15000)
} catch(error) {
console.log(error)
}
}