проверьте, прошел ли тайм-аут - PullRequest
0 голосов
/ 01 августа 2020

итак, я получил этот временный код для разногласий, и ему нужно проверить, прошло ли время, в течение которого я сказал боту отключать звук, этот код:

//tempmute
client.on('message', message => {
    let args = message.content.substring(prefix.length).split(" ");
    let role = message.guild.roles.cache.find(role => role.name === "Muted");
    var member  = message.guild.member(message.mentions.users.first() || message.guild.members.cache.get(args[1]));
    switch (args[0]) {
        case 'mute':    
setTimeout(function(){
                    member.roles.remove(role.id);
                    message.channel.send(`${member.user}` + ' has now been unmuted.')
                });
            break;

проблема в том, что он немедленно включает https://gyazo.com/9925922747ef3104ae8e146d47781b53, показанный на этом снимке экрана, я новичок в кодировании и разногласиях js и не знаю всех команд и прочего

Ответы [ 2 ]

1 голос
/ 01 августа 2020

Вам нужно добавить свой таймер в setTimeout

// if your input is in minutes you have to transform into millisecs 
var mute_time = parseInt(args[2]) * 60000;

setTimeout(() => {
     member.roles.remove(role.id);
     message.channel.send(`${member.user}` + ' has now been unmuted.')
}, mute_time);

Не стесняйтесь принимать в качестве ответа, если он вам поможет:)

0 голосов
/ 01 августа 2020

Это потому, что вы не указали время для setTimeout в качестве второго параметра

Попробуйте

setTimeout(function(){
    member.roles.remove(role.id);
    message.channel.send(`${member.user}` + ' has now been unmuted.')
}, 3000); // Call the function after 3000ms

...