UNPKG

koishi-plugin-beatsaber-bot

Version:

一个 用于 BeatSaber 的 koishi Bot 插件

33 lines (32 loc) 1.66 kB
import { Context } from "koishi"; import { Config } from "../../config"; import { BeatLeaderService } from "./composed/beatleader"; import { BeatSaverService } from "./composed/beatsaver"; import { ScoreSaberService } from "./composed/scoresaber"; import { AIOSaberService } from "./composed/aiosaber"; import { NetReqResult } from "./netResult"; type ServiceWithAPIHelper<API, Wrap extends boolean = false> = Wrapped<API, Wrap> & APIHelper<API, Wrap>; type Wrapping<T, I extends boolean = false> = T extends ((...args: infer Args) => infer R) ? <Wrap extends boolean = false>(...args: Args) => (R extends Promise<infer R1> ? (I extends true ? Promise<NetReqResult<R1>> : (Wrap extends true ? Promise<NetReqResult<R1>> : Promise<R1>)) : R) : T; type Wrapped<T, Wrap extends boolean = false> = { [K in keyof T]: Wrapping<T[K], Wrap>; }; export declare class APIService { BeatLeader: ServiceWithAPIHelper<BeatLeaderService>; ScoreSaber: ServiceWithAPIHelper<ScoreSaberService>; BeatSaver: ServiceWithAPIHelper<BeatSaverService>; AIOSaber: ServiceWithAPIHelper<AIOSaberService>; private constructor(); static create(ctx: Context, cfg: Config): APIService; } type Res<Base, T> = Base extends true ? NetReqResult<T> : T; declare class APIHelper<API, Base extends boolean = false> { constructor(); private retryTime; private _wrapper; private _onRetry; withRetry(times?: number, onRetry?: (retryTime: number, e?: any) => void): this; onRetry(func: (times: number, e: any) => void): this; call<T>(block: () => Promise<T>): Promise<Res<Base, T>>; wrapperResult(): ServiceWithAPIHelper<API, true>; } export {};