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

时间:2018-07-04 19:41:25

标签: javascript discord.js

每当我尝试给新成员一个与我的机器人有关的角色时,我的机器人就会遇到这个问题。这是代码:

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.

我已向bot授予了我的服务器的所有权限,但仍然说它缺少该权限。有提示吗?

2 个答案:

答案 0 :(得分:1)

可以通过给您的漫游器更高的权限来解决此问题。 “ YourBot的角色”必须高于您要赋予的“用户”角色。并请记住检查您的机器人的权限。它可能没有MANAGE_ROLES权限。您只需通过服务器设置中的“角色”选项或在机器人的邀请链接中将权限设置为8即可完成此操作。 (8是ADMINISTRATOR访问,授予所有权限)

答案 1 :(得分:0)

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 !!!  :-( ");

然后,如果仍然失败,请在服务器配置的角色配置页面的角色列表中,确保要尝试分配的角色列在机器人的角色下(您可以拖动角色以对其重新排序。

像您一样,我已经赋予了我的漫游器角色所有特权,但它仍然无法正常工作。然后,我只是将我的机器人程序的角色拖到了我想要自动授予的角色之上,并且成功了!!!

如果您有兴趣,请输入some more detailed code on how to add a role to a member here