2020-07-05 05:00:54 +03:00
|
|
|
import { Guild } from "eris";
|
2020-08-19 00:49:29 +03:00
|
|
|
import { HOURS, noop } from "../../utils";
|
2020-07-05 05:00:54 +03:00
|
|
|
|
2020-08-19 00:49:29 +03:00
|
|
|
const MEMBER_REFRESH_FREQUENCY = 1 * HOURS; // How often to do a full member refresh when using commands that need it
|
2020-07-06 02:17:51 +03:00
|
|
|
const memberRefreshLog = new Map<string, { time: number; promise: Promise<void> }>();
|
2020-07-05 05:00:54 +03:00
|
|
|
|
|
|
|
export async function refreshMembersIfNeeded(guild: Guild) {
|
|
|
|
const lastRefresh = memberRefreshLog.get(guild.id);
|
|
|
|
if (lastRefresh && Date.now() < lastRefresh.time + MEMBER_REFRESH_FREQUENCY) {
|
|
|
|
return lastRefresh.promise;
|
|
|
|
}
|
|
|
|
|
|
|
|
const loadPromise = guild.fetchAllMembers().then(noop);
|
|
|
|
memberRefreshLog.set(guild.id, {
|
|
|
|
time: Date.now(),
|
|
|
|
promise: loadPromise,
|
|
|
|
});
|
|
|
|
|
|
|
|
return loadPromise;
|
|
|
|
}
|