Пишу дискорд бота.
Структура кода как в доках (в каждом файле отдельная команда -
https://github.com/discordjs/guide/tree/main/code-...)
Так вот, имеем следующее:
Файл команды (dungeon.js):
let newDungeon = functions.dungeonGen("right")
newDungeon[1].push("left")
await interaction.reply({
content: `Вы запустили мини-игру: "Подземелье"`,
components: [functions.dungeonButtons(newDungeon[1])],
embeds: [functions.dungeonEmbed(newDungeon[0])]
});
Файл index.js:
const filter = i => i.user.id === interaction.user.id
const collector = interaction.channel.createMessageComponentCollector({ filter, time: 60000 })
collector.on('collect', async i => {
const ButtonId = i.customId.split(";")
if (ButtonId[0] === `up` || ButtonId[0] === `left` || ButtonId[0] === `right` || ButtonId[0] === `down`) {
const newDungeon = functions.dungeonGen(ButtonId[0])
let text = newDungeon[1].includes("treasure") ? `Пойдя ${ButtonId[1]}, вы нашли сокровища в комнате! :moneybag:` : `Вы пошли ${ButtonId[1]}... В комнате пусто.`
console.log(i)
await i.update({
content: text,
components: [functions.dungeonButtons(newDungeon[1])],
embeds: [functions.dungeonEmbed(newDungeon[0])]});
}
if(ButtonId[0] === `exit`) {
await i.update({
content: "Приключения закончились..",
embeds: []
})
await i.deleteReply();
collector.stop();
}
Если написать любые другие команды, а после уже эту команду dungeon, то при нажатии на кнопку бот умирает, выдавая ошибку:
C:\Users\ADMIN\Desktop\bot\node_modules\discord.js\src\rest\RequestHandler.js:350
throw new DiscordAPIError(data, res.status, request);
^
DiscordAPIError: Interaction has already been acknowledged.
at RequestHandler.execute (C:\Users\ADMIN\Desktop\bot\node_modules\discord.js\src\rest\RequestHandler.js:350:13)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async RequestHandler.push (C:\Users\ADMIN\Desktop\bot\node_modules\discord.js\src\rest\RequestHandler.js:51:14)
at async ButtonInteraction.update (C:\Users\ADMIN\Desktop\bot\node_modules\discord.js\src\structures\interfaces\InteractionResponses.js:214:5)
at async InteractionCollector.<anonymous> (C:\Users\ADMIN\Desktop\bot\index.js:44:3) {
44 строчка index.js:
await i.update