Задать вопрос
@Nikita1244
Anonymous

Кнопка, доступная только для определенных лиц — Discord.js?

Есть в боте игра "Угадай животное". Мне нужно сделать, чтобы юзеры могли добавлять в нее животных. Создал для этого слеш-команду. Там две опции: "Имя" и "Картинка". В опцию "Имя" пишут имя животного, а во вторую опцию прикладывают картинку. После этого, бот должен отправить сообщение в нужный канал на нужном сервере. С этим вроде все понятно. Но как можно сделать, чтобы кнопка была доступна, допустим, только для меня? Будут две кнопки: Принять, Отклонить. После нажатия, должна вызываться функция, которая будет делать запись в базу данных PostgreSQL и сохраняться картинка в /assets/animals/. Для этого нужно использовать pg и fs, верно? Также, вопрос, как сделать прослушиватель для кнопки? К слеш команде присобачивать - явно это не то.
  • Вопрос задан
  • 216 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Syjalo
@Syjalo
Представьте себе бота
Как сделать, чтобы кнопка была доступна только для меня?

1) Если кнопка была отправлена слэш командой, то в слушателе interactionCreate проверяем, чтобы interaction.message.interaction.user.id был равен interaction.user.id.
2) Если кнопка была отправлена обычными сообщением, то в customId кнопки добавляем id того, кто может использовать кнопку и сравниваем его с interaction.user.id.
3) Отправить ephemeral ответ на интеракцию, чтобы сообщение мог видеть только отправитель команды.
4) Использовать коллекторы
Message#createMessageComponentCollector()
InteractionResponse#createMessageComponentCollector()

Как сделать слушатель кнопки?

1) Через ивент interactionCreate
client.on('interactionCreate', (interaction) => {
  if (interaction.isButton()) {
    // code here
  }
});

2) Через коллекторы
const collector = <Message>.createMessageComponentCollector({ componentType: ComponentType.Button });
collector.on('collect', (interaction) => {
  // code here
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы