koishi-plugin-booru
Version:
Image service for Koishi
92 lines (91 loc) • 2.96 kB
TypeScript
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;
blacklist: string[];
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>;
blacklist: Schema<string[], string[]>;
}> | 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<"thumbnail" | "large" | "medium" | "small" | "original", "thumbnail" | "large" | "medium" | "small" | "original">;
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;
blacklist: string[];
} & {
output: 0 | 1 | 2 | 3;
outputMethod: "one-by-one" | "merge-multiple" | "forward-all" | "forward-multiple";
preferSize: "thumbnail" | "large" | "medium" | "small" | "original";
autoResize: Computed<boolean>;
asset: boolean;
base64: boolean;
spoiler: 0 | 1 | 2;
showTips: boolean;
}>;
export declare function apply(ctx: Context, config: Config): void;