| import { |
| getGlobalConfig, |
| saveGlobalConfig, |
| type TelegramConfig, |
| } from '../../utils/config.js' |
| import type { |
| TelegramConfigDraft, |
| TelegramRuntimeConfig, |
| } from './telegramTypes.js' |
|
|
| export function getTelegramConfig(): TelegramConfig | undefined { |
| return getGlobalConfig().telegram |
| } |
|
|
| export function hasTelegramRuntimeConfig(): boolean { |
| const telegram = getTelegramConfig() |
| return Boolean( |
| telegram?.botToken?.trim() && |
| (telegram.allowedUserIds?.filter(Boolean).length ?? 0) > 0, |
| ) |
| } |
|
|
| export function saveTelegramConfig(updates: TelegramConfigDraft): void { |
| saveGlobalConfig(current => ({ |
| ...current, |
| telegram: { |
| ...(current.telegram ?? {}), |
| ...updates, |
| updatedAt: new Date().toISOString(), |
| }, |
| })) |
| } |
|
|
| export function clearTelegramConfig(): void { |
| saveGlobalConfig(current => ({ |
| ...current, |
| telegram: undefined, |
| })) |
| } |
|
|
| export function maskTelegramToken(token?: string): string { |
| if (!token) return '未配置' |
| if (token.length <= 12) return `${token.slice(0, 4)}...` |
| return `${token.slice(0, 8)}...${token.slice(-4)}` |
| } |
|
|
| export function parseAllowedTelegramUserIds(raw: string): string[] { |
| return [...new Set( |
| raw |
| .split(/[\s,]+/) |
| .map(part => part.trim()) |
| .filter(Boolean) |
| .filter(part => /^\d+$/.test(part)), |
| )] |
| } |
|
|
| export function formatAllowedTelegramUserIds(userIds?: string[]): string { |
| if (!userIds || userIds.length === 0) return '' |
| return userIds.join(', ') |
| } |
|
|
| export function getTelegramRuntimeConfig(): TelegramRuntimeConfig { |
| const telegram = getTelegramConfig() |
| const botToken = telegram?.botToken?.trim() |
| const allowedUserIds = telegram?.allowedUserIds?.filter(Boolean) ?? [] |
|
|
| if (!botToken) { |
| throw new Error('请先在 /telegram 中配置 Bot Token') |
| } |
|
|
| if (allowedUserIds.length === 0) { |
| throw new Error('请先在 /telegram 中配置允许访问的 Telegram user id') |
| } |
|
|
| return { |
| botToken, |
| allowedUserIds, |
| } |
| } |
|
|