From df785f1eacdbdd0466044ba9b3116c2b66358b99 Mon Sep 17 00:00:00 2001 From: Tarrgon <61888458+Tarrgon@users.noreply.github.com> Date: Wed, 8 Jul 2026 11:35:57 -0400 Subject: [PATCH] Add site breaker ping --- sql/migrations/0005-add-site-breaker-role.sql | 9 +++++++++ src/commands/settings.ts | 12 ++++++++++++ src/types/database-types.d.ts | 3 ++- src/webserver/index.ts | 2 +- 4 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 sql/migrations/0005-add-site-breaker-role.sql diff --git a/sql/migrations/0005-add-site-breaker-role.sql b/sql/migrations/0005-add-site-breaker-role.sql new file mode 100644 index 0000000..c6492d1 --- /dev/null +++ b/sql/migrations/0005-add-site-breaker-role.sql @@ -0,0 +1,9 @@ +-------------------------------------------------------------------------------- +-- Up +-------------------------------------------------------------------------------- +ALTER TABLE settings ADD site_breaker_role_id TEXT; + +-------------------------------------------------------------------------------- +-- Down +-------------------------------------------------------------------------------- +ALTER TABLE settings DROP COLUMN site_breaker_role_id; \ No newline at end of file diff --git a/src/commands/settings.ts b/src/commands/settings.ts index 35f568f..afc5f9e 100644 --- a/src/commands/settings.ts +++ b/src/commands/settings.ts @@ -122,6 +122,12 @@ export default { .setName('github-release-channel') .setDescription('Set the github release channel.') .setRequired(false) + ) + .addRoleOption(option => + option + .setName('site-breaker-role') + .setDescription('Set the site breaker role.') + .setRequired(false) ), handler: async function (client: Client, interaction: ChatInputCommandInteraction) { if (!interaction.guildId) return; // This shouldn't occur, but TypeScript doesn't know that. @@ -262,6 +268,12 @@ export default { response.push(`**github_release_channel** has been set to ${githubReleaseChannel}.`); } + const siteBreakerRole = interaction.options.getRole('site-breaker-role'); + if (siteBreakerRole) { + await Database.updateGuildSettings(interaction.guildId, 'site_breaker_role_id', siteBreakerRole.id); + response.push(`**site_breaker_role_id** has been set to ${siteBreakerRole}.`); + } + if (response.length == 0) return interaction.editReply({ content: 'No settings have been modified.' }); interaction.editReply({ content: response.join('\n') }); } diff --git a/src/types/database-types.d.ts b/src/types/database-types.d.ts index 00b202c..4cf1097 100644 --- a/src/types/database-types.d.ts +++ b/src/types/database-types.d.ts @@ -28,8 +28,9 @@ export type GuildSettings = { link_skip_channels?: string github_release_channel?: string moderator_channel_id?: string - private_help_channel_id?: string, + private_help_channel_id?: string appeals_channel_id?: string + site_breaker_role_id?: string } type GuildSetting = Exclude diff --git a/src/webserver/index.ts b/src/webserver/index.ts index 46e9c01..f6a4548 100644 --- a/src/webserver/index.ts +++ b/src/webserver/index.ts @@ -220,7 +220,7 @@ async function handleGithubRelease(client: Client, req: Request, res: Response): const date = new Date(); - let message = `## [${months[date.getUTCMonth()]} ${date.getUTCDate()}, ${date.getUTCFullYear()}](<${data.release.html_url}>)\n\n${await fixPings(removeIssueLinks(data.release.body))}`; + let message = `## [${months[date.getUTCMonth()]} ${date.getUTCDate()}, ${date.getUTCFullYear()}](<${data.release.html_url}>)\n\n${settings.site_breaker_role_id ? `<@&${settings.site_breaker_role_id}>\n` : ''}${await fixPings(removeIssueLinks(data.release.body))}`; logDebug('Sending github release message');