phase 9 notification toggles (per-alert, per-category, master; default-disabled)
This commit is contained in:
@@ -9,6 +9,7 @@ const { shouldFireCooldownEscalating, clearEscalating, isStaffRecentlyActive } =
|
||||
const { getStaffAvailability, isAnyStaffAvailable } = require('./staffPresence');
|
||||
const { enqueueSend } = require('./channelQueue');
|
||||
const { assertKeysRegistered } = require('./notificationRegistry');
|
||||
const { isEnabled } = require('./notificationEnabled');
|
||||
|
||||
// Alert keys this module drives. Asserted against the registry at load so any
|
||||
// future drift (rename, typo, unregistered key) fails fast rather than
|
||||
@@ -58,6 +59,7 @@ async function pingStaff(client, message, embedFields) {
|
||||
}
|
||||
|
||||
async function checkTicketSurge(client) {
|
||||
if (!isEnabled('surge_tickets')) return;
|
||||
const key = 'surge:tickets';
|
||||
const since = new Date(Date.now() - CONFIG.SURGE_TICKET_WINDOW_MINUTES * 60000);
|
||||
const count = await Ticket.countDocuments({ createdAt: { $gte: since } });
|
||||
@@ -75,6 +77,7 @@ async function checkTicketSurge(client) {
|
||||
}
|
||||
|
||||
async function checkGameSurge(client) {
|
||||
if (!isEnabled('surge_game')) return;
|
||||
const key = 'surge:game';
|
||||
const since = new Date(Date.now() - CONFIG.SURGE_GAME_TICKET_WINDOW_MINUTES * 60000);
|
||||
const gameCounts = await Ticket.aggregate([
|
||||
@@ -99,6 +102,7 @@ async function checkGameSurge(client) {
|
||||
}
|
||||
|
||||
async function checkStaleSurge(client) {
|
||||
if (!isEnabled('surge_stale')) return;
|
||||
const key = 'surge:stale';
|
||||
const cutoff = new Date(Date.now() - CONFIG.SURGE_STALE_HOURS * 3600000);
|
||||
const count = await Ticket.countDocuments({
|
||||
@@ -119,6 +123,7 @@ async function checkStaleSurge(client) {
|
||||
}
|
||||
|
||||
async function checkNeedsResponseSurge(client) {
|
||||
if (!isEnabled('surge_needs_response')) return;
|
||||
const key = 'surge:needs_response';
|
||||
const cutoff = new Date(Date.now() - CONFIG.SURGE_NEEDS_RESPONSE_HOURS * 3600000);
|
||||
const count = await Ticket.countDocuments({
|
||||
@@ -140,6 +145,7 @@ async function checkNeedsResponseSurge(client) {
|
||||
}
|
||||
|
||||
async function checkUnclaimedSurge(client) {
|
||||
if (!isEnabled('surge_unclaimed')) return;
|
||||
const key = 'surge:unclaimed';
|
||||
const cutoff = new Date(Date.now() - CONFIG.SURGE_UNCLAIMED_MINUTES * 60000);
|
||||
const count = await Ticket.countDocuments({
|
||||
@@ -161,6 +167,7 @@ async function checkUnclaimedSurge(client) {
|
||||
}
|
||||
|
||||
async function checkTier3UnclaimedSurge(client) {
|
||||
if (!isEnabled('surge_tier3_unclaimed')) return;
|
||||
const key = 'surge:tier3_unclaimed';
|
||||
const cutoff = new Date(Date.now() - CONFIG.SURGE_TIER3_UNCLAIMED_MINUTES * 60000);
|
||||
const tickets = await Ticket.find({
|
||||
@@ -183,6 +190,7 @@ async function checkTier3UnclaimedSurge(client) {
|
||||
}
|
||||
|
||||
async function checkZeroStaffSurge(client) {
|
||||
if (!isEnabled('surge_no_staff')) return;
|
||||
const key = 'surge:no_staff';
|
||||
if (!CONFIG.STAFF_IDS.length) {
|
||||
clearEscalating(key);
|
||||
|
||||
Reference in New Issue
Block a user