fallback to default permissions if member is not found

This commit is contained in:
2023-06-17 11:40:09 +02:00
parent 5ffc1ad844
commit f7bafdbc3d
3 changed files with 8 additions and 17 deletions
+2 -10
View File
@@ -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
}
+1 -2
View File
@@ -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
}))
+5 -5
View File
@@ -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<PermsNumbers> {
export async function getMemberPermissionsRaw (member?: GuildMember): Promise<PermsNumbers> {
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<PermsNumbers & { role: string }>
const userPerms = allPermissions.reduce<PermsNumbers>((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<Per
return userPerms
}
export async function checkMemberPermissions (member: GuildMember): Promise<Perms> {
export async function checkMemberPermissions (member?: GuildMember): Promise<Perms> {
const userPerms = await getMemberPermissionsRaw(member)
return {
create: userPerms.create > 0,
@@ -111,10 +112,9 @@ export async function loadPreviousGoob (client: Client): Promise<void> {
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