跳转至

资源对象 Resource

资源 (Resource) 是 Avilla 对于提供某种类型的资源的抽象, 其只关心特定类型资源的提供,而不关心其背后的细节。

通常,我们使用 Context.fetch 方法来拉取资源内容。

得益于 typing,你可以在这方面得到更优秀的自动补全。

a = await cx.fetch(LocalFileResource(...))

# LocalFileResource <: Resource[bytes]
reveal_type(a) # => bytes

元信息🔗

对于 Resource,如果其实现了 to_selector 方法,则可以通过 Context.pull 或是 Staff.pull_metadata 方法获取一个资源类实例的 Metadata。

你可以在以下文档中找到更详细的信息:

Warning

对于不同的协议实现,根据其对接平台所需的与给出的信息, 协议实现会自行声明各种的资源类。如 OneBot/v11 协议实现就派生了 OneBot11ImageResourceOneBot11FileResource 等资源类。 在实际情况中,如果需要获取资源本身的详细信息,你有两种方法: 一是使用元信息 (Metadata) 机制, 如果资源类型本身支持,也是我们所推荐的方法; 二是使用 isinstance 类型自省。