fallback to default permissions if member is not found
This commit is contained in:
+2
-10
@@ -15,11 +15,7 @@ module.exports = {
|
|||||||
.setRequired(false)),
|
.setRequired(false)),
|
||||||
async execute (interaction: CommandInteraction) {
|
async execute (interaction: CommandInteraction) {
|
||||||
// Pick the right goober
|
// Pick the right goober
|
||||||
const member = interaction.member
|
const member = interaction.member ?? undefined
|
||||||
if (member === null) {
|
|
||||||
void interaction.reply({ content: 'Something went wrong : cannot find member', ephemeral: true })
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if (!(await checkMemberPermissions(member as GuildMember)).read) {
|
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 })
|
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
|
return
|
||||||
@@ -75,11 +71,7 @@ module.exports = {
|
|||||||
const collector = response.createMessageComponentCollector({ componentType: ComponentType.Button, time: 3_600_00 })
|
const collector = response.createMessageComponentCollector({ componentType: ComponentType.Button, time: 3_600_00 })
|
||||||
|
|
||||||
collector.on('collect', async i => {
|
collector.on('collect', async i => {
|
||||||
if (i.member === null) {
|
if (!(await checkMemberPermissions(i.member as GuildMember ?? undefined)).delete) {
|
||||||
void i.reply({ content: 'Something went wrong : cannot find member', ephemeral: true })
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if (!(await checkMemberPermissions(i.member as GuildMember)).delete) {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -51,8 +51,7 @@ module.exports = {
|
|||||||
|
|
||||||
while (messages !== undefined && messages.size > 0) {
|
while (messages !== undefined && messages.size > 0) {
|
||||||
const permissionFilter = await Promise.all((messages as unknown as Message[]).map(async e => {
|
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 => {})
|
const member = await (e.guild?.members.fetch(e.author.id))?.catch(e => undefined)
|
||||||
if (member === undefined) { console.error('member is undefined'); return }
|
|
||||||
return (await checkMemberPermissions(member)).create && e.reactions.resolve('🚫') === null
|
return (await checkMemberPermissions(member)).create && e.reactions.resolve('🚫') === null
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -25,7 +25,8 @@ db.serialize(() => {
|
|||||||
export interface PermsNumbers { create: number, read: number, delete: number }
|
export interface PermsNumbers { create: number, read: number, delete: number }
|
||||||
export interface Perms { create: boolean, delete: boolean, read: boolean }
|
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 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) => {
|
const userPerms = allPermissions.reduce<PermsNumbers>((acc, val) => {
|
||||||
if (!member?.roles.cache.some(r => r.id === val.role.toString())) return acc
|
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
|
return userPerms
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function checkMemberPermissions (member: GuildMember): Promise<Perms> {
|
export async function checkMemberPermissions (member?: GuildMember): Promise<Perms> {
|
||||||
const userPerms = await getMemberPermissionsRaw(member)
|
const userPerms = await getMemberPermissionsRaw(member)
|
||||||
return {
|
return {
|
||||||
create: userPerms.create > 0,
|
create: userPerms.create > 0,
|
||||||
@@ -111,10 +112,9 @@ export async function loadPreviousGoob (client: Client): Promise<void> {
|
|||||||
while (messages !== undefined && messages.size > 0) {
|
while (messages !== undefined && messages.size > 0) {
|
||||||
loaded += messages.size
|
loaded += messages.size
|
||||||
const permissionFilter = await Promise.all((messages as unknown as Message[]).map(async e => {
|
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) {
|
if (member === null) {
|
||||||
const member2 = await (e.guild?.members.fetch(e.author.id))?.catch(e => {})
|
const member2 = await (e.guild?.members.fetch(e.author.id))?.catch(e => undefined)
|
||||||
if (member2 === undefined) return
|
|
||||||
member = member2
|
member = member2
|
||||||
}
|
}
|
||||||
return (await checkMemberPermissions(member)).create && e.reactions.resolve('🚫') === null
|
return (await checkMemberPermissions(member)).create && e.reactions.resolve('🚫') === null
|
||||||
|
|||||||
Reference in New Issue
Block a user