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) { if (payload.chunk_index + 1 === payload.chunk_count) {
cache.fetchAllMembersProcessingRequests.delete(payload.nonce); 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)),
);
} }
} }
} }
+5 -5
View File
@@ -22,17 +22,17 @@ export async function handleInternalMessageCreate(data: DiscordPayload) {
if (payload.member && guild) { if (payload.member && guild) {
// If in a guild cache the author as a member // If in a guild cache the author as a member
await structures.createMember( await structures.createMember(
{ ...payload.member, user: payload.author }, { ...payload.member, user: payload.author },
guild.id, guild.id,
); );
} }
payload.mentions.forEach((mention) => { payload.mentions.forEach((mention) => {
// Cache the member if its a valid member // Cache the member if its a valid member
if (mention.member && guild) { if (mention.member && guild) {
structures.createMember( structures.createMember(
{ ...mention.member, user: mention }, { ...mention.member, user: mention },
guild.id, guild.id,
); );
} }
}); });
+2 -2
View File
@@ -77,8 +77,8 @@ export async function handleInternalVoiceStateUpdate(data: DiscordPayload) {
if (!guild) return; if (!guild) return;
const member = payload.member const member = payload.member
? await structures.createMember(payload.member, guild.id) ? await structures.createMember(payload.member, guild.id)
: await cacheHandlers.get("members", payload.user_id); : await cacheHandlers.get("members", payload.user_id);
if (!member) return; if (!member) return;
// No cached state before so lets make one for em // No cached state before so lets make one for em
+2 -2
View File
@@ -93,8 +93,8 @@ export async function handleInternalMessageReactionRemove(
const guild = await cacheHandlers.get("guilds", payload.guild_id); const guild = await cacheHandlers.get("guilds", payload.guild_id);
if (guild) { if (guild) {
await structures.createMember( await structures.createMember(
payload.member, payload.member,
guild.id, guild.id,
); );
} }
} }
+4 -4
View File
@@ -29,16 +29,16 @@ export async function handleInternalGuildRoleDelete(data: DiscordPayload) {
eventHandlers.roleDelete?.(guild, cachedRole); eventHandlers.roleDelete?.(guild, cachedRole);
// For bots without GUILD_MEMBERS member.roles is never updated breaking permissions checking. // 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. // Not in the relevant guild so just skip.
if (!member.guilds.has(guild.id)) return; if (!member.guilds.has(guild.id)) return;
member.guilds.forEach(g => { member.guilds.forEach((g) => {
// Member does not have this role // Member does not have this role
if (!g.roles.includes(payload.role_id)) return; if (!g.roles.includes(payload.role_id)) return;
// Remove this role from the members cache // 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 { Errors } from "../types/errors.ts";
import { RawOverwrite } from "../types/guild.ts"; import { RawOverwrite } from "../types/guild.ts";
import { MessageCreateOptions } from "../types/message.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 { 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 */ /** Checks if a channel overwrite for a user id or a role id has permission in this channel */
export function channelOverwriteHasPermission( export function channelOverwriteHasPermission(
+9 -3
View File
@@ -16,7 +16,9 @@ export async function memberIDHasPermission(
if (memberID === guild.ownerID) return true; 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; if (!member) return false;
return memberHasPermission(memberID, guild, member.roles, permissions); return memberHasPermission(memberID, guild, member.roles, permissions);
@@ -74,7 +76,9 @@ export async function botHasPermission(
if (permissionBits & BigInt(Permissions.ADMINISTRATOR)) return true; 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 */ /** Checks if the bot has the permissions in a channel */
@@ -105,7 +109,9 @@ export async function hasChannelPermissions(
return true; 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; if (!member) return false;
let memberOverwrite: RawOverwrite | undefined; let memberOverwrite: RawOverwrite | undefined;