如何检查用户是不是被禁止?

Posted

技术标签:

【中文标题】如何检查用户是不是被禁止?【英文标题】:How do I check if a user is banned or not?如何检查用户是否被禁止? 【发布时间】:2019-11-06 00:14:51 【问题描述】:

我已经设法使 unban 命令起作用,但是现在我需要创建一个条件以避免错误,并且如果用户在禁止列表中,则需要将 unban 代码放入条件中,但我不知道如何在互联网上看到任何东西。

【问题讨论】:

This 可能会有所帮助 【参考方案1】:

您可以使用Guild.fetchBans() 检索被禁止用户的Collection。请记住,此方法返回一个Promise。然后,您可以使用Collection.find() 搜索集合。

例子:

// Async context needed for 'await' (meaning this must be within an async function).
// Assuming 'message' is a Message within the guild.

try 
  const banList = await message.guild.fetchBans();

  const bannedUser = banList.find(user => user.id === 'someID');

  if (bannedUser) await message.channel.send(`$bannedUser.tag is banned.`);
  else await message.channel.send('That user is not banned.');
 catch(err) 
  console.error(err);

【讨论】:

感谢这帮助我解决了我一直遇到的问题。非常感谢!【参考方案2】:

由于 Discord.js 的软件包最新更新而导致的更新。确定用户是否被禁止的新方法与之前的方法类似,但您现在需要说明:

const targetId = banList.get(guildmemberID).user

“guildmemberID”是我的常量,这意味着你可以用任何你想要的东西替换它,就像这样:

const guildUser = args[0]

“args[0]”会根据您的目标而有所不同。将所有内容放在一起后,您的代码可能类似于以下内容:

const guildmemberID = args[0]

try 
  const banList = await message.guild.fetchBans();
  const targetId = banList.get(guildmemberID).user

                      if(targetId) 
                        await message.guild.members.unban(targetId);
                        await message.channel.send('This user has been unbanned!');
                       else 
                          await message.channel.send('This user is not banned')
                      
 catch (err) 
   console.log(err);

请记住,如果 try/catch 块不在异步函数中,您将无法使用它。

希望对你有帮助!

【讨论】:

以上是关于如何检查用户是不是被禁止?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查成员是不是可以在 discord.js v12 中被踢/禁止?

当规则禁止除用户之外的任何人阅读时,检查 Firestore 用户是不是存在

如何检查用户是否允许或禁止Facebook身份验证 - Firebase中的电子邮件

检查用户名是不是被使用 - PassportJS

如何在 Laravel 中的 Vue 组件的登录页面上显示用户被禁止的消息

如何检查 HealthKit 是不是已被授权