此文档已弃用。请访问我们的最新文档:https://koishi.chat

资源存储 (Assets)

WARNING

ctx.assets 并非内置服务。如要使用请同时安装提供此服务的插件,可参见 相关生态

在一些情况下,我们需要非即时地处理含有资源消息段的消息,例如使用 dialogue 插件添加教学问答,或是在 github 插件中快速回复等等。虽然可以直接将这些资源消息段发送出去,但由于涉及的消息会被长时间存储,将会导致一些潜在的问题:

  • 部分平台提供的资源链接只对特定账户可用,因此发送出去的消息无法被其他平台解析
  • 部分平台提供的资源链接并不是永久生效的,在一段时间后相应的内容将失效

为了解决这些问题,我们设计了 Assets API。通过这个接口,我们可以将资源文件转存起来,并生成永久链接用于后续处理。

公开方法

assets.transform(content)

  • content: string 要处理的消息文本
  • 返回值: Promise<string> 处理后的消息文本

将消息文本中的资源全部转存,并将链接替换为永久链接。

assets.stats() 抽象

  • 返回值: Promise<Stats> 服务状态信息
export interface Stats {
  assetCount?: number
  assetSize?: number
}

内部方法

要实现 Assets API,你需要创建一个 Assets 的派生类。下面将介绍这个类的内部方法。

assets.analyze(url, file?)

  • url: string 资源 URL
  • file: string 资源文件名
  • 返回值: Promise<FileInfo> 文件信息
export interface FileInfo {
  name: string
  filename: string
  hash: string
  buffer: Buffer
}

assets.upload(url, file) 抽象

  • url: string 资源 URL
  • file: string 资源文件名
  • 返回值: Promise<string> 永久链接

转存给定的资源文件,返回其对应的永久链接。

相关生态

以下是提供此服务的官方插件:

以下是使用此服务的插件: