使用我的 Discord 机器人分配角色的一些问题

时间:2021-07-23 23:11:54

标签: javascript discord.js

我的机器人将角色分配给在特定频道中写作的用户时遇到了一些问题,但我无法弄清楚问题是什么。这是我的代码:

client.on('message', (message) => {
  const menssage = message.content.toLocaleLowerCase();
  // First i want to limit my channel
  if (message.channel.id === '835461110349824021') {
    // Now if my user writes on this channel
    if (menssage) {
      // My bot will give him a role automatically
      message.author.roles.add('868240684346376262');
    }
  }
});

1 个答案:

答案 0 :(得分:1)

您必须对代码进行一些修复。

首先,是如何为用户分配角色。 User 中的 GuildMemberdiscord.js 之间的区别在于 GuildMember 特定于每个 guild(或服务器),而 {{1 }} 是用户本身,没有任何 User 特定的内容。

在您的代码中,您似乎使用这一行添加了角色:

guild

这是错误的,因为 message.author.roles.add('868240684346376262'); author,而不是 User,并且您不能向 GuildMember 添加角色,只能向 User 添加角色,因为角色是特定于公会的。

要解决此问题,您可以简单地将 GuildMember 换成 author 以获得 member 而不是 GuildMember

User

其次,从表面上看,您根本不需要 //gets the member (I replaced "author" with "member") instead of the user message.member.roles.add('868240684346376262'); (也不需要与之关联的 menssage 语句)。除非我弄错了,否则您只需要检查 if 是否来自您想要的特定 message,仅此而已。您可能还有其他未指定的意图,例如检查用户是否写了特定短语,然后随意将其保留在您的代码中。