lemon-bot
Version:
a qq bot framework
121 lines (120 loc) • 4.68 kB
TypeScript
import { Message } from './CQHelper';
import { HttpPlugin } from './HttpPlugin';
import { HistoryMessage } from './Session';
declare type OrPromise<T> = T | Promise<T>;
export declare enum Scope {
user = "user",
group = "group",
both = "both"
}
export declare enum TriggerType {
at = "at",
noAt = "noAt",
both = "both"
}
export declare enum TriggerScope {
'all' = 7,
'owner' = 4,
'admin' = 2,
'member' = 1
}
export declare enum MessageFromType {
'userFriend' = "userFriend",
'userGroup' = "userGroup",
'userOther' = "userOther",
'qqGroupNormal' = "qqGroupNormal",
'qqGroupAnonymous' = "qqGroupAnonymous",
'unknown' = "unknown"
}
export interface RequestIdentity {
robot: number;
messageFromType: MessageFromType;
fromUser: number | AnonymousUser;
fromGroup: number | undefined;
}
export interface AnonymousUser {
id: number;
name: string;
flag: string;
}
export interface UserMessageInfo extends RequestIdentity {
messageFromType: MessageFromType.userFriend | MessageFromType.userGroup | MessageFromType.userOther;
fromUser: number;
fromGroup: undefined;
}
export interface QQGroupNormalMessageInfo extends RequestIdentity {
messageFromType: MessageFromType.qqGroupNormal;
fromUser: number;
fromGroup: number;
}
export interface QQGroupAnonymousMessageInfo extends RequestIdentity {
messageFromType: MessageFromType.qqGroupAnonymous;
fromUser: AnonymousUser;
fromGroup: number;
}
interface BaseParams {
message: Message[];
rawMessage: string;
requestBody: any;
}
declare type SetNextFn = (sessionFunctionName: string, expireSeconds?: number) => Promise<void>;
declare type SetEndFn = () => Promise<void>;
export interface ParseParams extends BaseParams, RequestIdentity {
}
export declare type ParseReturn = any;
interface HandlerBaseParams extends BaseParams {
setNext: SetNextFn;
}
export interface UserHandlerParams<D = unknown> extends HandlerBaseParams, UserMessageInfo {
data: D;
}
interface GroupHandlerBaseParams<D = unknown> extends HandlerBaseParams {
isAt: boolean;
data: D;
}
export declare type GroupHandlerParams<D = unknown> = GroupHandlerBaseParams<D> & (QQGroupAnonymousMessageInfo | QQGroupNormalMessageInfo);
export interface BothHandlerParams<D = unknown> extends HandlerBaseParams, RequestIdentity {
data: D;
}
export interface SessionHandlerParams extends HandlerBaseParams {
setEnd: SetEndFn;
historyMessage: HistoryMessage;
}
export declare type HandlerReturn = {
atSender: boolean;
content: string;
} | string[] | string | void;
export declare type UserHandlerReturn = HandlerReturn;
export declare type GroupHandlerReturn = HandlerReturn;
export declare type BothHandlerReturn = HandlerReturn;
export declare type SessionHandlerReturn = HandlerReturn;
export declare abstract class Command<C = unknown, D = unknown> {
static blackList: string[];
scope: Scope;
directives: string[];
context: C;
httpPlugin: HttpPlugin;
includeGroup?: number[];
excludeGroup?: number[];
includeUser?: number[];
excludeUser?: number[];
triggerType?: TriggerType;
triggerScope?: TriggerScope;
constructor();
static validate(cmd: Command): void;
directive?(): string[];
parse?(params: ParseParams): OrPromise<ParseReturn>;
user?(params: UserHandlerParams<D>): OrPromise<HandlerReturn>;
group?(params: GroupHandlerParams<D>): OrPromise<HandlerReturn>;
both?(params: BothHandlerParams<D>): OrPromise<HandlerReturn>;
}
export declare function include(include: number[]): (proto: any, name: any, descriptor: any) => void;
export declare function exclude(exclude: number[]): (proto: any, name: any, descriptor: any) => void;
export declare function trigger(type: TriggerType): (proto: any, name: any, descriptor: any) => void;
export declare function scope(role: TriggerScope): (proto: any, name: any, descriptor: any) => void;
declare type HandlerParams = UserHandlerParams | GroupHandlerParams | BothHandlerParams;
export declare function fromUserMessage(p: HandlerParams): p is UserHandlerParams;
export declare function fromQQGroupMessage(p: HandlerParams): p is GroupHandlerBaseParams & (QQGroupNormalMessageInfo | QQGroupAnonymousMessageInfo);
export declare function fromQQGroupNormalMessage(p: HandlerParams): p is GroupHandlerBaseParams & QQGroupNormalMessageInfo;
export declare function fromQQGroupAnonymousMessage(p: HandlerParams): p is GroupHandlerBaseParams & QQGroupAnonymousMessageInfo;
export {};