simplify: prune dead code, dedup gmail send, drop neutered log stubs
- Remove no-op log stubs (logGmail, logAutomation, logSecurity, logSystem) and ~17 callsites; dead counters in tickets.js and gmail-poll.js go too - Dedup three near-identical Gmail send paths into sendThreadedEmail helper - Drop dead Mongoose fields: broccoliniTicketId, lastSyncedBroccoliniArticleId, renameCount, renameWindowStart, reminderSent, staffChannelId, unclaimedRemindersSent, lastMessageAuthorIsStaff - Drop dead config fields and their .env.example entries - Inline api/botClient.js (3-line wrapper, 2 callers) - Trim unused exports across utils.js, tickets.js, configSchema.js, debugLog.js - Fix handlers/messages.js to use isStaff() — old partial check ignored ADDITIONAL_STAFF_ROLES, so those members were treated as customers - Drop unused deps p-queue + dotenv-expand; move mongodb to devDependencies Net: -583 LOC source + -57 LOC lockfile. All 23 modules load clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -17,15 +17,8 @@ const { handleDiscordReply } = require('./handlers/messages');
|
||||
const { sendTicketClosedEmail } = require('./services/gmail');
|
||||
const { checkAutoClose, checkAutoUnclaim, reconcileDeletedTicketChannels, resumePendingDeletes } = require('./services/tickets');
|
||||
const { registerCommands } = require('./commands/register');
|
||||
// Holds a reference to the Discord client for the settings-site /internal/discord/guild lookup.
|
||||
const { setBot } = require('./api/botClient');
|
||||
const { poll } = require('./gmail-poll');
|
||||
const { setClient: setDebugClient, logError, logSystem } = require('./services/debugLog');
|
||||
|
||||
// Re-export utilities for any external consumers
|
||||
const { sendGmailReply } = require('./services/gmail');
|
||||
const { getNextTicketNumber } = require('./services/tickets');
|
||||
const { getCleanBody, detectGame, stripEmailQuotes, stripMobileFooter, htmlToTextWithBlocks } = require('./utils');
|
||||
const { setClient: setDebugClient, logError } = require('./services/debugLog');
|
||||
|
||||
let gmailPollInterval = null;
|
||||
// Track all background setInterval handles so shutdown can clear them.
|
||||
@@ -179,7 +172,6 @@ client.once('ready', async () => {
|
||||
}
|
||||
await connectMongoDB(process.env.MONGODB_URI);
|
||||
setDebugClient(client);
|
||||
setBot(client);
|
||||
const healthcheckHost = CONFIG.HEALTHCHECK_HOST || undefined;
|
||||
httpServer = app.listen(CONFIG.PORT, healthcheckHost, () => {
|
||||
console.log(`Healthcheck server listening on ${healthcheckHost || '*'}:${CONFIG.PORT}`);
|
||||
@@ -229,18 +221,6 @@ client.once('ready', async () => {
|
||||
console.log('✓ Memory sweeps registered: every 6 hours (unref\'d)');
|
||||
|
||||
console.log('✓ Discord bot ready. Tag:', client.user.tag);
|
||||
|
||||
logSystem('Bot online', [
|
||||
{ name: 'Guild', value: guild ? `${guild.name} (${guild.id})` : 'N/A' },
|
||||
{ name: 'Poll interval', value: `${CONFIG.GMAIL_POLL_INTERVAL_MS / 1000}s` },
|
||||
{ name: 'Auto-close', value: CONFIG.AUTO_CLOSE_ENABLED ? `enabled (${CONFIG.AUTO_CLOSE_AFTER_HOURS}h)` : 'disabled' },
|
||||
{ name: 'Auto-unclaim', value: CONFIG.AUTO_UNCLAIM_ENABLED ? `enabled (${CONFIG.AUTO_UNCLAIM_AFTER_HOURS}h)` : 'disabled' },
|
||||
{ name: 'Gmail log', value: CONFIG.GMAIL_LOG_CHANNEL_ID ? 'configured' : 'not configured' },
|
||||
{ name: 'Automation log', value: CONFIG.AUTOMATION_LOG_CHANNEL_ID ? 'configured' : 'not configured' },
|
||||
{ name: 'Staff threads', value: CONFIG.STAFF_THREAD_ENABLED ? `enabled (name: "${CONFIG.STAFF_THREAD_NAME}")` : 'disabled' },
|
||||
{ name: 'Pin initial message', value: CONFIG.PIN_INITIAL_MESSAGE_ENABLED ? 'enabled' : 'disabled' },
|
||||
{ name: 'Pin escalation message', value: CONFIG.PIN_ESCALATION_MESSAGE_ENABLED ? 'enabled' : 'disabled' }
|
||||
]).catch(() => {});
|
||||
});
|
||||
|
||||
client.login(CONFIG.DISCORD_TOKEN);
|
||||
@@ -284,10 +264,7 @@ let shuttingDown = false;
|
||||
async function handleShutdown(signal) {
|
||||
if (shuttingDown) return;
|
||||
shuttingDown = true;
|
||||
await Promise.race([
|
||||
logSystem('Bot shutting down', [{ name: 'Signal', value: signal }]),
|
||||
new Promise(r => setTimeout(r, 2000))
|
||||
]);
|
||||
console.log(`Bot shutting down (${signal})`);
|
||||
for (const handle of activeIntervals) {
|
||||
try { clearInterval(handle); } catch (_) {}
|
||||
}
|
||||
@@ -313,13 +290,5 @@ module.exports = {
|
||||
client,
|
||||
setGmailPollInterval,
|
||||
clearGmailPollInterval,
|
||||
trackTimeout,
|
||||
sendGmailReply,
|
||||
sendTicketClosedEmail,
|
||||
getNextTicketNumber,
|
||||
getCleanBody,
|
||||
detectGame,
|
||||
stripEmailQuotes,
|
||||
stripMobileFooter,
|
||||
htmlToTextWithBlocks
|
||||
trackTimeout
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user