首页 > 解决方案 > discord.js 角色创建但没有信息

问题描述

我目前正在编写一个函数,该函数将创建一个新的用户角色,在发出命令的用户之后分配一个随机颜色和名称。代码如下:

            message.guild.createRole({
              data: {
                name: 'Super Cool People',
                color: 'BLUE',
              },
              reason: 'we needed a role for Super Cool People',
            })
              .then(console.log)
              .catch(console.error);

正如你们中的一些人可能知道的那样,它直接在 CreateRole 的文档之外。但是,我遇到的问题是它成功创建了一个角色,但是角色的名称是“新角色”,而不是上面指定的名称,并且角色的颜色不受此影响。日志显示:

2020-04-16T23:01:35.133373+00:00 app[worker.1]: id: '700481043597099059',
2020-04-16T23:01:35.133373+00:00 app[worker.1]: name: 'new role',
2020-04-16T23:01:35.133374+00:00 app[worker.1]: color: 0,
2020-04-16T23:01:35.133374+00:00 app[worker.1]: hoist: false,
2020-04-16T23:01:35.133374+00:00 app[worker.1]: position: 1,
2020-04-16T23:01:35.133374+00:00 app[worker.1]: permissions: 104324673,
2020-04-16T23:01:35.133374+00:00 app[worker.1]: managed: false,
2020-04-16T23:01:35.133374+00:00 app[worker.1]: mentionable: false

权限是默认的,这里没什么特别的。有权访问此命令的用户已经拥有从更高级别角色分配的足够权限。但是,问题在于未按预期命名特定角色并且未分配颜色。使用 message.guild.createRole 似乎适合我正在使用的边界,因为它在消息等待异步调用中。为什么是这样?

标签: discorddiscord.js

解决方案


您的解决方案应该很简单,您可以通过使用RANDOM作为值来随机化颜色,您可以使用 GuildMember 的用户名作为角色

message.guild.createRole({
                name: message.author.username,
                color: 'RANDOM',
            })
              .then(console.log)
              .catch(console.error);

推荐阅读