authlib-injector icon indicating copy to clipboard operation
authlib-injector copied to clipboard

[proposal] 启动器公告

Open yushijinhun opened this issue 5 years ago • 6 comments

概述

该提案为验证服务器向启动器推送公告制定了规范。

格式

公告包含在 meta 里的 notice 属性中,其格式如下:

{
    "content": "公告文本",
    "lastUpdate": "最后更新时间(可选)"
}
  • 公告文本 content 是一段纯文本。文本可以有多行,使用 LF 作为换行符。
  • 最后更新时间 lastUpdate 是一个符合 ISO 8601 格式的日期时间,如 2011-03-21T00:18:56Z

下面给出一个完整的例子:

{
    "meta": {
        "notice": {
            "content": "欢迎来到某服务器\n网站:https://example.com/\nQQ群:123456789",
            "lastUpdate": "2018-12-01T13:16:17Z"
        },
        ...
    },
    ...
}

启动器实现时的注意点

  • 建议将文本中的 URL 识别为超链接,以便用户直接点击访问。
  • 建议将公告显示在启动器首屏上,让用户一眼就能看到其内容。
  • 显示最后更新时间时,注意将其转换为当地时间。
  • 可以通过最后更新时间的变化,来提示用户公告内容有改动。

验证服务器实现时的注意点

  • 公告内容中,换行符使用 LF。
  • 如果公告中包含 URL,且 URL 较长,则可以考虑使用短链接。

欢迎诸位就本提案提出意见。

yushijinhun avatar Nov 28 '18 10:11 yushijinhun

lastUpdate 为什么不用 Unix 时间戳?方便读取,不会有解析问题,更不会有时区问题。

andylizi avatar Nov 28 '18 12:11 andylizi

@andylizi 我所使用的日期时间格式也是标准的,各语言的类库应该都提供了格式化函数。而且和 UNIX 时间戳相比,ISO 8601 是人类可读的。至于时区的问题,字符串末尾的 Z 代表的就是 UTC 时区。

yushijinhun avatar Nov 28 '18 14:11 yushijinhun

我觉得可以像error一样,提供一个机器可读(Unix时间戳)和一个人类可读(按服务器所在时区计算)来提供公告

GreyElaina avatar Mar 09 '19 16:03 GreyElaina

我觉得可以像error一样,提供一个机器可读(Unix时间戳)和一个人类可读(按服务器所在时区计算)来提供公告

没有必要,只要统一采用UTC时间就行。

yushijinhun avatar Mar 09 '19 16:03 yushijinhun

lastUpdate 为什么不用 Unix 时间戳?方便读取,不会有解析问题,更不会有时区问题。

同意,API是放机器读取的,Unix时间戳无非是最好的选择,让启动器自行将timestamp转为可读时间即可

MlgmXyysd avatar Aug 25 '20 16:08 MlgmXyysd

那就不规定时区好了,反正 ISO 8601 里自己带时区信息。

yushijinhun avatar Aug 25 '20 16:08 yushijinhun