【问题标题】:is it possible to ckeck if a member has administrator permission是否可以检查成员是否具有管理员权限
【发布时间】:2021-02-15 22:26:54
【问题描述】:

是否可以在for 循环中检查不和谐服务器的成员是否具有管理员权限? bcz 因为我想在我和我的朋友的服务器中禁止所有在我的机器人下扮演角色的人。我该怎么做?

在我的代码中

else if (message.content === `${prefix}lmao`)  {
    message.guild.members.cache.map(member => member.ban({reason: 'lol u got banned'}));

但我得到一个错误,错误说:

UnhandledPromiseRejectionWarning: DiscordAPIError: Missing Permissions
at RequestHandler.execute (C:\Users\dasjo\OneDrive\Desktop\Discord Bot\node_modules\discord.js\src\rest\RequestHandler.js:154:13)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async RequestHandler.push (C:\Users\dasjo\OneDrive\Desktop\Discord Bot\node_modules\discord.js\src\rest\RequestHandler.js:39:14)

我该怎么做,我的机器人会禁止所有在我的机器人下担任角色的人?

【问题讨论】:

  • map 用于创建新数组。我推荐使用forEach
  • 好的,谢谢你,但错误仍然存​​在......

标签: javascript node.js discord.js


【解决方案1】:

禁止公会中的大量成员不是一个好主意

然而,

您可以使用GuildMembers#forEach根据条件禁止多个成员。根据您的问题,您想禁止那些没有ADMINISTRATOR

的人

使用Promise#catch 检测失败的禁令。 Promise#then 只会在封禁成功时触发

const GuildMembers = message.guild.members.cache;

GuildMembers.forEach(member => {
   if (!member.hasPermission('ADMINISTRATOR')) {
      member.ban({ reason: 'lol u got banned' })
         .then(_ => {
            message.channel.send(`${member.displayName} successfully banned`);
         })
         .catch(err => {
            message.channel.send(`Failed to ban ${member.displayName}`);
            console.log(err);
         });
   }
});

【讨论】:

    猜你喜欢
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    相关资源
    最近更新 更多