отрывок из discord.js guide по этой теме (перевод)
Как уже говорилось ранее, у вас есть три секунды, чтобы ответить на Interaction, прежде чем его токен станет недействительным. Но что, если у вас есть команда, выполняющая задачу, которой требуется больше времени, чем три секунды?
В этом случае вы можете воспользоваться методом BaseInteraction#deferReply()
, который запускает <application> is thinking...
, а также действует как начальный ответ. Это позволит вам получить 15 минут на выполнение задач перед ответом.
https://discordjs.guide/interactions/slash-command...
по всей видимости, на выполнение
axios.get()
иногда уходит более 3 секунд, из-за чего к моменту запуска
.then()
токен Interaction уже является недействительным, что и вызывает ошибку.
поэтому перед
axios.get()
нужно поставить
await interaction.deferReply()
, а после чего уже использовать
await interaction.editReply(...)
вместо
await interaction.reply(...)
.
на протяжении всего времени, которое понадобится на выполнение
axios.get()
, юзер будет видеть надпись
имя_бота думает...
(или
имя_бота is thinking...
, в зависимости от языка).