Skip to content

Commit b33014a

Browse files
committed
🌟 feat: Add fetchAndCachePublicChannelsMessages function to cache messages from public channels
1 parent 36feabb commit b33014a

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

‎src/util/cache.ts‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import type { Guild } from 'discord.js';
2+
import { getPublicChannels } from './channel.js';
3+
4+
const PER_CHANNEL_CACHE_LIMIT = 100;
5+
export const cachedChannelsMap = new Set<string>();
6+
7+
export const fetchAndCachePublicChannelsMessages = async (guild: Guild, force = false) => {
8+
let cachedChannels = 0;
9+
const channels = getPublicChannels(guild);
10+
11+
await Promise.all(
12+
channels.map(async (channel) => {
13+
if (force || !cachedChannelsMap.has(channel.id)) {
14+
const messages = await channel.messages.fetch({ limit: PER_CHANNEL_CACHE_LIMIT });
15+
console.log(
16+
`Fetched and cached ${messages.size} messages from channel ${channel.name} (${channel.id})`
17+
);
18+
cachedChannelsMap.add(channel.id);
19+
cachedChannels++;
20+
}
21+
})
22+
);
23+
return { cachedChannels, totalChannels: channels.size };
24+
};

0 commit comments

Comments
 (0)