我的机器人将角色分配给在特定频道中写作的用户时遇到了一些问题,但我无法弄清楚问题是什么。这是我的代码:
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');
}
}
});
答案 0 :(得分:1)
您必须对代码进行一些修复。
首先,是如何为用户分配角色。 User
中的 GuildMember
和 discord.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
,仅此而已。您可能还有其他未指定的意图,例如检查用户是否写了特定短语,然后随意将其保留在您的代码中。