const messages: Record = { not_found: '内容不存在或已过期。', gone: '内容已删除、下载次数已用完或续传已失效。', seats_full: '频道席位已满,请联系所有者。', not_joined: '你已被移出此频道。', visitors_full: '分享的访客名额已满。', unauthorized: '链接权限无效,请使用完整链接重新打开。', forbidden: '此链接没有执行此操作的权限。', sealed: '分享已封存,无法再修改。', too_large: '内容超过服务端容量或条目数量限制。', rate_limited: '请求过于频繁,请稍后重试。', captcha_required: '验证码未通过或已失效,请重新创建。', captcha_unavailable: '验证码服务暂时不可用,请稍后重试。', api_contract_mismatch: '服务端 API 有破坏性更新,请刷新或更新前端后再试。', mode_mismatch: '频道加密模式与链接不符,已拒绝访问。', conflict: '上传内容发生冲突,已停止发送。', }; export function errorMessage(error: unknown): string { if (!(error instanceof Error)) return '操作失败,请重试。'; const mapped = messages[error.message]; if (mapped) return mapped; // 不回显来自服务端或解析器的原始错误,它们可能包含密钥或明文。 return /[\u4e00-\u9fff]/.test(error.message) && error.message.length < 100 ? error.message : '操作失败,请重试。'; }