#discord.js #bots
Вопрос:
Я пытаюсь запрограммировать команду Крестики-нолики для своего бота. Поэтому я сделал себе базовую сетку 3×3, в которой бот добавляет буквы » О » и » Х » в поля, используя холст модуля узла. Затем он преобразует холст во вложение сообщения Discord с помощью конструктора привязки сообщений Discord:
const tictactoeImage = new Discord.MessageAttachment(canvas.toBuffer(),'TicTacToe.png');
После этого он добавляет изображение во встроенное:
const tictactoeEmbed = new Discord.MessageEmbed().setImage('attachment://TicTacToe.png');
Он также добавляет в сообщение меню выбора со всеми пустыми полями, чтобы пользователь мог выбрать, какое поле он хочет задать.
И последнее, но не менее важное: он отправляет вставку, изображение и компонент в канал, в котором была выполнена команда:
return message.channel.send({ embeds: [tictactoeEmbed], files: [tictactoeImage], components: [gamemessagecomponent], });
Для каждого взаимодействия с меню выбора (когда пользователь выбирает пустое поле в меню выбора) этот процесс повторяется, и сообщение редактируется. И вот в чем проблема: каждый раз, когда я добавляю новое изображение в сообщение, оно просто не показывает новое изображение. Встраивание по-прежнему показывает старое изображение.
Я попытался добавить случайное целое число в имя файла, что устранило проблему. Теперь встраивание показывает правильное изображение. Но теперь появилась еще одна проблема: все старые изображения отображаются над вставкой.
Скриншот: https://data.maryubot.xyz/media/tictactoe-issue.png
По-видимому, каждый раз, когда я редактирую сообщение, вместо перезаписи добавляются новые изображения. Это не относится к встроенным компонентам или компонентам сообщений. Чтобы подтвердить это, я отредактировал сообщение, отправленное ботом ранее, следующим образом:
return gamemessage.edit({ content: 'Does this work?', embeds: [], files: [], components: [], });
Встраивание и компонент исчезли, но изображение(изображения) все еще были видны.
Мой вопрос: как мне избавиться от старых изображений, чтобы было видно только самое новое изображение? (По одному изображению за раз)
Я пытаюсь избежать создания нового сообщения каждый раз, когда пользователь выбирает поле.
Заранее спасибо за любые ответы!