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
TypeScript
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 {};