#javascript #node.js #discord #discord.js
#javascript #node.js #Discord #discord.js
Вопрос:
Я создал команду add role для своего бота, проблема в том, что любой, у кого есть роль mod, может злоупотреблять ботом, чтобы получить более высокую роль, например, роли для владельца, можете ли вы, ребята, поделиться кодом для добавления к моей текущей?
if (command === "addrole") {
if (
!message.member.roles.cache.some((r) =>
["Administrator", "Moderator"].includes(r.name)
)
)
return message.reply("Sorry, you don't have permissions to add roles!");
let member = message.mentions.members.first();
let role = message.mentions.roles.first();
if (!member)
return message.reply("Please mention a valid member of this server");
if (!role) return message.reply("please mention a valid role of this server");
member.roles.add(role);
return message.reply(
` ${role} has successfully been added to ${member.user.tag}`
);
}
Ответ №1:
Вы можете использовать Role.comparePositionTo()
const highest = member.roles.highest; // this is the members highest role
// if role is higher or equal to highest role
if(highest.comparePositionTo(role) <= 0)
return message.channel.send('You cannot add roles equal/higher to that member's highest role')
Комментарии:
1. отклонение необработанного обещания: роли не определены
2. Я думаю, это означает, что есть проблема с
member
переменной.3. что вы предлагаете мне сделать?
4. @peter23 Я думаю, это потому, что вы скопировали код как raw и не внесли коррективы.
member
Свойство естьundefined
, потому что это неdefined
. Я думаю, что вы хотели изменитьmember
в этом ответе наmessage.member
. Это должно устранить проблему.5. На самом деле, они определили
member
в своем коде какmessage.mentions.members.first()
.