message.reply()
и
message.delete()
— это
промисы.
при вызове любого из этих методов делается запрос к Discord API, для того, чтобы опубликовать в чате ответ на сообщение, либо удалить сообщение.
на выполнение подобных запросов может уйти разное количество времени, оно не фиксированное.
сейчас вы запускаете два этих промиса
синхронно, а значит, из них первым выполнится тот, кто потратит меньше всего времени на запрос к Discord API.
если первым выполнится
message.reply()
, тогда все будет работать, как задумано - сначала бот ответит на сообщение пользователя, потом это сообщение удалит.
если же первым выполнится
message.delete()
, бот вылетит с фатальной ошибкой
REPLIES_UNKNOWN_MESSAGE
, т.к попытается опубликовать ответ на не существующее (уже удаленное) сообщение.
поэтому, чтобы избежать подобных проблем, вы должны использовать
.then(),
либо синтаксис
async/await
:
message.reply("ответ на сообщение").then(() => { // после выполнения message.reply()...
message.delete(); // ...удалить сообщение
})
// или //
await message.reply("ответ на сообщение");
await message.delete();
/*
в этом примере выполнение кода не пойдет дальше, пока не выполнится message.reply().
после выполнения message.reply() компилятор будет так же ждать выполнения message.delete(), и пока оно не выполнится, весь код, написанный после message.delete() не будет приведен в действие.
*/