/* global React, Button, CloudDivider, SealIcon */ const { useState: useSP } = React; /* ========================================================= About · 关于陛下 ========================================================= */ function AboutPage({ onCompose, onNav }) { return (
ABOUT · 关于陛下

朕是谁

现代宫廷,一人独坐

{/* Section 1 */}

朕的来历

朕本是一介书生,在这个快节奏的时代,做着一件慢得不像话的事——听爱卿们说话。

从前总有朋友深夜发来长长的语音,说工作、说爱人、说爹娘,说些不足与外人道的碎事。朕一边听一边想:这世上不缺说话的地方,缺的是愿意慢慢听的人。于是便有了这个信箱。

朕会在抖音不定时开朝会,亲自批阅爱卿们呈来的奏折。选中的,朕会当场宣读;有些感触格外深的,朕会剪成小段视频,让更多人看到。没被选中的,也不必气馁——朕每一封都看了,这是朕给自己立的规矩。

朕性情闷,话不多,但凡爱卿开口,朕必认真听。这世上最难的不是开口,是遇到一个认真听的人。朕愿意当这个人。

{/* Section 2 */}

朕的抖音

主号

陛下

124.6 万爱卿 · 认证:内容创作者 · 朝会直播

小号

陛下ovo

38.2 万爱卿 · 日常碎语 · 不正经

朝会不定时开播,爱卿可关注抖音开播提醒,避免错过。

{/* Section 3 · Oath */}
OATH · 朕的誓言

朕承诺:每一封奏折,朕必亲自过目。
纵不能悉数宣读,亦不会辜负爱卿笔下心意。
凡投之以言,朕必还之以念。

丙午年春 · 2026
{/* Bottom CTA */}

爱卿可愿一试?

); } function QRPlaceholder() { // Visual placeholder — not a scannable code. Real QRs need to be supplied // by ops (or generated server-side) once the wechat 小秘书 / 抖音 主号 are live. return (
二维码
待补
); } /* ========================================================= Rules · 投稿须知 ========================================================= */ function RulesPage({ onCompose }) { const items = [ { t: '关于你的奏折', lis: [ '奏折字数不限,朕听得下;唯恐过于冗长则难以宣读', '题目限 30 字', '请使用中文投稿', '建议一次只讲一件事,朕才能批阅得深入', ], }, { t: '关于隐私', lis: [ '默认「匿名宣读」——直播读信时不会提你的爱卿尊号', '选择「实名宣读」——直播宣读时会提到你的尊号', '「是否允许剪辑成视频」的选择,朕会严格遵守', '本站只支持抖音扫码登录 · 仅获取你的抖音昵称与头像,不读私信、视频、粉丝', '本站与抖音平台无官方关联,请知悉', ], }, { t: '朕不会批阅的内容', lis: [ '涉及违法、涉政、涉黄内容', '恶意广告、推销、引流', '辱骂、攻击他人的内容', '未经当事人同意的他人隐私', 'AI 生成的虚假故事(朕会尽力识别,但希望爱卿们自觉)', ], }, { t: '被宣读 / 剪成视频后', lis: [ '朕会保留奏折的核心情节,但可能做少量改动以保护隐私', '若你希望撤回已被宣读的奏折,可在「我的奏折」中申请,朕会在下次朝会中致歉说明', '你保留对你文字内容的版权;朕保留宣读及剪辑发布的使用权', ], }, { t: '批阅时效', lis: [ '绝大多数奏折将在 3–7 日内批阅', '若超过 14 日未被选中,说明此次朕未能遇见这封奏折,爱卿不必气馁,可再上一本', ], }, { t: '关于本站', lis: [ '本站为「陛下」个人粉丝互动网站', '不收取任何费用,永久免费开放', '如发现 bug 或有建议,请联系陛下小秘书(微信二维码在页尾)', ], }, ]; const [open, setOpen] = useSP(0); return (
RULES · 投稿须知

上奏之前,请阅此篇

朕的规矩,爱卿请知

{items.map((it, i) => (
{open === i && (
    {it.lis.map((l, j) =>
  • {l}
  • )}
)}
))}

朕感谢每一位愿意提笔上奏的爱卿。
这个信箱,因你而存在。

); } /* ========================================================= FAQ · 常见之问 ========================================================= */ function FAQPage() { const groups = [ { id: 'post', label: '投稿相关', qs: [ ['朕何时批阅我的奏折?', '绝大多数奏折将于 3–7 日内批阅。朕的案头每日都有新奏,请爱卿稍候。'], ['为何我的奏折一直是「待批阅」状态?', '可能原因:一、尚未轮到;二、内容不符合朕的规矩(详见《投稿须知》);三、朕此刻在闭关(休播期)。'], ['朕何时会宣读我的奏折?', '被标记为「已选中」后,通常在 7–14 日内的朝会中宣读。具体时间不定,因奏折多寡与朕当日心情而定。'], ['可以一次投多封奏折吗?', '可以,但朕恳请爱卿一奏一事。事多情杂,朕难以批阅得深。'], ['我的奏折被拒了,是朕不喜欢吗?', '并非如此。朕每日所阅奏折甚多,无法悉数宣读。不被选中,只代表「这次没有缘分」,不代表爱卿的故事不值一听。'], ], }, { id: 'acct', label: '账号相关', qs: [ ['如何登录?', '本站只支持抖音扫码登录 · 电脑端访问会跳到抖音二维码页,用抖音 App 扫码即可;手机端会自动跳到抖音 App 完成授权。无需另设密码。'], ['为何不需要密码?', '朕通过抖音平台认你身份,既不存密码也不会泄漏。换设备只需再扫一次抖音码,十分简便。'], ['可否换抖音号登录?', '可以。同一个抖音号每次扫码登录的都是同一个爱卿档案。换了抖音号即换了档案,旧档案不可合并。'], ['可以修改尊号、头像吗?', '可以。个人中心 → 账号设置 → 修改尊号。头像默认沿用你的抖音头像。'], ['可以注销账号吗?', '可以。个人中心 → 账号设置 → 注销账号。注销后所有数据不可恢复,请慎重。'], ], }, { id: 'privacy', label: '隐私相关', qs: [ ['我的奏折会被所有人看到吗?', '仅「已被批阅并公开」的奏折会展示在「御批精选」页面。「待批阅」和「已选中未宣读」的奏折,仅你和朕可见。'], ['选择「匿名宣读」后真的不会暴露身份吗?', '朕会遵守承诺,在直播和剪辑中不提你的爱卿尊号和抖音 ID。但如果奏折内容本身含有可识别的个人信息(如「我是住在上海的 30 岁女性」),朕建议你在投稿时自行调整。'], ['本站会收集我的什么信息?', '仅在你抖音授权时获取的:抖音 open_id(用于辨识你)、抖音昵称、抖音头像。除此之外只存你投递的奏折和评论。不读取你的私信、视频、粉丝。'], ], }, { id: 'tech', label: '技术问题', qs: [ ['网站卡顿 / 打不开怎么办?', '请先尝试刷新页面、清除浏览器缓存。若仍有问题,可联系陛下小秘书反馈。'], ['支持哪些浏览器?', '建议使用 Chrome、Safari、Edge、Firefox 的较新版本。移动端全部主流浏览器均支持。'], ['可以用电脑投稿吗?', '当然可以,本站是纯网页端,手机和电脑浏览器均可使用。'], ], }, { id: 'other', label: '其他', qs: [ ['陛下真的每封都看吗?', '是。这是朕的承诺。'], ['陛下可以回复我的私信吗?', '朕无法一一私信回复,但每一封奏折的心意,朕都记得。若有幸被宣读,便是朕给你的回音。'], ['本站会做 App 吗?', '暂无计划。纯网页足矣,朕希望这里是一个安静的地方,不需要每天弹通知扰爱卿。'], ], }, ]; const [active, setActive] = useSP('post'); const [openMap, setOpenMap] = useSP({}); const toggle = (k) => setOpenMap(m => ({ ...m, [k]: !m[k] })); return (
FAQ · 常见之问

朕替你答

爱卿若有疑,先翻此册

{groups.map(g => (

{g.label}

{g.qs.map(([q, a], i) => { const key = `${g.id}-${i}`; const isOpen = !!openMap[key]; return (
{isOpen &&

{a}

}
); })}
))}

若此处未见你的问题,请联系陛下小秘书

微信扫码 · 陛下小秘书
); } /* ========================================================= 404 ========================================================= */ function NotFoundPage({ onHome, onCompose }) { return (
{/* gate */} {/* closed doors */} {/* tiled roof */} {/* lock */}
404

此地并无此宫门

爱卿走错了路,朕在此等你回头

若你坚信此处应有此宫门,请告知陛下小秘书。

); } /* ========================================================= Forgot Password ========================================================= */ function ForgotPasswordPage({ onBack }) { const [submitted, setSubmitted] = useSP(false); const [id, setId] = useSP(''); const [name, setName] = useSP(''); const [busy, setBusy] = useSP(false); const [err, setErr] = useSP(''); async function submit() { if (!id.trim()) { setErr('请填抖音 ID'); return; } setErr(''); setBusy(true); try { if (window.bxApi) { // Backend returns the same response whether the account exists or not, to // avoid leaking whether a given douyin_id is registered. await window.bxApi.forgotPassword(id.trim()); } setSubmitted(true); } catch (e) { setErr((e && e.message) || '提交失败,请稍后再试'); } finally { setBusy(false); } } if (submitted) { return (

申请已呈

若此抖音 ID 有关联账号,朕已备好重置令牌。请联系陛下小秘书出示你的抖音 ID,核实后小秘书将告知你令牌,你即可重设口谕。

微信扫码 · 陛下小秘书
); } return (

爱卿忘了钥匙

朕来帮你

{err &&
{err}
}
); } Object.assign(window, { AboutPage, RulesPage, FAQPage, NotFoundPage, ForgotPasswordPage });