Add events module with dashboard UI, scheduling, signups, and settings updates; extend env/readme.
This commit is contained in:
@@ -3,7 +3,7 @@ import path from 'path';
|
||||
|
||||
dotenv.config({ path: path.resolve(process.cwd(), '.env') });
|
||||
|
||||
const required = ['DISCORD_TOKEN', 'DISCORD_CLIENT_ID', 'DISCORD_GUILD_ID', 'DATABASE_URL'] as const;
|
||||
const required = ['DISCORD_TOKEN', 'DISCORD_CLIENT_ID', 'DISCORD_CLIENT_SECRET', 'DATABASE_URL'] as const;
|
||||
|
||||
required.forEach((key) => {
|
||||
if (!process.env[key]) {
|
||||
@@ -11,9 +11,16 @@ required.forEach((key) => {
|
||||
}
|
||||
});
|
||||
|
||||
const normalizeBasePath = (raw?: string) => {
|
||||
if (!raw) return '';
|
||||
const withSlash = raw.startsWith('/') ? raw : `/${raw}`;
|
||||
return withSlash.replace(/\/+$/, '');
|
||||
};
|
||||
|
||||
export const env = {
|
||||
token: process.env.DISCORD_TOKEN ?? '',
|
||||
clientId: process.env.DISCORD_CLIENT_ID ?? '',
|
||||
clientSecret: process.env.DISCORD_CLIENT_SECRET ?? '',
|
||||
guildId: process.env.DISCORD_GUILD_ID ?? '',
|
||||
guildIds: (process.env.DISCORD_GUILD_IDS ?? process.env.DISCORD_GUILD_ID ?? '')
|
||||
.split(',')
|
||||
@@ -21,5 +28,12 @@ export const env = {
|
||||
.filter(Boolean),
|
||||
databaseUrl: process.env.DATABASE_URL ?? '',
|
||||
port: Number(process.env.PORT ?? 3000),
|
||||
sessionSecret: process.env.SESSION_SECRET ?? 'papo_dev_secret'
|
||||
sessionSecret: process.env.SESSION_SECRET ?? 'papo_dev_secret',
|
||||
supportRoleId: process.env.SUPPORT_ROLE_ID ?? '',
|
||||
webBasePath: normalizeBasePath(process.env.WEB_BASE_PATH ?? '/ucp'),
|
||||
publicBaseUrl: process.env.DASHBOARD_BASE_URL ? process.env.DASHBOARD_BASE_URL.replace(/\/+$/, '') : undefined,
|
||||
ownerIds: (process.env.OWNER_IDS ?? process.env.OWNER_ID ?? '')
|
||||
.split(',')
|
||||
.map((s) => s.trim())
|
||||
.filter(Boolean)
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user