Javascript 尝试在成员加入服务器时添加角色

Javascript 尝试在成员加入服务器时添加角色,javascript,discord.js,Javascript,Discord.js,每当我尝试在我的bot中给一个新成员一个角色时,我的bot就会出现这个问题。代码如下: bot.on('guildMemberAdd', member => { member.addRole(member.guild.roles.find("name","User")); }); 以下是新成员加入时出现的错误: (node:8308) UnhandledPromiseRejectionWarning: DiscordAPIError: Missing Permissions at

每当我尝试在我的bot中给一个新成员一个角色时,我的bot就会出现这个问题。代码如下:

bot.on('guildMemberAdd', member => {
   member.addRole(member.guild.roles.find("name","User"));
});
以下是新成员加入时出现的错误:

(node:8308) UnhandledPromiseRejectionWarning: DiscordAPIError: Missing Permissions
at item.request.gen.end (C:\Users\REEE\Downloads\bot\node_modules\discord.js\src\client\rest\RequestHandlers\Sequential.js:71:65)
at then (C:\Users\REEE\Downloads\bot\node_modules\snekfetch\src\index.js:215:21)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
(node:8308) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
(node:8308) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
(节点:8308)未处理的PromisejectionWarning:DiscordAPIError:缺少权限
在item.request.gen.end(C:\Users\REEE\Downloads\bot\node\u modules\discord.js\src\client\rest\RequestHandlers\Sequential.js:71:65)
当时(C:\Users\REEE\Downloads\bot\node\u modules\snekfetch\src\index.js:215:21)
在
在进程中。_tick回调(内部/process/next_tick.js:188:7)
(节点:8308)未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。(拒绝id:2)
(节点:8308)[DEP0018]弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。

我已经给了我的机器人对我的服务器的所有权限,但它仍然说它缺少这些权限。有什么提示吗?

这个问题可以通过授予您的机器人比您将授予的权限更高的权限来解决。“YourBot'sRole”必须高于您将要赋予的“用户”角色。记住检查你的机器人的权限。它可能没有“管理\u角色”权限。您只需通过服务器设置中的“角色”选项或在bot的邀请链接中将权限设置为8即可完成此操作。(8是管理员访问权限,授予所有权限)

似乎
member.addRole(someRole)
不再适用于最新版本的Discord.js,尽管文档中仍然充满了它

请使用
member.roles.add(someRole)

此外,您还可以检查您的机器人是否可以通过以下方式管理角色:

if (! member.guild.me.hasPermission('MANAGE_ROLES'))
    return console.error("I don't have the right to manage roles !!!  :-( ");
然后,如果仍然失败,请在服务器配置的“角色配置”页面中的“角色列表”中,确保您尝试赋予的角色列在bot的角色下(您可以拖动角色以重新排序)

和你一样,我已经将所有特权授予了我的机器人角色,但它仍然无法工作。然后我简单地将我的机器人角色拖到我想要自动授予的角色之上,它成功了


如果您感兴趣,我会把它放在上面。

在我看来,问题在于您的API没有适当的权限,而不是您的服务器中的bot。为了正确地调试这一点,我们需要访问代码中的node.js部分,特别是下一个_tick.js行188和index.js行215尝试将您的bot角色设置为高于您想要分配给用户的角色。