创建并分配角色 Discord.js
Posted
技术标签:
【中文标题】创建并分配角色 Discord.js【英文标题】:Create and assign role Discord.js 【发布时间】:2021-06-24 00:49:46 【问题描述】:我正在使用 discord.js 创建一个 Discord 机器人,但我不知道如何创建角色并自动分配它。
例如,客户写道:?insc NAME @pseudo1 @pseudo2 @pseudo3
此命令创建角色NAME
,然后创建一个具有channelVoice 和channelText 的类别,只有NAME
可以访问。
目前,这是我的代码。我已经成功地使用 channelVoice 和 channelText 创建了我的类别,而无需私人访问。
module.exports =
name: 'insc',
description: 'Inscription des equipe',
execute(message, args, user)
const PREFIX = require('../config.js');
const name = message.content.replace(`$PREFIX` + this.name, '')
message.guild.roles.create(
data:
name: name,
,
)
message.guild.channels.create(name,
type: 'category',
permissionOverwrites: [
id: message.guild.id,
deny: ['VIEW_CHANNEL'],
// allow: ['VIEW_CHANNEL'], //autorise @everyone à voir ce channel
]
).then(cat =>
message.guild.channels.create(name,
type: 'text',
parent: cat,
permissionOverwrites: [
id: message.guild.id,
deny: ['VIEW_CHANNEL'],
]
)
message.guild.channels.create(name,
type: 'voice',
parent: cat,
permissionOverwrites: [
id: message.guild.id,
deny: ['VIEW_CHANNEL'],
]
)
)
return message.channel.send(`L'inscription à bien été effetué pour l'équipe $name`);
// return message.channel.send(`$name existe déjà`)
【问题讨论】:
【参考方案1】:roles.create
返回一个承诺,因此您需要先解决它以获取创建角色的 ID。您可以在 permissionOverwrites
中将此 ID 用于您的类别和频道。
当您使用channels.create
创建频道时,您可以添加permissionOverwrites
的数组。通过这种方式,您可以告诉 Discord 您希望允许或拒绝谁查看频道。在您的示例中,您尝试拒绝所有人的 VIEW_CHANNEL
权限,这是正确的,您只需在该数组中添加另一个具有新角色 ID 的对象。
在我的示例中,我创建了一个 permissionOverwrites
数组,因此我只需编写一次并将其与类别、文本通道和语音通道一起使用。
另外,如果您想将角色添加到提到的成员,您可以遍历它们并一一添加角色。
查看以下工作示例:
module.exports =
name: 'insc',
description: 'Inscription des equipe',
async execute(message, args, user)
// you already receive the args, the first one is the team name
const name = args[0];
// create role
const role = await message.guild.roles.create( data: name );
const permissionOverwrites = [
// deny access to everyone
id: message.guild.id, deny: ['VIEW_CHANNEL'] ,
// use the role id to allow users with the role to access the channel
id: role.id, allow: ['VIEW_CHANNEL'] ,
];
// add role to mentioned members if there are any
message.mentions.members.each((member) =>
member.roles.add(role.id);
);
// create a category and grab the created channel
const category = await message.guild.channels.create(name,
type: 'category',
permissionOverwrites,
);
message.guild.channels.create(name,
type: 'text',
parent: category,
permissionOverwrites,
);
message.guild.channels.create(name,
type: 'voice',
parent: category,
permissionOverwrites,
);
return message.channel.send(`L'inscription à bien été effetué pour l'équipe $name`);
,
;
【讨论】:
何,谢谢各位。这是一个成功的。它从我的脚上取下了一根大刺。谢谢x1000 太好了,很高兴能帮上忙以上是关于创建并分配角色 Discord.js的主要内容,如果未能解决你的问题,请参考以下文章