Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/maybeanerd/MagiBot. MagiBot - the community building discord bot that adds joinsounds to your voice discord.gg/2Evcf4T
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485// following functions are async because the statcord types expect promisesimport { ShardingManager } from 'discord.js';import { promises as fsp } from 'fs';import path from 'path';import { asyncForEach /* , doNothingOnError, returnNullOnError */,} from './helperFunctions';
// attempt to share data over saved files// tbh we should just use REDIS instead of this...
export async function saveJoinsoundsPlayedOfShard(shardId: number) { return shardId; /* try {const filePath = path.resolve(__dirname, `./shard-${shardId}-jsplayed`);const data = await fsp.readFile(filePath, 'utf8').catch(returnNullOnError);let joinsoundsPlayed = data ? Number(data) : 0;await fsp.writeFile(filePath, String(++joinsoundsPlayed));} catch (e) {doNothingOnError();} */}export async function saveUsersWhoJoinedQueue(shardId: number) { return shardId; /* try {const filePath = path.resolve(__dirname, `./shard-${shardId}-uqueue`);const data = await fsp.readFile(filePath, 'utf8').catch(returnNullOnError);let usersWhoJoinedQueue = data ? Number(data) : 0;await fsp.writeFile(filePath, String(++usersWhoJoinedQueue));} catch (e) {doNothingOnError();} */}async function loadJoinsoundsPlayedOfShard( shardId: number, dataMap: Map<number, number>,) { try { const filePath = path.resolve(__dirname, `./shard-${shardId}-jsplayed`); const data = await fsp.readFile(filePath, 'utf8'); await fsp.writeFile(filePath, String(0)); dataMap.set(shardId, Number(data)); } catch (e) { console.error('Error loading shared shard data:', e); }}async function loadUsersWhoJoinedQueue( shardId: number, dataMap: Map<number, number>,) { try { const filePath = path.resolve(__dirname, `./shard-${shardId}-uqueue`); const data = await fsp.readFile(filePath, 'utf8'); await fsp.writeFile(filePath, String(0)); dataMap.set(shardId, Number(data)); } catch (e) { console.error('Error loading shared shard data:', e); }}
export async function accumulateJoinsoundsPlayed(manager: ShardingManager) { const dataMap = new Map<number, number>(); await asyncForEach(manager.shards, async (shard) => { await loadJoinsoundsPlayedOfShard(shard.id, dataMap); }); let amount = 0; dataMap.forEach((val) => { amount += val; }); // console.log('joinsounds played:', amount); return String(amount);}export async function accumulateUsersJoinedQueue(manager: ShardingManager) { const dataMap = new Map<number, number>(); await asyncForEach(manager.shards, async (shard) => { await loadUsersWhoJoinedQueue(shard.id, dataMap); }); let amount = 0; dataMap.forEach((val) => { amount += val; }); // console.log('users joined:', amount); return String(amount);}