检查消息发件人是否具有特定角色
Check if the message sender has a specific role
我是 Discord 机器人编码的新手,我想创建一个命令,机器人仅在消息发件人具有特定角色时才回复。
根据 discord.js documentation 我必须使用 GuildMemberRoleManager.cache
。遗憾的是,它不起作用。
整个命令如下所示:
client.on('messageCreate', (message) => {
if (
message.content.toLowerCase() === prefix + 'test' &&
GuildMemberRoleManager.cache.has(AdminRole)
)
message.reply('test');
});
定义变量,使您新手容易理解
const guild = message.guild.id;
const role = guild.roles.cache.get("role id");
const cmduser = message.author;
const member = await guild.members.fetch(cmduser.id);
并使 if 语句像
if(member.roles.cache.has(role.id)) {
return message.channel.send("test")
}
如果你想让机器人检查用户是否有管理员权限,那么
message.member.hasPermission('ADMINISTRATOR')
上的所有 perm 标志
所以根据你的代码它将是
const guild = message.guild.id;
const role = guild.roles.cache.get("role id");
const cmduser = message.author;
const member = await guild.members.fetch(cmduser.id);
client.on("messageCreate",(message) => {
if(message.content.toLowerCase() === prefix + "test" && member.roles.cache.has(role.id))
message.reply("test")
})
你应该得到作者的角色。只有成员有角色,所以你需要让作者成为成员使用 message.member
. message.member
returns a GuildMember
and GuildMember
s have a roles
属性 that returns a GuildMemberRoleManager
(你在原来的 post).
其cache
property is a collection of the roles of this member, so you can use its has()
检查用户是否具有管理员角色的方法:
client.on('messageCreate', (message) => {
let adminRole = 'ADMIN_ROLE';
let isAdmin = message.member.roles.cache.has(adminRole);
if (message.content.toLowerCase() === prefix + 'test' && isAdmin)
message.reply('test');
});
我是 Discord 机器人编码的新手,我想创建一个命令,机器人仅在消息发件人具有特定角色时才回复。
根据 discord.js documentation 我必须使用 GuildMemberRoleManager.cache
。遗憾的是,它不起作用。
整个命令如下所示:
client.on('messageCreate', (message) => {
if (
message.content.toLowerCase() === prefix + 'test' &&
GuildMemberRoleManager.cache.has(AdminRole)
)
message.reply('test');
});
定义变量,使您新手容易理解
const guild = message.guild.id;
const role = guild.roles.cache.get("role id");
const cmduser = message.author;
const member = await guild.members.fetch(cmduser.id);
并使 if 语句像
if(member.roles.cache.has(role.id)) {
return message.channel.send("test")
}
如果你想让机器人检查用户是否有管理员权限,那么
message.member.hasPermission('ADMINISTRATOR')
上的所有 perm 标志
所以根据你的代码它将是
const guild = message.guild.id;
const role = guild.roles.cache.get("role id");
const cmduser = message.author;
const member = await guild.members.fetch(cmduser.id);
client.on("messageCreate",(message) => {
if(message.content.toLowerCase() === prefix + "test" && member.roles.cache.has(role.id))
message.reply("test")
})
你应该得到作者的角色。只有成员有角色,所以你需要让作者成为成员使用 message.member
. message.member
returns a GuildMember
and GuildMember
s have a roles
属性 that returns a GuildMemberRoleManager
(你在原来的 post).
其cache
property is a collection of the roles of this member, so you can use its has()
检查用户是否具有管理员角色的方法:
client.on('messageCreate', (message) => {
let adminRole = 'ADMIN_ROLE';
let isAdmin = message.member.roles.cache.has(adminRole);
if (message.content.toLowerCase() === prefix + 'test' && isAdmin)
message.reply('test');
});