Skip to content

Commit 5093481

Browse files
authored
Add files via upload
1 parent f3db7fb commit 5093481

4 files changed

Lines changed: 40 additions & 0 deletions

File tree

‎src/events/guildCreate.js‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Events } from 'discord.js';
22
import { logger } from '../utils/logger.js';
33
import { getGuildConfig, setGuildConfig } from '../services/config/guildConfig.js';
4+
import { isGuildUnlocked, sendKeyPrompt } from '../services/accessKeyService.js';
45

56
export default {
67
name: Events.GuildCreate,
@@ -15,6 +16,11 @@ export default {
1516

1617
const config = await getGuildConfig(client, guild.id);
1718
await setGuildConfig(client, guild.id, config);
19+
20+
// New servers start locked: ask for the key
21+
if (!(await isGuildUnlocked(client, guild.id))) {
22+
await sendKeyPrompt(client, guild);
23+
}
1824
} catch (error) {
1925
logger.error(`Error initializing guild ${guild?.id} on join:`, error);
2026
}

‎src/events/guildDelete.js‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { Events } from 'discord.js';
2+
import { logger } from '../utils/logger.js';
3+
import { lockGuild } from '../services/accessKeyService.js';
4+
5+
export default {
6+
name: Events.GuildDelete,
7+
async execute(guild, client) {
8+
// A server outage is not a removal
9+
if (guild?.available === false) return;
10+
11+
try {
12+
// Pepper was removed: the next time it is added, it asks for the key again.
13+
await lockGuild(client, guild.id);
14+
logger.info('Bot left guild, access key reset', { event: 'guild.delete', guildId: guild.id });
15+
} catch (error) {
16+
logger.error(`Error resetting access key for guild ${guild?.id}:`, error);
17+
}
18+
},
19+
};

‎src/events/interactionCreate.js‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { resolveSlashAccessKey } from '../utils/messageAdapter.js';
1919
import { isCollectorManagedComponent } from '../utils/collectorComponents.js';
2020
import { ResponseCoordinator } from '../utils/responseCoordinator.js';
2121
import { enforceDefaultCommandPermissions } from '../utils/permissionGuard.js';
22+
import { handleAccessInteraction } from '../services/accessKeyService.js';
2223

2324
const COMMAND_ERROR_SUBTYPES = {
2425
warn: 'warn_failed',
@@ -55,6 +56,11 @@ export default {
5556

5657
return runWithTraceContext(interactionTraceContext, async () => {
5758
try {
59+
// Access key: handles the Enter Key button/modal and blocks everything else in locked servers
60+
if (await handleAccessInteraction(interaction, client)) {
61+
return;
62+
}
63+
5864
InteractionHelper.patchInteractionResponses(interaction);
5965
ResponseCoordinator.attach(interaction);
6066

‎src/events/ready.js‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { startTempBanChecker } from "../services/tempBanService.js";
1010
import { syncAllRoleLinks } from "../services/roleLinkService.js";
1111
import { ensureAllTicketPanels } from "../services/ticketHubService.js";
1212
import { syncAllStatusRoles } from "../services/statusRoleService.js";
13+
import { purgeStaleGuilds, promptLockedGuilds } from "../services/accessKeyService.js";
1314

1415
export default {
1516
name: Events.ClientReady,
@@ -23,6 +24,14 @@ export default {
2324
startupLog(`Serving ${client.guilds.cache.size} guild(s)`);
2425
startupLog(`Loaded ${client.commands.size} commands`);
2526

27+
// Access key: forget servers Pepper left while offline, then ask locked servers for the key
28+
try {
29+
await purgeStaleGuilds(client);
30+
await promptLockedGuilds(client);
31+
} catch (error) {
32+
logger.error('Access key startup check failed:', error);
33+
}
34+
2635
// Give linked roles to people who already have the trigger role (runs in the background)
2736
syncAllRoleLinks(client).catch((error) => logger.error('Role link startup sync failed:', error));
2837

0 commit comments

Comments
 (0)