From 81701e030dfd8126ee9134afc3f897e45337e847 Mon Sep 17 00:00:00 2001 From: jakubmanczak Date: Tue, 20 Dec 2022 23:49:46 +0100 Subject: [PATCH] member count api - discordjs cache bypass --- src/index.ts | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/index.ts b/src/index.ts index e388862..78975e6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,25 +6,45 @@ import config from './cfg.json'; dotenv.config(); const client = new DiscordJS.Client({ - intents: [DiscordJS.GatewayIntentBits.Guilds], + intents: [ + DiscordJS.GatewayIntentBits.Guilds, + DiscordJS.GatewayIntentBits.GuildMembers, + ], }); const app = express(); const port = process.env.PORT || config.api.fallbackPort; +let memberCount: number | null, previousCount: number | null; app.get('/', (req, res) => { res.sendStatus(200); }); app.get('/members', (req, res) => { - res.send( - client.guilds.resolve(config.api.memberCountGuildId)?.memberCount.toString() - ); + res + .status(memberCount ? 200 : 500) + .send(memberCount ? memberCount.toString() : 'Server Error'); }); +client.on('guildMemberAdd', () => { + if (memberCount) memberCount++; +}); +client.on('guildMemberRemove', () => { + if (memberCount) memberCount--; +}); client.on('ready', () => { console.log(`BOT: Now logged in as ${client.user?.tag}.`); + memberCount = + client.guilds.resolve(config.api.memberCountGuildId)?.memberCount || null; + setInterval(() => { + if (previousCount != memberCount) { + console.log( + `API/BOT: Gractwo memberCount is ${`now ${memberCount}` || 'unset'}.` + ); + } + previousCount = memberCount; + }, 5 * 1000); }); -const api = app.listen(port, () => { +app.listen(port, () => { console.log(`API: Now listening on :${port}.`); }); client.login(process.env.TOKEN);