Избегайте ограничения скорости для изменения имени голосового канала discord js 13

#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 не предоставляет простого способа сделать это.