mirror of
https://github.com/ReVanced/revanced-bots.git
synced 2026-01-11 13:56:15 +00:00
fix(bots/discord): remove expired presets from db if unapplying is not possible
This commit is contained in:
@@ -5,7 +5,7 @@ import { on, withContext } from '$/utils/discord/events'
|
|||||||
import { removeRolePreset } from '$/utils/discord/rolePresets'
|
import { removeRolePreset } from '$/utils/discord/rolePresets'
|
||||||
import { and, eq, lt } from 'drizzle-orm'
|
import { and, eq, lt } from 'drizzle-orm'
|
||||||
|
|
||||||
import type { Client } from 'discord.js'
|
import { type Client, DiscordAPIError } from 'discord.js'
|
||||||
|
|
||||||
export default withContext(on, 'ready', async ({ config, discord, logger }, client) => {
|
export default withContext(on, 'ready', async ({ config, discord, logger }, client) => {
|
||||||
logger.info(`Connected to Discord API, logged in as ${client.user.displayName} (@${client.user.tag})!`)
|
logger.info(`Connected to Discord API, logged in as ${client.user.displayName} (@${client.user.tag})!`)
|
||||||
@@ -82,7 +82,7 @@ const removeExpiredPresets = async (client: Client) => {
|
|||||||
where: lt(appliedPresets.until, Math.floor(Date.now() / 1000)),
|
where: lt(appliedPresets.until, Math.floor(Date.now() / 1000)),
|
||||||
})
|
})
|
||||||
|
|
||||||
for (const expired of expireds)
|
for (const expired of expireds) {
|
||||||
try {
|
try {
|
||||||
logger.debug(`Removing role preset for ${expired.memberId} in ${expired.guildId}`)
|
logger.debug(`Removing role preset for ${expired.memberId} in ${expired.guildId}`)
|
||||||
|
|
||||||
@@ -90,10 +90,16 @@ const removeExpiredPresets = async (client: Client) => {
|
|||||||
const member = await guild.members.fetch(expired.memberId)
|
const member = await guild.members.fetch(expired.memberId)
|
||||||
|
|
||||||
await removeRolePreset(member, expired.preset)
|
await removeRolePreset(member, expired.preset)
|
||||||
|
} catch (e) {
|
||||||
|
// Unknown Member: https://discord.com/developers/docs/topics/opcodes-and-status-codes#json
|
||||||
|
if (!(e instanceof DiscordAPIError) || e.code !== 10007) {
|
||||||
|
logger.error(`Error while removing role preset for ${expired.memberId} in ${expired.guildId}: ${e}`)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
await database
|
await database
|
||||||
.delete(appliedPresets)
|
.delete(appliedPresets)
|
||||||
.where(and(eq(appliedPresets.guildId, expired.guildId), eq(appliedPresets.memberId, expired.memberId)))
|
.where(and(eq(appliedPresets.guildId, expired.guildId), eq(appliedPresets.memberId, expired.memberId)))
|
||||||
} catch (e) {
|
|
||||||
logger.error(`Error while removing role preset for ${expired.memberId} in ${expired.guildId}: ${e}`)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user