mirror of
https://github.com/yml2213/javascript.git
synced 2026-10-22 09:34:00 +08:00
121 lines
4.6 KiB
TypeScript
121 lines
4.6 KiB
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 {};
|