我正在制造一个Discord JS机器人,该机器人应该具有一个静音功能,该功能将一个角色分配给成员,这样他们就不能发短信了。
我试图在网上寻找如何创建角色(甚至是Discord JS文档),但无济于事。
我已经尝试过下面的代码,但是它不起作用(直接从https://discord.js.org/#/docs/main/stable/class/RoleManager?scrollTo=create中拉出)。
guild.roles.create({
data: {
name: 'Super Cool People',
color: 'BLUE',
},
reason: 'we needed a role for Super Cool People',
})
.then(console.log)
.catch(console.error);
谢谢!
答案 0 :(得分:1)
我很确定在您的代码中未定义guild
。 roles
是Guild
的属性,因此您需要一个Guild
类来访问RoleManager
并创建一个Role
。
如果代码是在命令中执行的,则可以使用message.guild
来获取Guild
,否则,您需要手动获取Guild
。
这是一个简单的用法示例:
client.on("message", message => {
if (message.author.bot) return false;
if (message.author.id !== message.guild.ownerID) return false;
message.guild.roles.create({
data: {
name: "Muted",
permissions: [],
color: "RED"
},
reason: "Created the mute role."
}).catch(console.log)
});
const Guild = client.guilds.cache.get("1234567890123456789");
Guild.roles.create({
data: {
name: "Muted",
permissions: [],
color: "RED"
},
reason: "Created the mute role."
}).catch(console.log)
答案 1 :(得分:0)
只要你有一个角色管理器,你就应该根据docs
所以我解决这个问题的建议是看看哪里出了问题。我已经使用 typeScript 中的 createGuild 事件完成了它。这将在机器人加入新公会时创建角色。
client.on('guildCreate', async guild => {
await guild.roles.create({ data: { name: 'roleName' } });
});
另请注意,您需要足够高的权限才能实际创建角色。
ps:在出现错误时提供错误会很有用(完整错误)