命令正在赋予机器人角色

Posted

技术标签:

【中文标题】命令正在赋予机器人角色【英文标题】:Command is giving the bot role 【发布时间】:2021-04-12 15:42:36 【问题描述】:

我正在尝试创建一个赋予用户角色的命令。它以前可以工作,但不仅仅是给机器人一个角色。

module.exports = 
  name: "addevent",
  description: "Add the event ping role to a user",

  async run(client, message, args) 

    const  member  = message;

    if (message.member.roles.cache.has('793222158981529621')) 
      const  member  = message;
      message.channel.send(`$member You already have this role.`)
    

    if (message.channel.id !== '793224633759432755') return;    

    member.roles.add('793222158981529621')

    message.channel.send(`$member Added the event ping role.`)
  

这也发生在我应该检查用户级别的级别命令上。它检查的是机器人的等级,而不是用户的等级。

【问题讨论】:

【参考方案1】:
    let role = message.guild.roles.cache.find(r => r.name === "Role Name Here");

    if (message.channel.id !== 'Channel ID Here') return;

    if (message.member.roles.cache.has(role.id)) 
      return message.channel.send(`$message.member You already have this role.`)
    

    message.member.roles.add(role);
    message.channel.send(`$message.member Added the event ping role.`);

我的示例有一个名为role 的变量,它通过角色的名称查找角色,因此您必须在此处提供角色的名称。您使用 message.channel.id 的 if 语句是可以理解的,并且是仅在一个渠道中获得角色的好方法。第二个 if 语句只是询问用户是否已经拥有该角色(不要忘记:在 .has() 中,您必须提供一个 ID,在这种情况下,使用 role.id 很容易完成)。无论如何,如果用户具有该角色,它将发送一条消息并返回。否则,它将向用户添加角色并发送消息。

【讨论】:

> 我不知道你为什么想让会员成为消息? const member = message; 正在使用 Node.Js 解构。它与const member = message.member; 相同,否则很好回答。 哦,很高兴知道谢谢,我现在从我的回答中删除了。 我试过了,它仍然让机器人扮演这个角色。 我最终修复了这个错误,显然是因为我安装了一个软件包。

以上是关于命令正在赋予机器人角色的主要内容,如果未能解决你的问题,请参考以下文章

我正在尝试让不和谐的机器人根据某人加入服务器后的时间赋予角色

如何使用 discord.py 机器人,在他们加入 VC 时赋予用户角色并在他们离开时将其删除

discord.js - 机器人不会添加角色:TypeError:无法读取未定义的属性“添加”

当用户添加反应 Discord.py 时赋予角色

通过 DM discord 为服务器中的用户赋予角色

Discord Bot如何为自动进入服务器的新用户赋予角色