fallback to default permissions if member is not found
This commit is contained in:
+2
-10
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user