Implement lockdown management in automod system
- Added functionality to activate and deactivate lockdowns via the automod worker, responding to specific job names. - Enhanced the anti-raid join handler to apply a verification role when lockdown is active and the anti-raid action is set to VERIFY. - Updated the automod configuration to ensure default rules are created if missing, improving the setup process for new guilds. - Introduced new API endpoints for managing cases and warnings, allowing for soft deletion and reason updates. - Enhanced the moderation dashboard to include warnings management, improving user experience in moderation tasks. - Updated localization files to reflect new features and improve user guidance in both English and German.
This commit is contained in:
@@ -8,6 +8,7 @@ import { logger } from './logger.js';
|
||||
import type { BotContext } from './types.js';
|
||||
import { env } from './env.js';
|
||||
import { refreshPhishingDomains } from './modules/automod/filters.js';
|
||||
import { activateLockdown, deactivateLockdown } from './modules/automod/actions.js';
|
||||
import { completeVerification } from './modules/verification/handlers.js';
|
||||
import { closePoll } from './modules/utility/poll.js';
|
||||
import { sendReminder } from './modules/utility/reminders.js';
|
||||
@@ -212,11 +213,28 @@ export function startWorkers(context: BotContext): Worker[] {
|
||||
const automodWorker = new Worker(
|
||||
automodQueueName,
|
||||
async (job) => {
|
||||
if (job.name !== 'refreshPhishingList') {
|
||||
if (job.name === 'refreshPhishingList') {
|
||||
const count = await refreshPhishingDomains(redis);
|
||||
logger.info({ domainCount: count }, 'Phishing domain list refreshed');
|
||||
return;
|
||||
}
|
||||
const count = await refreshPhishingDomains(redis);
|
||||
logger.info({ domainCount: count }, 'Phishing domain list refreshed');
|
||||
if (job.name === 'deactivateLockdown' || job.name === 'activateLockdown') {
|
||||
const guildId = (job.data as { guildId?: string }).guildId;
|
||||
if (!guildId) {
|
||||
return;
|
||||
}
|
||||
const guild = await context.client.guilds.fetch(guildId).catch(() => null);
|
||||
if (!guild) {
|
||||
return;
|
||||
}
|
||||
if (job.name === 'deactivateLockdown') {
|
||||
await deactivateLockdown(guild);
|
||||
logger.info({ guildId }, 'Lockdown deactivated via dashboard');
|
||||
return;
|
||||
}
|
||||
await activateLockdown(guild);
|
||||
logger.info({ guildId }, 'Lockdown activated via dashboard');
|
||||
}
|
||||
},
|
||||
{ connection: redis }
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user