Skip to content

Commit 3a0f0fe

Browse files
committed
fix(bots/discord): disable unneeded cache, enable message cache sweeping
1 parent 409e850 commit 3a0f0fe

File tree

1 file changed

+46
-1
lines changed

1 file changed

+46
-1
lines changed

bots/discord/src/context.ts

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { existsSync, readFileSync, readdirSync } from 'fs'
33
import { join } from 'path'
44
import { Client as APIClient } from '@revanced/bot-api'
55
import { createLogger } from '@revanced/bot-shared'
6-
import { Client as DiscordClient, type Message, Partials } from 'discord.js'
6+
import { Client as DiscordClient, type Message, Options, Partials } from 'discord.js'
77
import { drizzle } from 'drizzle-orm/bun-sqlite'
88

99
import * as schemas from './database/schemas'
@@ -80,6 +80,51 @@ export const discord = {
8080
parse: ['users'],
8181
repliedUser: true,
8282
},
83+
sweepers: {
84+
...Options.DefaultSweeperSettings,
85+
messages: {
86+
interval: 1_800, // Every 30m
87+
lifetime: 3_600, // Remove messages older than 1h
88+
},
89+
},
90+
makeCache: Options.cacheWithLimits({
91+
...Options.DefaultMakeCacheSettings,
92+
UserManager: 50,
93+
GuildMemberManager: {
94+
maxSize: 50,
95+
// Always keep client guild member in cache
96+
keepOverLimit: member => member.id === member.client.user.id,
97+
},
98+
ThreadManager: {
99+
maxSize: 0,
100+
// Always keep threads that are used for moderation logging
101+
keepOverLimit: thread => config.moderation?.log?.thread === thread.id,
102+
},
103+
GuildMessageManager: {
104+
maxSize: 0,
105+
// Always keep messages posted by the client in cache
106+
keepOverLimit: message => message.author.id === message.client.user.id,
107+
},
108+
// Unneeded cache
109+
MessageManager: 0,
110+
ReactionManager: 0,
111+
VoiceStateManager: 0,
112+
ThreadMemberManager: 0,
113+
StageInstanceManager: 0,
114+
ReactionUserManager: 0,
115+
PresenceManager: 0,
116+
GuildTextThreadManager: 0,
117+
GuildStickerManager: 0,
118+
DMMessageManager: 0,
119+
GuildEmojiManager: 0,
120+
GuildBanManager: 0,
121+
GuildScheduledEventManager: 0,
122+
EntitlementManager: 0,
123+
AutoModerationRuleManager: 0,
124+
GuildForumThreadManager: 0,
125+
BaseGuildEmojiManager: 0,
126+
GuildInviteManager: 0,
127+
}),
83128
partials: [Partials.Message, Partials.Reaction, Partials.GuildMember],
84129
}),
85130
commands: Object.fromEntries(Object.values(commands).map(cmd => [cmd.name, cmd])) as Record<

0 commit comments

Comments
 (0)