Role Channel Overwrite Add/Remove

This commit is contained in:
Benjamin Kyd
2020-07-22 20:40:09 +01:00
parent 802a578535
commit e088685895
2 changed files with 63 additions and 2 deletions

View File

@@ -253,11 +253,71 @@ async function ChannelUpdate(channel, oldchannel)
if (channel.permissionOverwrites != oldchannel.permissionOverwrites)
{
channel.permissionOverwrites.forEach(e => console.log(e));
const oldperm = oldchannel.permissionOverwrites;
const newperm = channel.permissionOverwrites;
delete oldperm.baseObject;
delete newperm.baseObject
delete oldperm.limit
delete newperm.limit
// oldperm and newperms are collections which
// extend map which is a pretty generic unordered
// map (in js basically an array lmao)
// Role overwrite added
for (perm of newperm)
{
const RoleID = perm[0];
// role overwrite already exists
if (oldperm.get(RoleID)) continue;
const Role = DiscordHelpers.GetGuildRole(channel.guild, RoleID);
let embed = new DiscordEmbed({
title: 'Channel Overwrite Created',
fields: [
{ name: 'Channel', value: channel.mention, inline: true },
{ name: 'Role Overwrite', value: Role.name, inline: true },
],
timestamp: new Date(),
footer: { text: `ID: ${channel.id}` }
});
embed.colour('#42A832');
embed.url('https://logori.xyz');
Discord.bot.createMessage(FallbackChannel, {embed: embed.sendable});
return;
}
// Role overwrite removed
for (perm of oldperm)
{
const RoleID = perm[0];
// role overwrite already exists
if (newperm.get(RoleID)) continue;
const Role = DiscordHelpers.GetGuildRole(channel.guild, RoleID);
let embed = new DiscordEmbed({
title: 'Channel Overwrite Removed',
fields: [
{ name: 'Channel', value: channel.mention, inline: true },
{ name: 'Role Overwrite', value: Role.name, inline: true },
],
timestamp: new Date(),
footer: { text: `ID: ${channel.id}` }
});
embed.colour('#E0532B');
embed.url('https://logori.xyz');
Discord.bot.createMessage(FallbackChannel, {embed: embed.sendable});
return;
}
// find the overwrites that have changed, there is no chance of a new overwrite
// or a deleted one, a diff must be constructed
// TODO : make an ambigous role overwrite diff
}

View File

@@ -1,3 +1,4 @@
module.exports.IsUserAdmin = (member) => member.permission.has('administrator') || member.id == process.env.BOT_OWNER;
module.exports.GetGuildCatatory = (guild, catid) => guild.channels.find(c => c.id == catid);
module.exports.GetGuildRole = (guild, roleid) => guild.roles.find(c => c.id == roleid);