27 lines
924 B
JavaScript
27 lines
924 B
JavaScript
|
|
const parseIds = (raw) =>
|
||
|
|
(raw ?? '')
|
||
|
|
.split(',')
|
||
|
|
.map((part) => part.trim())
|
||
|
|
.filter(Boolean)
|
||
|
|
.map(Number)
|
||
|
|
.filter((id) => Number.isInteger(id));
|
||
|
|
|
||
|
|
export const config = {
|
||
|
|
token: process.env.BOT_TOKEN ?? '',
|
||
|
|
adminIds: parseIds(process.env.ADMIN_IDS),
|
||
|
|
handoverPauseMs: Number(process.env.HANDOVER_PAUSE_MINUTES ?? 30) * 60_000,
|
||
|
|
logLevel: process.env.LOG_LEVEL ?? 'info',
|
||
|
|
dataDir: new URL('../data/', import.meta.url),
|
||
|
|
};
|
||
|
|
|
||
|
|
export function assertConfig() {
|
||
|
|
if (!config.token) {
|
||
|
|
throw new Error('BOT_TOKEN не задан. Скопируйте .env.example в .env и вставьте токен от @BotFather.');
|
||
|
|
}
|
||
|
|
if (!Number.isFinite(config.handoverPauseMs) || config.handoverPauseMs < 0) {
|
||
|
|
throw new Error('HANDOVER_PAUSE_MINUTES должен быть неотрицательным числом.');
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export const isAdmin = (userId) => config.adminIds.includes(userId);
|