UNPKG

node-vk-api-bot

Version:

A library that helps you to create chat-bot for group or user

108 lines (107 loc) 4.78 kB
import Methods from './methods.js'; import { GroupUpdates } from './group-updates.js'; declare type AllMethods<T> = Methods.AllMethods<T>; declare type BotType = 'group' | 'user'; declare type BotInit<T extends BotType> = ({ token: string; type: T; }) & (T extends 'group' ? { group_id: number; } : { group_id?: number | null; }); import { UserUpdates } from './user-updates.js'; declare type ResponseType<G extends BotType, T extends AllMethods<G>> = Methods.MethodResponse[T]; declare type ErrorType = { error_code: number; error_msg: string; request_params: Record<string, string>[]; }; declare type RawResponse<G extends BotType, T extends AllMethods<G>> = { response: ResponseType<G, T>; error?: never; } | { response?: never; error: ErrorType; }; declare type MethodParams<G extends BotType, T extends AllMethods<G>, P = Methods.MethodRequest[T]> = { method: T; overrideToken?: string; } & (P extends null ? { params?: null; } : { params: P; }); declare type StaticMethodParams<G extends BotType, T extends AllMethods<G>> = { method: T; token: string; params: Methods.MethodRequest[T]; }; declare type MethodCallback<G extends BotType, T extends AllMethods<G>> = (data: MethodResponse<G, T>) => void; declare type pollingOptions<T extends BotType> = { wait: number; } & (T extends 'user' ? { mode: { attachment?: boolean; extraEvents?: boolean; returnPTS?: boolean; return$extraInEvent8?: boolean; returnRandomId?: boolean; } | number; } : { wait: number; }); declare class MethodResponse<G extends BotType, T extends AllMethods<G>> { response: Methods.MethodResponse[T] | null; error: ErrorType | null; constructor(data: RawResponse<G, T>); /** * Calls callback function if response state is not error * @returns reference to response so you can chain `ifError` and `ifResponse` * ```js * new Bot().method().then(data => data.ifError((e) => console.error(e)).ifResponse((r) => {})); * ``` */ ifResponse(cb: (data: Methods.MethodResponse[T]) => void): this; /** * Calls callback function if response state is error * @returns reference to response so you can chain `ifError` and `ifResponse` * ```js * new Bot().method().then(data => data.ifError((e) => console.error(e)).ifResponse((r) => {})); * ``` */ ifError(cb: (err: ErrorType) => void): this; } declare class Bot<T extends BotType> { #private; group_id: number | null; type: T; v: 5.131; constructor(options: BotInit<T>); /** * Add a listener to event * * If added a listener to `any` event, no one typed event is more returned * * If event type is `raw` (for user long poll) adding of listeners for not-`raw` version is ignored * @param event Event name * @param listener callback function * @returns reference to `this` */ addEventListener<G extends T extends 'user' ? UserUpdates.UpdateTypes : GroupUpdates.UpdateTypes = T extends 'user' ? UserUpdates.UpdateTypes : GroupUpdates.UpdateTypes, E extends G | 'any' | 'any_raw' = 'any'>(event: E, listener: (update: (G extends UserUpdates.UpdateTypes ? E extends `raw_${string}` ? UserUpdates.Update<E> : UserUpdates.Update<E extends 'any' | 'any_raw' ? any : E> : GroupUpdates.Update<E extends 'any' | 'any_raw' ? any : E>)) => void): this; on: <G extends T extends "user" ? UserUpdates.UpdateTypes : GroupUpdates.UpdateTypes = T extends "user" ? UserUpdates.UpdateTypes : GroupUpdates.UpdateTypes, E extends G | "any" | "any_raw" = "any">(event: E, listener: (update: G extends UserUpdates.UpdateTypes ? E extends `raw_${string}` ? UserUpdates.Update<E> : UserUpdates.Update<E extends "any" | "any_raw" ? any : E> : GroupUpdates.Update<E extends "any" | "any_raw" ? any : E>) => void) => this; static method<G extends BotType, M extends AllMethods<G>>(options: StaticMethodParams<G, M>): Promise<MethodResponse<G, M>>; static method<G extends BotType, M extends AllMethods<G>>(options: StaticMethodParams<G, M>, cb?: MethodCallback<G, M>): void; method<M extends AllMethods<T>>(options: MethodParams<T, M>, cb: MethodCallback<T, M>): void; method<M extends AllMethods<T>>(options: MethodParams<T, M>): Promise<MethodResponse<T, M>>; startPolling(options?: pollingOptions<T>): Promise<void>; startPolling(options?: pollingOptions<T>, cb?: () => void): Promise<void>; startPolling(cb?: () => void): Promise<void>; /** * Stops current LongPoll request * @returns `true` if polling has been stopped otherwise `false` */ stopPolling(cb?: () => void): boolean; } export { Methods, GroupUpdates, UserUpdates, }; export default Bot;