feat: Add validation for DISCORD_CLIENT_ID in command registration and update deployment guide for dashboard publish directory
CI-CD / Dashboard Lint Build (push) Successful in 12s
CI-CD / Deploy to Coolify (push) Failing after 3s
CI-CD / Bot Lint Test Build (push) Successful in 1m21s

This commit is contained in:
2026-05-17 19:28:24 +02:00
parent 2c4408be05
commit ff58566989
3 changed files with 21 additions and 9 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ Optional same-origin pattern:
3. Add resource `omo-bot-dashboard` from this repository:
- Base directory: `admin-dashboard`
- Build command: `npm run build`
- Publish directory: `dist`
- Publish directory: `/`
- Internal port: `80` (typical static web port behind Coolify)
4. Configure domains for each resource and enable TLS certificates.
+14 -8
View File
@@ -207,6 +207,7 @@ async function loadConfigOverridesFromDatabase(
}
function buildConfig(readConfig: ConfigReader): BotConfig {
const discordClientId = readConfig("DISCORD_CLIENT_ID")?.trim();
const discordGuildId = readConfig("DISCORD_GUILD_ID");
const callSheetMessageId = readConfig("CALL_SHEET_MESSAGE_ID");
const callSheetOnboardedRoleId = readConfig("CALL_SHEET_ONBOARDED_ROLE_ID");
@@ -266,12 +267,19 @@ function buildConfig(readConfig: ConfigReader): BotConfig {
const openmicSyncToken = readConfig("OPENMIC_SYNC_TOKEN")?.trim();
const oauthBridgeEnabled =
Boolean(oauthBridgeClientSecret) && Boolean(oauthBridgeRedirectUri);
if (oauthBridgeEnabled && !discordClientId) {
throw new Error(
"Missing required configuration value: DISCORD_CLIENT_ID (required when OAuth bridge is enabled)",
);
}
const configurationDatabaseEnabled =
readConfig("CONFIG_DB_ENABLED") === "false" ? false : Boolean(databaseUrl);
return {
discordToken: readRequiredValue(readConfig, "DISCORD_TOKEN"),
discordClientId: readRequiredValue(readConfig, "DISCORD_CLIENT_ID"),
discordClientId: discordClientId ?? "",
...(discordGuildId ? { discordGuildId } : {}),
callSheet: {
...(callSheetMessageId ? { messageId: callSheetMessageId } : {}),
@@ -475,17 +483,15 @@ export async function loadRuntimeConfig(): Promise<BotConfig> {
return loadConfig();
}
let overrides: Map<string, string>;
try {
const overrides = await loadConfigOverridesFromDatabase(
databaseUrl,
guildScope,
);
return buildConfig((name) => overrides.get(name) ?? process.env[name]);
overrides = await loadConfigOverridesFromDatabase(databaseUrl, guildScope);
} catch (error: unknown) {
console.warn(
`Falling back to environment config. Config DB overrides unavailable: ${String(error)}`,
`Config DB unavailable. Falling back to environment config: ${String(error)}`,
);
return loadConfig();
}
return buildConfig((name) => overrides.get(name) ?? process.env[name]);
}
+6
View File
@@ -5,6 +5,12 @@ import { loadRuntimeConfig } from "./config";
async function registerCommands(): Promise<void> {
const config = await loadRuntimeConfig();
if (!config.discordClientId) {
throw new Error(
"DISCORD_CLIENT_ID required for command registration. Set it in bot_settings or environment.",
);
}
const rest = new REST({ version: "10" }).setToken(config.discordToken);
const body = commands.map((command) => command.data.toJSON());