#discord.js
Вопрос:
Я пытаюсь создать команду косой черты, используя discord.js v13 для изменения названий голосовых каналов. Я использую этот код для этого :
module.exports = {
data: new SlashCommandBuilder()
.setName('name')
.setDescription('Set name for your voice channel')
.addStringOption(option => option.setName('name').setDescription('Enter your name').setRequired(true)),
async execute(interaction) {
const name = interaction.options.getString('name');
if (!interaction.member.voice.channel) await interaction.reply('Error not in a voice channel!');
else {
await interaction.member.voice.channel.setName(name);
await interaction.reply('Done!');
}
},
};
Этот код хорош и делает работу выполненной. Но, как вы знаете, я могу менять название голосового канала только 2 раза в 10 минут из-за предельной скорости. Поэтому, если пользователь попытается изменить название голосового канала в третий раз, я не получу никакой ошибки на консоли, и discord js поставит этот запрос в очередь позже и сделает это через 10 минут. Но пользователь получает эту ошибку в discord: This interaction failed
.
Я хочу проверить, было ли ограничение скорости для моего запроса, и если да, не отправляйте запрос и просто ответьте пользователю. Возможно ли это?
Ответ №1:
Нет встроенной функциональности, которая могла бы справиться с ситуацией так, как вы хотите, но проблема решается с помощью обычного старого JavaScript. Например, вы можете использовать целое число, чтобы указать, сколько раз использовалась команда, и использовать функцию setTimeout (), чтобы уменьшить ее через 10 минут после вызова команды. Таким образом, вы можете проверить, равно ли значение int 2, и в этом случае вы пропустите .setName().
Несомненно, существуют и другие способы реализации такого же или аналогичного поведения, но, отвечая на ваш вопрос, к сожалению, библиотека discordjs/voice не предоставляет простого способа сделать это.