node-vk-api-bot
Version:
A library that helps you to create chat-bot for group or user
199 lines (198 loc) • 7.88 kB
TypeScript
import { Objects } from './types/objects.js';
import { flag } from './types/utils.js';
export declare namespace GroupUpdates {
export enum UpdateTypes {
message_new = "message_new",
message_reply = "message_reply",
message_edit = "message_edit",
message_allow = "message_allow",
message_deny = "message_deny",
message_typing_state = "message_typing_state",
message_event = "message_event",
photo_new = "photo_new",
photo_comment_new = "photo_comment_new",
photo_comment_edit = "photo_comment_edit",
photo_comment_restore = "photo_comment_restore",
audio_new = "audio_new",
video_new = "video_new",
video_comment_new = "video_comment_new",
video_comment_edit = "video_comment_edit",
video_comment_restore = "video_comment_restore",
video_comment_delete = "video_comment_delete",
wall_post_new = "wall_post_new",
wall_repost = "wall_repost",
wall_reply_new = "wall_reply_new",
wall_reply_edit = "wall_reply_edit",
wall_reply_restore = "wall_reply_restore",
wall_reply_delete = "wall_reply_delete",
like_add = "like_add",
like_remove = "like_remove",
board_post_new = "board_post_new",
board_post_edit = "board_post_edit",
board_post_restore = "board_post_restore",
board_post_delete = "board_post_delete",
market_comment_new = "market_comment_new",
market_comment_edit = "market_comment_edit",
market_comment_restore = "market_comment_restore",
market_comment_delete = "market_comment_delete",
market_order_new = "market_order_new",
market_order_edit = "market_order_edit",
group_leave = "group_leave",
group_join = "group_join",
user_block = "user_block",
user_unblock = "user_unblock",
poll_vote_new = "poll_vote_new",
group_officers_edit = "group_officers_edit",
group_change_settings = "group_change_settings",
group_change_photo = "group_change_photo"
}
export interface Update<T extends UpdateTypes> {
type: T;
object: UpdateObject[T];
event_id?: string;
group_id: number;
}
namespace utils {
type commentEvent<T extends string, O extends object = Objects.WallReply> = O & {
[A in `${T}${'' | 'post'}_id`]: number;
};
export type PhotoCommentEvent = commentEvent<'photo'>;
export type VideoCommentEvent = commentEvent<'video'>;
export type WallCommentEvent = commentEvent<'post'>;
export type BoardCommentEvent = commentEvent<'topic', Objects.BoardReply>;
export type MarketCommentEvent = Objects.WallReply & {
market_owner_id: number;
item_id: number;
};
export type LikeTarget = {
liker_id: number;
thread_reply_id?: number;
post_id?: number;
object_type: 'video' | 'photo' | 'comment' | 'note' | 'topic_comment' | 'photo_comment' | 'video_comment' | 'market' | 'market_comment';
} & commentEvent<'object'>;
export {};
}
type UpdateObject = {
[UpdateTypes.message_new]: {
message: Objects.Message;
client_info: Objects.ClientInfo;
};
[UpdateTypes.message_edit]: Objects.Message;
[UpdateTypes.message_reply]: Objects.Message;
[UpdateTypes.message_allow]: {
user_id: number;
key: string;
};
[UpdateTypes.message_deny]: {
user_id: number;
};
[UpdateTypes.message_typing_state]: {
state: string;
from_id: number;
to_id: number;
};
[UpdateTypes.message_event]: {
user_id: number;
peer_id: number;
event_id: number;
converstion_message_id: number;
payload: string;
};
[UpdateTypes.photo_new]: Objects.Photo;
[UpdateTypes.photo_comment_new]: utils.PhotoCommentEvent;
[UpdateTypes.photo_comment_edit]: utils.PhotoCommentEvent;
[UpdateTypes.photo_comment_restore]: utils.PhotoCommentEvent;
[UpdateTypes.audio_new]: Objects.Audio;
[UpdateTypes.video_new]: Objects.Video;
[UpdateTypes.video_comment_new]: utils.VideoCommentEvent;
[UpdateTypes.video_comment_edit]: utils.VideoCommentEvent;
[UpdateTypes.video_comment_restore]: utils.VideoCommentEvent;
[UpdateTypes.video_comment_delete]: {
[_ in `${`${'owner' | 'user' | 'deleter' | 'video'}_` | ''}id`]: number;
};
[UpdateTypes.wall_post_new]: Objects.Wall & {
postponed_id?: number;
};
[UpdateTypes.wall_repost]: Objects.Wall & {
postponed_id?: number;
};
[UpdateTypes.wall_reply_new]: utils.WallCommentEvent;
[UpdateTypes.wall_reply_edit]: utils.WallCommentEvent;
[UpdateTypes.wall_reply_restore]: utils.WallCommentEvent;
[UpdateTypes.wall_reply_delete]: {
[_ in `${`${'owner' | 'deleter' | 'post'}_` | ''}id`]: number;
};
[UpdateTypes.like_add]: utils.LikeTarget;
[UpdateTypes.like_remove]: utils.LikeTarget;
[UpdateTypes.board_post_new]: utils.BoardCommentEvent;
[UpdateTypes.board_post_edit]: utils.BoardCommentEvent;
[UpdateTypes.board_post_restore]: utils.BoardCommentEvent;
[UpdateTypes.board_post_delete]: {
[_ in `${`topic${'' | '_owner'}_` | ''}id`]: number;
};
[UpdateTypes.market_comment_new]: utils.MarketCommentEvent;
[UpdateTypes.market_comment_edit]: utils.MarketCommentEvent;
[UpdateTypes.market_comment_restore]: utils.MarketCommentEvent;
[UpdateTypes.market_comment_delete]: {
[_ in `${`${'owner' | 'user' | 'deleter' | 'item'}_` | ''}id`]: number;
};
[UpdateTypes.market_order_new]: Objects.Order;
[UpdateTypes.market_order_edit]: Objects.Order;
[UpdateTypes.poll_vote_new]: {
owner_id: number;
poll_id: number;
option_id: number;
user_id: number;
};
[UpdateTypes.group_leave]: {
user_id: number;
self: flag;
};
[UpdateTypes.group_join]: {
user_id: number;
join_type: 'join' | 'unsure' | 'accepted' | 'approved' | 'request';
};
[UpdateTypes.user_block]: {
admin_id: number;
user_id: number;
unblock_date: number;
reason: flag | 2 | 3 | 4;
comment: string;
};
[UpdateTypes.user_unblock]: {
admin_id: number;
user_id: number;
by_end_date: number;
};
[UpdateTypes.group_officers_edit]: {
admin_id: number;
user_id: number;
level_old: flag | 2 | 3;
level_new: flag | 2 | 3;
};
[UpdateTypes.group_change_settings]: {
user_id: number;
changes: {
[_ in 'title' | 'description' | 'access' | 'screen_name' | `public_${'' | 'sub'}category` | 'age_limits' | `enable_${'status_default' | 'audio' | 'photo' | 'video' | 'market'}`]: {
old_value: unknown;
new_value: unknown;
};
};
};
[UpdateTypes.group_change_photo]: {
user_id: number;
photo: Objects.Photo;
};
};
export type Updates<T extends UpdateTypes = UpdateTypes> = T extends never ? never : Update<T>;
export type ApiUpdates = {
ts: string;
updates: Updates[];
} | {
failed: 2 | 3.;
} | {
failed: 1;
ts: string;
};
export {};
}