From f7bafdbc3dbe8589bcea7c7c1aaa37163575e7d9 Mon Sep 17 00:00:00 2001 From: Legonzaur Date: Sat, 17 Jun 2023 11:40:09 +0200 Subject: [PATCH] fallback to default permissions if member is not found --- src/commands/goob.ts | 12 ++---------- src/commands/load.ts | 3 +-- src/db/index.ts | 10 +++++----- 3 files changed, 8 insertions(+), 17 deletions(-) diff --git a/src/commands/goob.ts b/src/commands/goob.ts index a4d328e..3fe66da 100644 --- a/src/commands/goob.ts +++ b/src/commands/goob.ts @@ -15,11 +15,7 @@ module.exports = { .setRequired(false)), async execute (interaction: CommandInteraction) { // Pick the right goober - const member = interaction.member - if (member === null) { - void interaction.reply({ content: 'Something went wrong : cannot find member', ephemeral: true }) - return - } + const member = interaction.member ?? undefined if (!(await checkMemberPermissions(member as GuildMember)).read) { void interaction.reply({ content: 'I am sorry dave, I\'m afraid I cannot do that\nYou do not have access to that command', ephemeral: true }) return @@ -75,11 +71,7 @@ module.exports = { const collector = response.createMessageComponentCollector({ componentType: ComponentType.Button, time: 3_600_00 }) collector.on('collect', async i => { - if (i.member === null) { - void i.reply({ content: 'Something went wrong : cannot find member', ephemeral: true }) - return - } - if (!(await checkMemberPermissions(i.member as GuildMember)).delete) { + if (!(await checkMemberPermissions(i.member as GuildMember ?? undefined)).delete) { return } diff --git a/src/commands/load.ts b/src/commands/load.ts index 91ea7ab..1d8e338 100644 --- a/src/commands/load.ts +++ b/src/commands/load.ts @@ -51,8 +51,7 @@ module.exports = { while (messages !== undefined && messages.size > 0) { const permissionFilter = await Promise.all((messages as unknown as Message[]).map(async e => { - const member = await (e.guild?.members.fetch(e.author.id))?.catch(e => {}) - if (member === undefined) { console.error('member is undefined'); return } + const member = await (e.guild?.members.fetch(e.author.id))?.catch(e => undefined) return (await checkMemberPermissions(member)).create && e.reactions.resolve('🚫') === null })) diff --git a/src/db/index.ts b/src/db/index.ts index 22d81a1..2399bf9 100644 --- a/src/db/index.ts +++ b/src/db/index.ts @@ -25,7 +25,8 @@ db.serialize(() => { export interface PermsNumbers { create: number, read: number, delete: number } export interface Perms { create: boolean, delete: boolean, read: boolean } -export async function getMemberPermissionsRaw (member: GuildMember): Promise { +export async function getMemberPermissionsRaw (member?: GuildMember): Promise { + if (member === undefined) return { create: 1, read: 1, delete: 0 } const allPermissions = await execute('SELECT * FROM permissions WHERE guild=$guild', { $guild: member.guild.id }) as Array const userPerms = allPermissions.reduce((acc, val) => { if (!member?.roles.cache.some(r => r.id === val.role.toString())) return acc @@ -38,7 +39,7 @@ export async function getMemberPermissionsRaw (member: GuildMember): Promise { +export async function checkMemberPermissions (member?: GuildMember): Promise { const userPerms = await getMemberPermissionsRaw(member) return { create: userPerms.create > 0, @@ -111,10 +112,9 @@ export async function loadPreviousGoob (client: Client): Promise { while (messages !== undefined && messages.size > 0) { loaded += messages.size const permissionFilter = await Promise.all((messages as unknown as Message[]).map(async e => { - let member = e.member + let member = e.member ?? undefined if (member === null) { - const member2 = await (e.guild?.members.fetch(e.author.id))?.catch(e => {}) - if (member2 === undefined) return + const member2 = await (e.guild?.members.fetch(e.author.id))?.catch(e => undefined) member = member2 } return (await checkMemberPermissions(member)).create && e.reactions.resolve('🚫') === null