首页 > 解决方案 > 如何使用命令解禁用户?

问题描述

我正在尝试制定一个解除某人禁令的命令。

我试过了member.unbanmessage.guild.unban现在的, message.guild.members.unban

我不太确定该怎么做。

这是我当前的代码:

    const Discord = require('discord.js');

    module.exports = {
        name: "unban",
        description: "unbans a member from the server",
        
    
        async run (client, message, args) {
    
            if(!message.member.hasPermission("BAN_MEMBERS")) return message.channel.send('You can\'t use that!')
            if(!message.guild.me.hasPermission("BAN_MEMBERS")) return message.channel.send('I don\'t have the permissions.')
    
            const member = message.mentions.members.first();
    
            if(!args[0]) return message.channel.send('Please specify a user');
    
    
    
            
    
            let reason = args.slice(1).join(" ");
    
            if(!reason) reason = 'Unspecified';
    
            message.guild.members.unban(`${member}`, `${reason}`)
            .catch(err => {
                if(err) return message.channel.send('Something went wrong')
            })
    
            const banembed = new Discord.MessageEmbed()
            .setTitle('Member Unbanned')
            .addField('User Unbanned', member)
            .addField('Unbanned by', message.author)
            .addField('Reason', reason)
            .setFooter('Time Unbanned', client.user.displayAvatarURL())
            .setTimestamp()
    
            message.channel.send(banembed);
    
    
        }
    }

我的命令提示符没有任何错误,但这就是不和谐中显示的内容:图像和用户仍然未被禁止。

标签: discord.js

解决方案


您必须将UserResolvable传递给该.unban()方法。将member对象放在模板字符串( ${member}) 中会将其转换为提及用户的字符串,并且不起作用。

你这样做的方式也可能无法正常工作,因为用户GuildMember在被服务器禁止时不会被提及。

要解决这个问题,您可以更改您的命令,以便通过他们的 ID 来取消禁止用户 ( !unban 873478935468795467)。代码将如下所示:

message.guild.members.unban(id)

id是一个包含 id 的字符串)

我强烈建议您查看文档。他们为这些情况提供了很好的例子。


推荐阅读