Discord.js 解禁所有用户

Posted

技术标签:

【中文标题】Discord.js 解禁所有用户【英文标题】:Discord.js Unban all users 【发布时间】:2020-11-19 09:50:54 【问题描述】:

您好,我正在尝试在 discord.js 中创建一个命令来取消禁止所有被禁止的用户,但是当我执行 ub all 命令时,它说取消禁止所有但没有取消禁止任何人,这是我目前的代码

    bot.on('message', message =>
    const member = message.member; 
    switch(message.content.toLowerCase())
        case (PREFIX + "ub all"):
    if(member.hasPermission('ADMINISTRATOR')) 
        async function ubAll()
        const users = await message.guild.fetchBans()
        for (const user of users.array()) 
        await message.guild.unban(user)
        
    
message.reply("Unbanned all users from the server.")
        
    if(!member.hasPermission('ADMINISTRATOR'))
        message.reply("You do not have enough permissions for this command!")
    
    
)

【问题讨论】:

您使用的是哪个版本的 Discord JS?您可以在package.json 中查看。 我正在使用 discord.js: 12.2.0 【参考方案1】:

unban 不是guild 的方法。您需要使用guild.members.unban()


bot.on("message", message => 
    switch(message.content.toLowerCase()) 
        case (PREFIX + "ub all"):
            if (message.member.hasPermission("ADMINISTRATOR")) 
                message.guild.fetchBans().then(bans => 
                    if (bans.size == 0) message.reply("There are no banned users."); throw "No members to unban.";
                    bans.forEach(ban => 
                        message.guild.members.unban(ban.user.id);
                    );
                ).then(() => message.reply("Unbanned all users.")).catch(e => console.log(e))
             else message.reply("You do not have enough permissions for this command.")
        break;
    
);

【讨论】:

【参考方案2】:
bot.on('message', message =>
    const member = message.member; 
    switch(message.content.toLowerCase())
    case (PREFIX + "ub all"):
        if(member.hasPermission('ADMINISTRATOR'))
            message.guild.fetchBans().forEach((fB)=>
                message.guild.members.unban(fB.user.id);
            )
            // All Users get unbanned
         else 
            // User does not have permission.
        
    
)

我强烈建议您查看 Discord.JS v12 文档。 https://discord.js.org/#/docs/main/stable/general/welcome

【讨论】:

【参考方案3】:

您正在声明ubAll 函数,但实际上并未调用它。 您也可以将最后的if 替换为else

bot.on("message", async (message) => 
  const member = message.member;
  switch (message.content.toLowerCase()) 
    case PREFIX + "ub all":
      if (member.hasPermission("ADMINISTRATOR")) 
        const users = await message.guild.fetchBans();
        for (const user of users.array()) 
          await message.guild.unban(user);
        
        message.reply("Unbanned all users from the server.");
       else
        message.reply("You do not have enough permissions for this command!");
    
);

【讨论】:

以上是关于Discord.js 解禁所有用户的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 解禁命令

使用 discord.js v12 解禁命令

discord.js 如何使用代码撤销对被禁止用户的禁令?

解禁命令 |不和谐.js

如何使用命令解禁用户?

Discord.js - 删除所有包含角色的用户的命令