gpt4 book ai didi

javascript - 如何使用 Discord.js 检查消息作者是否具有管理员 Angular 色?

转载 作者:行者123 更新时间:2023-11-30 13:57:37 26 4
gpt4 key购买 nike

我正在构建一个 Discord 机器人,我想要一个 if 语句,只有当消息作者在公会中具有管理员 Angular 色时才会继续。

我试过拥有特定于 Angular 色的权限,但这意味着机器人所在的所有服务器上都必须有完全相同的名称 Angular 色。

如何检查消息作者是否具有管理员 Angular 色? (该 Angular 色具有管理员权限。)

最佳答案

由于管理器的实现,必须修改以下部分代码才能在最新的主要 Discord.js 版本(本次编辑时为 v12)中使用。

这里确实需要解决三个不同的问题。它们都是相关的,但每个都有不同的直接答案。


How do I check if the message author has an Admin role?

因此,将这些结合在一起:

if (message.member.roles.has'roleIDHere')) console.log('User is an admin.');

if (message.member.roles.find(role => role.name === 'Admin')) console.log('User is an admin.');

How do I check if the message author's role has the Administrator permission?

  • 同样,我们需要使用 Message#member 中的 GuildMember。
  • 同样,我们需要使用 GuildMember#roles 集合。
  • 而且...似曾相识...您可以使用 Collection#find() 搜索集合。
  • 这一次,你应该特别检查Role#hasPermission()在谓词函数中。

例如:

if (message.member.roles.find(role => role.hasPermission('Administrator'))) console.log('User is an admin.');

您也可以将此概念应用到任何特定 Angular 色。


这种情况下的最佳方法...

How do I check if the message author has the Administrator permission?

  • 我们继续使用 Message#member 访问 GuildMember。
  • 但是,您可以通过GuildMember#hasPermission() 一次检查成员的所有 权限。方法。

考虑这个简短的例子:

if (message.member.hasPermission('ADMINISTRATOR')) console.log('User is an admin.');

快点吧?


在尝试检查用户是否为管理员之前,请确保检查您的客户端收到的消息不是 DM。 Message#member 当消息未在公会中发送时未定义,尝试使用它的属性将引发错误。

使用此条件,如果消息是 DM,它将停止:

if (!message.guild) return;

关于javascript - 如何使用 Discord.js 检查消息作者是否具有管理员 Angular 色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56926998/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com