#javascript #node.js #discord #discord.js
#javascript #node.js #Discord #discord.js
Вопрос:
Как предоставить разрешения определенному каналу по команде? Извините, я новичок в discord.js поэтому любая помощь будет оценена.
const Discord = require('discord.js');
module.exports = {
name: 'addrole',
run: async (bot, message, args) => {
//!addrole @user RoleName
let rMember =
message.guild.member(message.mentions.users.first()) ||
message.guild.members.cache.get(args[0]);
if (!rMember) return message.reply("Couldn't find that user, yo.");
let role = args.join(' ').slice(22);
if (!role) return message.reply('Specify a role!');
let gRole = message.guild.roles.cache.find((r) => r.name === role);
if (!gRole) return message.reply("Couldn't find that role.");
if (rMember.roles.has(gRole.id));
await rMember.addRole(gRole.id);
try {
const oofas = new Discord.MessageEmbed()
.setTitle('something')
.setColor(`#000000`)
.setDescription(`Congrats, you have been given the role ${gRole.name}`);
await rMember.send(oofas);
} catch (e) {
message.channel.send(
`Congrats, you have been given the role ${gRole.name}. We tried to DM `
);
}
},
};
Комментарии:
1. discordjs.guide/популярные темы/… посмотрите в разделе перезапись канала
Ответ №1:
Вы можете использовать GuildChannel.updateOverwrites()
для обновления разрешений на канале.
// Update or Create permission overwrites for a message author
message.channel.updateOverwrite(message.author, {
SEND_MESSAGES: false
})
.then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))
.catch(console.error);
(Из примера в discord.js
документах)
Используя эту функцию, вы можете указать, User
или Role
Object
или ID
из которых обновлять разрешения (в вашем случае вы можете использовать gRole
).
Затем вы можете перечислить разрешения на обновление, за которыми следует true
разрешить или false
отклонить.
Вот полный список флагов разрешений, которые вы можете использовать
Ответ №2:
Этот метод устарел и не работает на V13 новый способ делает это:
channel.permissionOverwrites.edit(role, {SEND_MESSAGES: true }
channel.permissionOverwrites.edit(member, {SEND_MESSAGES: true }