отрывок из 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..., в зависимости от языка).