UNPKG

koishi-plugin-booru

Version:
89 lines (88 loc) 2.87 kB
import { Computed, Context, Schema, Service } from 'koishi'; import { ImageSource } from './source'; export * from './source'; declare module 'koishi' { interface Context { booru: ImageService; } } declare class ImageService extends Service { static inject: { required: any[]; optional: string[]; }; private sources; private languageDetect; constructor(ctx: Context, config: Config); register(source: ImageSource): () => boolean; hasSource(name?: string): boolean; get(query: ImageService.Query): Promise<ImageArray>; resizeImageToFixedWidth(url: string, size: number): Promise<string>; imgUrlToAssetUrl(url: string): Promise<string>; imgUrlToBase64(url: string): Promise<string>; } declare namespace ImageService { interface Query { query: string; labels: string[]; count: number; } } export declare enum OutputType { ImageOnly = 0, ImageAndInfo = 1, ImageAndLink = 2, All = 3 } export declare enum SpoilerType { Disabled = 0, All = 1, OnlyNSFW = 2 } export interface Config { detectLanguage: boolean; confidence: number; maxCount: number; output: OutputType; outputMethod: 'one-by-one' | 'merge-multiple' | 'forward-all' | 'forward-multiple'; preferSize: ImageSource.PreferSize; autoResize: Computed<boolean>; nsfw: boolean; asset: boolean; base64: boolean; spoiler: SpoilerType; showTips: boolean; } interface ImageArray extends Array<ImageSource.Result> { source: string; } export declare const Config: Schema<Schemastery.ObjectS<{ detectLanguage: Schema<boolean, boolean>; }> | Schemastery.ObjectS<{ maxCount: Schema<number, number>; nsfw: Schema<boolean, boolean>; }> | Schemastery.ObjectS<{ output: Schema<0 | 1 | 2 | 3, 0 | 1 | 2 | 3>; outputMethod: Schema<"one-by-one" | "merge-multiple" | "forward-all" | "forward-multiple", "one-by-one" | "merge-multiple" | "forward-all" | "forward-multiple">; preferSize: Schema<"original" | "large" | "medium" | "small" | "thumbnail", "original" | "large" | "medium" | "small" | "thumbnail">; autoResize: Schema<Computed<boolean>, Computed<boolean>>; asset: Schema<boolean, boolean>; base64: Schema<boolean, boolean>; spoiler: Schema<0 | 1 | 2, 0 | 1 | 2>; showTips: Schema<boolean, boolean>; }>, { detectLanguage: boolean; } & import("cosmokit").Dict & { maxCount: number; nsfw: boolean; } & { output: 0 | 1 | 2 | 3; outputMethod: "one-by-one" | "merge-multiple" | "forward-all" | "forward-multiple"; preferSize: "original" | "large" | "medium" | "small" | "thumbnail"; autoResize: Computed<boolean>; asset: boolean; base64: boolean; spoiler: 0 | 1 | 2; showTips: boolean; }>; export declare function apply(ctx: Context, config: Config): void;