koishi-plugin-bilibili-notify
Version:
Koishi bilibili notify plugin
113 lines (112 loc) • 3.85 kB
TypeScript
import { Bot, Context, FlatPick, Logger, Schema, Session } from "koishi";
import { Notifier } from "@koishijs/plugin-notifier";
import { LoginBili } from "./database";
type ChannelIdArr = Array<{
channelId: string;
dynamic: boolean;
live: boolean;
atAll: boolean;
}>;
type TargetItem = {
channelIdArr: ChannelIdArr;
platform: string;
};
type Target = Array<TargetItem>;
type SubItem = {
id: number;
uid: string;
roomId: string;
target: Target;
platform: string;
live: boolean;
dynamic: boolean;
liveDispose: Function;
};
type SubManager = Array<SubItem>;
declare class ComRegister {
static inject: string[];
qqRelatedBotList: Array<string>;
logger: Logger;
config: ComRegister.Config;
loginTimer: Function;
num: number;
rebootCount: number;
subNotifier: Notifier;
subManager: SubManager;
loginDBData: FlatPick<LoginBili, "dynamic_group_id">;
privateBot: Bot<Context>;
dynamicDispose: Function;
sendMsgFunc: (bot: Bot<Context, any>, channelId: string, content: any) => Promise<void>;
constructor(ctx: Context, config: ComRegister.Config);
init(ctx: Context, config: ComRegister.Config): Promise<void>;
splitMultiPlatformStr(str: string): Target;
getBot(ctx: Context, pf: string): Bot<Context, any>;
sendPrivateMsg(content: string): Promise<void>;
sendPrivateMsgAndRebootService(ctx: Context): Promise<void>;
sendPrivateMsgAndStopService(ctx: Context): Promise<void>;
sendMsg(ctx: Context, targets: Target, content: any, live?: boolean): Promise<void>;
dynamicDetect(ctx: Context): () => Promise<void>;
debug_dynamicDetect(ctx: Context): () => Promise<void>;
liveDetect(ctx: Context, roomId: string, target: Target): () => Promise<void>;
subShow(): string;
checkIfNeedSub(liveSub: boolean, dynamicSub: boolean, session: Session, liveRoomData: any): Promise<Array<boolean>>;
updateSubNotifier(ctx: Context): void;
checkIfLoginInfoIsLoaded(ctx: Context): Promise<unknown>;
subUserInBili(ctx: Context, mid: string): Promise<{
flag: boolean;
msg: string;
}>;
loadSubFromConfig(ctx: Context, subs: ComRegister.Config["sub"]): Promise<void>;
loadSubFromDatabase(ctx: Context): Promise<void>;
checkIfDynamicDetectIsNeeded(ctx: Context): void;
enableDynamicDetect(ctx: Context): void;
unsubSingle(ctx: Context, id: string, type: number): string;
checkIfUserIsTheLastOneWhoSubDyn(): void;
unsubAll(ctx: Context, uid: string): void;
checkIfIsLogin(ctx: Context): Promise<boolean>;
}
declare namespace ComRegister {
interface Config {
sub: Array<{
uid: string;
dynamic: boolean;
live: boolean;
target: Array<{
channelIdArr: Array<{
channelId: string;
dynamic: boolean;
live: boolean;
atAll: boolean;
}>;
platform: string;
}>;
}>;
master: {
enable: boolean;
platform: string;
masterAccount: string;
masterAccountGuildId: string;
};
unlockSubLimits: boolean;
automaticResend: boolean;
changeMasterInfoApi: boolean;
restartPush: boolean;
pushTime: number;
liveLoopTime: number;
customLiveStart: string;
customLive: string;
customLiveEnd: string;
dynamicUrl: boolean;
dynamicLoopTime: number;
dynamicCheckNumber: number;
filter: {
enable: boolean;
notify: boolean;
regex: string;
keywords: Array<string>;
};
dynamicDebugMode: boolean;
}
const Config: Schema<Config>;
}
export default ComRegister;