UNPKG

node-vk-api-bot

Version:

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

377 lines (376 loc) 11.3 kB
import { flag } from './types/utils.js'; declare type n = number; declare type s = string; export declare namespace UserUpdates { export enum MessageFlags { unread = 1, outbox = 2, replied = 4, important = 8, chat = 16, friends = 32, spam = 64, deleted = 128, fixed = 256, media = 512, hidden = 65536, delete_for_all = 131072, not_delivered = 262144 } export enum PeerFlags { important = 1, unanswered = 2 } export enum LongPollMode { attachment = 2, extraEvents = 8, returnPTS = 32, return$extraInEvent8 = 64, returnRandomId = 128 } export enum RawUpdateTypes { raw_messageFlagReplace = 1, raw_messageFlagSet = 2, raw_messageFlagReset = 3, raw_messageAdd = 4, raw_messageEdit = 5, raw_messageInRead = 6, raw_messageOutRead = 7, raw_friendOnline = 8, raw_friendOffline = 9, raw_dialogFlagReset = 10, raw_dialogFlagSet = 11, raw_dialogFlagReplace = 12, raw_messageDelete = 13, raw_messageRestore = 14, raw_dialogMajorIdChanged = 20, raw_dialogMinorIdChanged = 21, raw_chatParamChanged = 51, raw_dialogInfoChanged = 52, raw_dialogTyping = 61, raw_chatTyping = 62, raw_chatTypingMany = 63, raw_chatAudioMessage = 64, raw_call = 70, raw_leftMenuCounterChanged = 80, raw_notificationSettingsChanged = 114 } export enum UpdateTypes { messageFlagReplace = "messageFlagReplace", messageFlagSet = "messageFlagSet", messageFlagReset = "messageFlagReset", messageAdd = "messageAdd", messageEdit = "messageEdit", messageInRead = "messageInRead", messageOutRead = "messageOutRead", friendOnline = "friendOnline", friendOffline = "friendOffline", dialogFlagReset = "dialogFlagReset", dialogFlagSet = "dialogFlagSet", dialogFlagReplace = "dialogFlagReplace", messageDelete = "messageDelete", messageRestore = "messageRestore", dialogMajorIdChanged = "dialogMajorIdChanged", dialogMinorIdChanged = "dialogMinorIdChanged", chatParamChanged = "chatParamChanged", dialogInfoChanged = "dialogInfoChanged", dialogTyping = "dialogTyping", chatTyping = "chatTyping", chatTypingMany = "chatTypingMany", chatAudioMessage = "chatAudioMessage", call = "call", leftMenuCounterChanged = "leftMenuCounterChanged", notificationSettingsChanged = "notificationSettingsChanged", raw_messageFlagReplace = "raw_messageFlagReplace", raw_messageFlagSet = "raw_messageFlagSet", raw_messageFlagReset = "raw_messageFlagReset", raw_messageAdd = "raw_messageAdd", raw_messageEdit = "raw_messageEdit", raw_messageInRead = "raw_messageInRead", raw_messageOutRead = "raw_messageOutRead", raw_friendOnline = "raw_friendOnline", raw_friendOffline = "raw_friendOffline", raw_dialogFlagReset = "raw_dialogFlagReset", raw_dialogFlagSet = "raw_dialogFlagSet", raw_dialogFlagReplace = "raw_dialogFlagReplace", raw_messageDelete = "raw_messageDelete", raw_messageRestore = "raw_messageRestore", raw_dialogMajorIdChanged = "raw_dialogMajorIdChanged", raw_dialogMinorIdChanged = "raw_dialogMinorIdChanged", raw_chatParamChanged = "raw_chatParamChanged", raw_dialogInfoChanged = "raw_dialogInfoChanged", raw_dialogTyping = "raw_dialogTyping", raw_chatTyping = "raw_chatTyping", raw_chatTypingMany = "raw_chatTypingMany", raw_chatAudioMessage = "raw_chatAudioMessage", raw_call = "raw_call", raw_leftMenuCounterChanged = "raw_leftMenuCounterChanged", raw_notificationSettingsChanged = "raw_notificationSettingsChanged" } type raw_attachment = { [x: `attach${n}_type`]: 'photo' | 'video' | 'audio' | 'doc' | 'wall' | 'sticker' | 'link' | 'money'; [x: `attach${n}`]: `${n}_${n}` | undefined; geo?: unknown; geo_provider_id?: unknown; [x: `attach${n}_product_id`]: n | undefined; [x: `attach${n}_photo`]: `${n}_${n}` | undefined; [x: `attach${n}_title`]: s | undefined; [x: `attach${n}_desc`]: s | undefined; emoji?: 1; source_act?: `chat_${'create' | `${'invite' | 'kick'}_user` | `${'title' | 'photo'}_update`}`; source_mid?: n; }; type raw_extra_data = [ title?: s, from?: n ]; type extra_data = { title?: s; from?: n; }; type messageExtraFields = [ peer_id?: n, timestamp?: n, text?: s, attachments?: raw_attachment, random_id?: n ]; type P = { [UpdateTypes.raw_messageFlagReplace]: [ n, n, n?, n?, s?, ...raw_extra_data, raw_attachment?, n? ]; [UpdateTypes.messageFlagReplace]: { message_id: n; flags: MessageFlags; peer_id?: n; timestamp?: n; text?: s; extra_data?: extra_data; attachments?: []; random_id?: n; }; [UpdateTypes.raw_messageFlagSet]: P['raw_messageFlagReplace']; [UpdateTypes.messageFlagSet]: Omit<P['messageFlagReplace'], 'flags'> & { mask: n; }; [UpdateTypes.raw_messageFlagReset]: P['raw_messageFlagSet']; [UpdateTypes.messageFlagReset]: P['messageFlagSet']; [UpdateTypes.raw_messageAdd]: [ n, MessageFlags, n, ...messageExtraFields ]; [UpdateTypes.messageAdd]: { message_id: n; flags: MessageFlags; minor_id: n; peer_id?: n; timestamp?: n; text?: s; attachments?: []; random_id?: n; }; [UpdateTypes.raw_messageEdit]: [ n, n, n, n, s, raw_attachment ]; [UpdateTypes.messageEdit]: { message_id: n; mask: n; peer_id: n; timestamp: n; new_text: n; attachments: []; }; [UpdateTypes.raw_messageInRead]: [ n, n ]; [UpdateTypes.messageInRead]: { peer_id: n; local_id: n; }; [UpdateTypes.raw_messageOutRead]: [ n, n ]; [UpdateTypes.messageOutRead]: { peer_id: n; local_id: n; }; [UpdateTypes.raw_friendOnline]: [ n, n, n ]; [UpdateTypes.friendOnline]: { user_id: n; extra: n; timestamp: n; }; [UpdateTypes.raw_friendOffline]: [ n, n, n ]; [UpdateTypes.friendOffline]: { user_id: n; flags: flag; timestamp: n; }; [UpdateTypes.raw_dialogFlagReset]: [ n, n ]; [UpdateTypes.dialogFlagReset]: { peer_id: n; mask: n; }; [UpdateTypes.raw_dialogFlagReplace]: [ n, n ]; [UpdateTypes.dialogFlagReplace]: { peer_id: n; flags: n; }; [UpdateTypes.raw_dialogFlagSet]: P[UpdateTypes.raw_dialogFlagReset]; [UpdateTypes.dialogFlagSet]: P[UpdateTypes.raw_dialogFlagReset]; [UpdateTypes.raw_messageDelete]: [ n, n ]; [UpdateTypes.messageDelete]: { peer_id: n; local_id: n; }; [UpdateTypes.raw_messageRestore]: P[UpdateTypes.raw_messageDelete]; [UpdateTypes.messageRestore]: P[UpdateTypes.messageDelete]; [UpdateTypes.raw_dialogMajorIdChanged]: [ n, n ]; [UpdateTypes.dialogMajorIdChanged]: { peer_id: n; major_id: n; }; [UpdateTypes.raw_dialogMinorIdChanged]: P[UpdateTypes.raw_dialogMajorIdChanged]; [UpdateTypes.dialogMinorIdChanged]: { peer_id: n; minor_id: n; }; [UpdateTypes.raw_chatParamChanged]: [ n, flag ]; [UpdateTypes.chatParamChanged]: { chat_id: n; self: flag; }; [UpdateTypes.raw_dialogInfoChanged]: [ n, n, n ]; [UpdateTypes.dialogInfoChanged]: { type_id: n; peer_id: n; info: n; }; [UpdateTypes.raw_dialogTyping]: [ n, n ]; [UpdateTypes.dialogTyping]: { user_id: n; flags: n; }; [UpdateTypes.raw_chatTyping]: [ n, n ]; [UpdateTypes.chatTyping]: { user_id: n; chat_id: n; }; [UpdateTypes.raw_chatTypingMany]: [ n, n, n, n ]; [UpdateTypes.chatTypingMany]: { user_ids: n; peer_id: n; total_count: n; ts: n; }; [UpdateTypes.raw_chatAudioMessage]: [ n, n, n, n ]; [UpdateTypes.chatAudioMessage]: { user_ids: n; peer_id: n; total_count: n; ts: n; }; [UpdateTypes.raw_leftMenuCounterChanged]: [n]; [UpdateTypes.leftMenuCounterChanged]: { count: n; }; [UpdateTypes.raw_call]: [ n, n ]; [UpdateTypes.call]: { user_id: n; call_id: n; }; [UpdateTypes.raw_notificationSettingsChanged]: [n, flag, n]; [UpdateTypes.notificationSettingsChanged]: { peer_id: n; sound: flag; disabled_until: n; }; }; type types = { [T in keyof P]: T extends `raw_${s}` ? [ typeof RawUpdateTypes[T], ...P[T] ] : `raw_${T}` extends keyof typeof RawUpdateTypes ? { type: T; update: P[T]; raw: typeof RawUpdateTypes[`raw_${T}`]; } : never; }; export type Update<T extends UpdateTypes = UpdateTypes> = T extends never ? never : types[T]; type rawTypes<T extends UpdateTypes = UpdateTypes> = T extends `raw_${s}` ? T : never; export type ApiUpdates = { ts: string; updates: Update<rawTypes>[]; }; export const parseRawUpdate: <U extends UpdateTypes>(update: Update<U>) => Update<U> | { type: string; update: Update<U> | { [k: string]: string | any[]; }; raw: Update<U>; }; export {}; } export {};