簡體   English   中英

如果沒有靜音時間,discord.js 不能將成員靜音 10m

[英]discord.js can't mute a member for 10m if there's no mute time

如果有人沒有指定時間,我的機器人如何將某人靜音 10m 但這里發生的情況是沒有時間靜音,時間立即結束,沒有時間:

client.on('message', async message => {
    if (!message.content.startsWith(prefix) || message.author.bot) return;
    const args = message.content.slice(prefix.length).trim().split(/ +/g);
    const command = args.shift().toLowerCase();
    if(command === 'mute') {
        // !mute @user 1s/m/h/d
        message.delete().catch();
        const tomute = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
        const rule = message.guild.roles.find(r => r.name === 'member');
        const mutetime = args[1];
        let muterole = message.guild.roles.find(c => c.name === 'muted');

        if(!muterole) {
            try{
                muterole = await message.guild.createRole({
                    name: 'muted',
                    color: '#000000',
                    permissions:['MUTE_MEMBERS', 'MANAGE_ROLES_OR_PERMISSIONS', 'SEND_MESSAGES', 'ADD_REACTIONS'],
                });
                message.guild.channels.forEach(async (channel) => {
                    await channel.overwritePermissions(muterole, {
                        SEND_MESSAGES: false,
                        ADD_REACTIONS: false,
                        MANAGE_ROLES_OR_PERMISSIONS: false,
                    });
                });
            }
            catch(e) {
                console.log(e.stack);
            }
        }
        if(!mutetime) {
            tomute.removeRole(rule.id);
            setTimeout(function() {
                tomute.removeRole(muterole.id).then(() => {
                    tomute.addRole(rule.id);
                    message.channel.send('```Mute time has ended for ' + `${tomute.user.tag} with id : ${tomute.id}` + '```');
                });
            }, ms(600000));
        }
... the rest of the code

謝謝

只需使用 OR 運算符

// check if args[1] is valid
const mutetime = args[1] && ms(args[1]) || 600000;

如果靜音時間,您沒有顯示代碼,但我猜它類似於 if 語句,而不是現在您甚至不需要 if 語句

tomute.removeRole(rule.id);
setTimeout(function () {
    tomute.removeRole(muterole.id).then(() => {
        tomute.addRole(rule.id);
        message.channel.send('```Mute time has ended for ' + `${tomute.user.tag} with id : ${tomute.id}` + '```');
    });
}, mutetime);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM