DiscordJS - выдать роль пользователю
Всем привет, мне каким то образом нужно выдать роль пользователю но понять как это сделать я не могу, просьба помочь разобраться.
const events = {
MESSAGE_REACTION_ADD: 'messageReactionAdd',
MESSAGE_REACTION_REMOVE: 'messageReactionRemove',
};
bot.on('raw', async event => {
// `event.t` is the raw event name
if(event.t == 'MESSAGE_REACTION_REMOVE' || event.t == 'MESSAGE_REACTION_ADD') {
const { d: data } = event;
const user = await bot.users.fetch(data.user_id);
//const channel = bot.channels.cache.get(data.channel_id);
// if the message is already in the cache, don't re-emit the event
const message = await bot.channels.cache.get(data.channel_id).messages.fetch(data.message_id);
//console.log(message.reactions.message);
const emoji = data.emoji.name;
// This gives us the reaction we need to emit the event properly, in top of the message object
const reaction = message.reactions.cache.get(emoji);
//console.log(message);
bot.emit(events[event.t], reaction, user);
// custom emojis reactions are keyed in a `name:ID` format, while unicode emojis are keyed by names
// if you're on the master/v12 branch, custom emojis reactions are keyed by their ID
}
});
bot.on('messageReactionAdd', (reaction, user) => {
if (reaction.message.id == "772763833479069708" || reaction.message.id == "772762865169727528") {
var message = reaction.message;
if (reaction.emoji.name == "✅") {
//user.setVoiceChannel("772762092096192543");
var role = message.guild.roles.cache.find(role => role.id === "772867338470293534");
user.send('Вы подтвердили свою личность теперь вы авторизированный ✅ пользователь!')
//console.log(reaction);
}
if (reaction.emoji.name == "?") {
let myRole = message.guild.roles.cache.get("772867093023555605");
user.send("Вам была выдана роль - Leader");
}
if (reaction.emoji.name == "?") {
let myRole = message.guild.roles.cache.get("772866912551174195");
user.send("Вам была выдана роль - Player");
}
}
});
bot.on('messageReactionRemove', (reaction, user) => {
if (reaction.message.id == "772763833479069708" || reaction.message.id == "772762865169727528") {
var message = reaction.message;
if (reaction.emoji.name == "✅") {
let myRole = message.guild.roles.cache.get("772867338470293534");
user.send("Вы отказались от правил нашего дискорд сервера , група ✅ Verify была удалена!");
}
if (reaction.emoji.name == "?") {
let myRole = message.guild.roles.cache.get("772867093023555605");
user.send("Роль Leader была удалена!");
}
if (reaction.emoji.name == "?") {
let myRole = message.guild.roles.cache.get("772866912551174195");
userr.send("Роль Player была удалена!");
}
}
}); ```
Ответы (2 шт):
Автор решения: Malyshev
→ Ссылка
const myGuilds = bot.guilds.cache.get(event.d.guild_id); var role = "772867093023555605"; myGuilds.members.fetch(userID).then(member => member.roles.add(myGuilds.roles.cache.get(role))).catch(console.error);
Автор решения: Ahegao
→ Ссылка
Здесь, GuildMember - это участник сервера, а RoleResolvable - роль. Все просто :D
<GuildMember>.roles.add(<RoleResolvable>);