我正在尝试创建一个为用户提供角色的命令。它以前可以工作,但不仅仅是给机器人一个角色。
module.exports = {
name: "addevent",
description: "Add the event ping role to a user",
async run(client, message, args) {
const { member } = message;
if (message.member.roles.cache.has('793222158981529621')) {
const { member } = message;
message.channel.send(`${member} You already have this role.`)
}
if (message.channel.id !== '793224633759432755') return;
member.roles.add('793222158981529621')
message.channel.send(`${member} Added the event ping role.`)
}
}
这也发生在我的级别命令上,它应该检查用户的级别。它检查机器人的级别,而不是用户的级别。
答案 0 :(得分:1)
KieSession
我的示例有一个名为 let role = message.guild.roles.cache.find(r => r.name === "Role Name Here");
if (message.channel.id !== 'Channel ID Here') return;
if (message.member.roles.cache.has(role.id)) {
return message.channel.send(`${message.member} You already have this role.`)
}
message.member.roles.add(role);
message.channel.send(`${message.member} Added the event ping role.`);
的变量,它通过名称查找角色,因此您必须在那里提供角色的名称。您使用 role
的 if 语句是可以理解的,并且是仅在一个频道中获得角色的好方法。第二个 if 语句只是询问用户是否已经拥有该角色(不要忘记:在 message.channel.id
中,您必须提供 ID,在这种情况下,使用 .has()
可以轻松完成)。无论如何,如果用户具有该角色,它将发送一条消息并返回。否则,它会将角色添加到用户并发送消息。