【问题标题】: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.`)
  }
}

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

【问题讨论】:

    标签: discord discord.js


    【解决方案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; 相同,否则很好回答。
    • 哦,很高兴知道谢谢,我现在从我的回答中删除了。
    • 我试过了,它仍然让机器人扮演这个角色。
    • 我最终修复了这个错误,显然是因为我安装了一个软件包。
    猜你喜欢
    • 1970-01-01
    • 2020-10-07
    • 2022-01-10
    • 1970-01-01
    • 2021-09-20
    • 2021-04-09
    • 2018-10-11
    • 1970-01-01
    • 2021-04-28
    相关资源
    最近更新 更多