cyberbot-next
Version:
cyberbot, 基于napcat-ts, nodejs,轻量qq机器人框架。
146 lines (145 loc) • 6.08 kB
TypeScript
import { type AllHandlers, NCWebsocket, Structs, type Send } from "node-napcat-ts";
export type MessageContext = AllHandlers['message'] | AllHandlers['message.private'] | AllHandlers['message.group'] | AllHandlers['notice'] | AllHandlers['request'];
export interface Plugin {
name: string;
version: string;
description?: string;
cron?: [string, (e: NapcatClient) => void][];
initialize(client: NapcatClient): void;
cleanup(): void;
}
export interface GenericPlugin<T = NapcatClient> extends Omit<Plugin, 'cron'> {
cron?: [string, (e: T) => void][];
}
export interface NapcatConnector extends NCWebsocket {
onMessage(handler: (e: MessageContext) => void): void;
removeMessageListener(handler: (e: MessageContext) => void): boolean;
connect(): Promise<void>;
disconnect(): void;
setConfig(config: Config): void;
getConfig(): Config;
}
export interface NapcatClient {
logger: Logger;
onMessage(handler: (e: MessageContext) => void): void;
removeMessageListener(handler: (e: MessageContext) => void): boolean;
events: {
reply(context: MessageContext, content: any, quote?: boolean): Promise<{
message_id: number;
}>;
sendPrivateMessage(userId: number, content: any): Promise<{
message_id: number;
}>;
sendGroupMessage(groupId: number, content: any): Promise<{
message_id: number;
}>;
isMaster: (id: number) => Promise<boolean>;
isAdmin: (id: number) => Promise<boolean>;
hasRight: (user_id: number) => Promise<boolean>;
delete_msg: (message_id: number) => Promise<void>;
kick: (group_id: number, user_id: number, reject_add_request?: boolean) => Promise<void>;
ban: (group_id: number, user_id: number, duration?: number) => Promise<void>;
banAll: (group_id: number, enable: boolean) => Promise<void>;
setGroupName: (group_id: number, name: string) => Promise<void>;
setAdmin: (group_id: number, user_id: number, enable: boolean) => Promise<void>;
setTitle: (group_id: number, user_id: number, title: string) => Promise<void>;
aprroveGroup: (flag: string) => Promise<void>;
rejectGroup: (flag: string) => Promise<void>;
isGroupAdmin: (group_id: number, user_id: number) => Promise<boolean>;
isGroupOwner: (group_id: number, user_id: number) => Promise<boolean>;
md5: (text: string) => string;
randomInt: (min: number, max: number) => number;
randomItem: <T>(array: T[]) => T;
getGroupAvatarLink: (group_id: number, size?: number) => string;
getQQAvatarLink: (user_id: number, size?: number) => string;
getImageLink: (raw_message: string) => string;
getDirectLink: (url: string) => Promise<string>;
getMessageId: (raw_message: string) => string;
getMessageAt: (raw_message: string) => number[];
getText: (raw_message: string) => string;
getQuotedText: (raw_message: string) => Promise<string>;
fakeMessage: (target_id: number, message: Send['node'][], isGroup: boolean) => Promise<{
message_id: number;
res_id: string;
}>;
};
sendPrivateMessage(userId: number, content: any): Promise<{
message_id: number;
}>;
sendGroupMessage(groupId: number, content: any): Promise<{
message_id: number;
}>;
deleteMessage: (message_id: number) => Promise<void>;
kickMember: (group_id: number, user_id: number, reject_add_request?: boolean) => Promise<void>;
banMember: (group_id: number, user_id: number, duration?: number) => Promise<void>;
banAllMembers: (group_id: number, enable: boolean) => Promise<void>;
setGroupNameEx: (group_id: number, name: string) => Promise<void>;
setAdminEx: (group_id: number, user_id: number, enable: boolean) => Promise<void>;
setMemberTitle: (group_id: number, user_id: number, title: string) => Promise<void>;
isMaster: (id: number) => Promise<boolean>;
isAdmin: (id: number) => Promise<boolean>;
hasRight: (user_id: number) => Promise<boolean>;
aprroveGroup: (flag: string) => Promise<void>;
rejectGroup: (flag: string) => Promise<void>;
isGroupAdmin: (group_id: number, user_id: number) => Promise<boolean>;
isGroupOwner: (group_id: number, user_id: number) => Promise<boolean>;
md5: (text: string) => string;
randomInt: (min: number, max: number) => number;
randomItem: <T>(array: T[]) => T;
getGroupAvatarLink: (group_id: number, size?: number) => string;
getQQAvatarLink: (user_id: number, size?: number) => string;
getImageLink: (raw_message: string) => string;
getDirectLink: (url: string) => Promise<string>;
getMessageId: (raw_message: string) => string;
getMessageAt: (raw_message: string) => number[];
getText: (raw_message: string) => string;
getQuotedText: (raw_message: string) => Promise<string>;
fakeMessage: (target_id: number, message: Send['node'][], isGroup: boolean) => Promise<{
message_id: number;
res_id: string;
}>;
setConfig(config: Config): void;
getConfig(): Config;
pluginManager: any;
bot_uin: number;
napcat: NapcatConnector;
}
export interface Logger {
info(message: string): void;
error(message: string): void;
warn(message: string): void;
debug(message: string): void;
}
export type FsSizeData = {
fs: string;
type: string;
size: number;
used: number;
available: number;
mount: string;
[key: string]: any;
};
export interface Config {
bot: number;
master: number;
admins: number[];
baseUrl: string;
accessToken: string;
throwPromise: boolean;
reconnection: {
enable: boolean;
attempts: number;
delay: number;
};
debug: boolean;
plugins: {
system: string[];
user: string[];
};
logger: {
level: string;
maxSize: string;
maxDays: number;
};
}
export { type AllHandlers, NCWebsocket, Structs, type Send };