Skip to content
目录

服务

booru 插件会注册名为 booru 的服务,可以被其他插件调用。

检测图源

booru 服务提供了 hasSource() 方法,可以用于判断是否存在任意图源,或是否存在指定的图源。

ts
import { Context } from 'koishi'

export function apply(ctx: Context) {
  ctx.booru.hasSource() // 是否存在任意图源
  ctx.boooru.hasSource('pixiv') // 是否存在 pixiv 图源
}

获取图片

booru 服务提供了 get() 方法,可以用于获取图片。

tsx
import { Context } from 'koishi'

export function apply(ctx: Context) {
  ctx.command('恋恋最可爱').action(async () => {
    const image = await ctx.booru.get({ tags: 'komeiji koishi', raw: 'komeiji koishi', count: 1 })
    return <image url={image.url} />
  })
}
A
Alice
恋恋最可爱
Koishi
I miss You
作者: 京田スズカ
页面地址: https://www.pixiv.net/artworks/101250949
作者主页: https://www.pixiv.net/users/3718340
图源: pixiv
标签: 東方 東方Project 古明地こいし こいしちゃんうふふ こいしちゃんマジ天使 目がハート 東方Project1000users入り 白抜きまつ毛

注册图源

booru 服务提供了 register() 方法,可以用于注册图源。

:::warn 如果你在开发图源插件,只需要继承 ImageSource 类,它会自动将自己注册到 booru 服务中。 :::

你也可以手动注册和注销图源,这在你需要动态注册图源时非常有用。

ts
import { Context } from 'koishi'

class PixivSource {
  name = 'pixiv'
  languages = ['zh-CN', 'ja']
  async get(query: ImageSource.Query): Promise<ImageSource.Result[]> {
    // ...
  }
}

export function apply(ctx: Context, config: Config) {
  // 注册图源
  const dispose = ctx.booru.register(new PixivSource(ctx, config))
  // 注销图源
  dispose()
}