Discord.js v12 中的 role.setPosition()

Posted

技术标签:

【中文标题】Discord.js v12 中的 role.setPosition()【英文标题】:role.setPosition() in Discord.js v12 【发布时间】:2021-01-24 23:43:56 【问题描述】:

在 Discord.js v11 中,您可以使用 guild.setRolePosition( role: '123456789012345678', position: 1 ); 设置特定角色的位置。如何使用新的role.setPosition() 方法指定角色(例如“静音”)?它似乎只接受一个职位编号和几个选项,如options.relative。我想要的是在roleCreate() 事件中为角色管理员、朋友、静音分配一个角色位置。我知道 roleCreate 事件仅在创建角色时运行,但不知何故 'position' 参数不适用于guild.roles.create。

【问题讨论】:

【参考方案1】:

GuildRoleManager.create() 实际上可以与position 参数配合使用,您只需将其作为属性添加到数据对象。

guild.roles.create(
  data: 
    name: 'Role Name',
    // any other options...
    position: 1
  ,
);

如果您仍想使用role.setPosition(),则必须事先获取角色对象,然后调用该对象的方法。

// <guild> is a placeholder for the guild object

// get the role by id
const role = <guild>.roles.cache.get('Role ID');

// get role by name (or other property)
const role = <guild>.roles.cache.find((role) => role.name === 'Role Name');

role.setPosition(1);

【讨论】:

感谢您的回答。但是,我尝试了这个,但它仍然给我一个错误。这与我在 GuildManager.create() 中使用位置参数时遇到的错误相同。所以我猜 roleCreate 方法也不起作用。如果你想知道我如何使用 GuildManager.create(),我在几天前问了一个关于它的问题。你可以在这里找到它:***.com/questions/64201709/… 这是不可能的,因为机器人无法将角色的位置设置为高于自身。 是的,你是对的,但我希望管理员角色出现在机器人之后。所以这是...位置2?然后静音角色将是 3,等等。但这似乎不起作用并给出错误。如果我提高数字,它只会打乱顺序。我不知道该怎么办了。 :(

以上是关于Discord.js v12 中的 role.setPosition()的主要内容,如果未能解决你的问题,请参考以下文章

消息嵌入中的 Discord.js v12 图像

如何检查 discord.js v12 中的第二个参数是不是为空

如何添加 ID 保存在 JSON 文件 discord.js v12 中的角色?

机器人不响应命令(discord.js v12)

discord.js v12 Discord.EvaluatedPermissions :((

如何定位文件 discord.js v12?