This commit is contained in:
Skillz
2020-11-18 12:52:46 -05:00
parent 5e38843418
commit 9e49d8da11
7 changed files with 27 additions and 19 deletions
+3 -1
View File
@@ -112,7 +112,9 @@ export async function handleInternalGuildMembersChunk(data: DiscordPayload) {
if (payload.chunk_index + 1 === payload.chunk_count) {
cache.fetchAllMembersProcessingRequests.delete(payload.nonce);
resolve(await cacheHandlers.filter("members", (m) => m.guilds.has(guild.id)));
resolve(
await cacheHandlers.filter("members", (m) => m.guilds.has(guild.id)),
);
}
}
}
+4 -4
View File
@@ -29,16 +29,16 @@ export async function handleInternalGuildRoleDelete(data: DiscordPayload) {
eventHandlers.roleDelete?.(guild, cachedRole);
// For bots without GUILD_MEMBERS member.roles is never updated breaking permissions checking.
cacheHandlers.forEach("members", member => {
cacheHandlers.forEach("members", (member) => {
// Not in the relevant guild so just skip.
if (!member.guilds.has(guild.id)) return;
member.guilds.forEach(g => {
member.guilds.forEach((g) => {
// Member does not have this role
if (!g.roles.includes(payload.role_id)) return;
// Remove this role from the members cache
g.roles = g.roles.filter(id => id !== payload.role_id);
})
g.roles = g.roles.filter((id) => id !== payload.role_id);
});
});
}
+2 -2
View File
@@ -15,9 +15,9 @@ import {
import { Errors } from "../types/errors.ts";
import { RawOverwrite } from "../types/guild.ts";
import { MessageCreateOptions } from "../types/message.ts";
import { Permissions, Permission } from "../types/permission.ts";
import { Permission, Permissions } from "../types/permission.ts";
import { endpoints } from "../utils/constants.ts";
import { botHasChannelPermissions, } from "../utils/permissions.ts";
import { botHasChannelPermissions } from "../utils/permissions.ts";
/** Checks if a channel overwrite for a user id or a role id has permission in this channel */
export function channelOverwriteHasPermission(
+9 -3
View File
@@ -16,7 +16,9 @@ export async function memberIDHasPermission(
if (memberID === guild.ownerID) return true;
const member = (await cacheHandlers.get("members", memberID))?.guilds.get(guildID);
const member = (await cacheHandlers.get("members", memberID))?.guilds.get(
guildID,
);
if (!member) return false;
return memberHasPermission(memberID, guild, member.roles, permissions);
@@ -74,7 +76,9 @@ export async function botHasPermission(
if (permissionBits & BigInt(Permissions.ADMINISTRATOR)) return true;
return permissions.every((permission) => permissionBits & BigInt(Permissions[permission]));
return permissions.every((permission) =>
permissionBits & BigInt(Permissions[permission])
);
}
/** Checks if the bot has the permissions in a channel */
@@ -105,7 +109,9 @@ export async function hasChannelPermissions(
return true;
}
const member = (await cacheHandlers.get("members", memberID))?.guilds.get(guild.id);
const member = (await cacheHandlers.get("members", memberID))?.guilds.get(
guild.id,
);
if (!member) return false;
let memberOverwrite: RawOverwrite | undefined;