UNPKG

nodevk-ts

Version:

Simple Node.js module that allows you to interact with the VKontakte API.

174 lines (173 loc) 5.65 kB
import API, { CountingResponse } from "./api.js"; import { IMethodParams } from "./../Session/Session.js"; import { UserObject } from "./users.js"; interface ForwardMessageFormat { owner_id?: number; peer_id: number; conversation_message_ids?: number[]; message_ids?: number[]; is_reply?: boolean; } interface ButtonBase { type: string; payload?: string; } interface ButtonText extends ButtonBase { type: "text"; label: string; } interface ButtonOpenLink extends ButtonBase { type: "open_link"; label: string; link: string; } interface ButtonLocation extends ButtonBase { type: "location"; } interface ButtonVKPay extends ButtonBase { type: "vkpay"; hash: string; } interface ButtonVKApp extends ButtonBase { type: "open_app"; app_id: number; owner_id: number; label: string; hash: string; } interface ButtonCallback extends ButtonBase { type: "callback"; label: string; } declare type ButtonAction = ButtonText | ButtonOpenLink | ButtonLocation | ButtonVKPay | ButtonVKApp | ButtonCallback; interface Button { action: ButtonAction; color?: "primary" | "secondary" | "negative" | "positive"; } interface Keyboard { one_time?: boolean; inline?: boolean; buttons: Button[][]; } interface TemplateCarouselOpenLink { type: "open_link"; link: string; } interface TemplateCarouselOpenPhoto { type: "open_photo"; } declare type TemplateCarouselAction = TemplateCarouselOpenLink | TemplateCarouselOpenPhoto; interface TemplateCarouselElement { title?: string; photo_id?: number; description?: string; buttons?: Button[]; action?: TemplateCarouselAction; } interface TemplateCarousel { type: "carousel"; elements: TemplateCarouselElement[]; } declare type Template = TemplateCarousel; interface ContentSourceFromMessage { type: 'message'; owner_id: number; peer_id: number; conversation_message_id: number; } interface ContentSourceFromURL { type: "url"; url: string; } declare type ContentSource = ContentSourceFromMessage | ContentSourceFromURL; declare type Intent = "promo_newsletter" | "bot_ad_invite" | "bot_ad_promo" | "non_promo_newsletter" | "confirmed_notification" | "purchase_update" | "account_update" | "game_notification" | "customer_support" | "default"; interface SendAdditionalParams extends IMethodParams { random_id?: number; lat?: number; long?: number; reply_to?: number; forward_messages?: number | number[]; forward?: ForwardMessageFormat; sticker_id?: number; group_id?: number; keyboard?: Keyboard; template?: Template; payload?: string; content_source?: ContentSource; dont_parse_links?: boolean; disable_mentions?: boolean; intent?: Intent; subscribe_id?: number; } interface SendMessageResponse { peer_id: number; message_id?: number; conversation_message_id?: number; error?: string; } interface DeleteMessageResponse { [key: string]: 0 | 1; } interface EditAdditionalParams extends IMethodParams { lat?: number; long?: number; keep_forward_messages?: boolean; keep_snippets?: boolean; group_id?: number; dont_parse_links?: boolean; keyboard?: Keyboard; template?: Template; } interface ConversationMember { member_id: number; invited_by: number; join_date: number; is_admin?: boolean; is_owner?: boolean; can_kick?: boolean; } interface ConversationMembersResponse extends CountingResponse<ConversationMember> { profiles: UserObject[]; groups: GroupInfo[]; } declare enum GroupClosed { Open = 0, Closed = 1, Private = 2 } interface GroupInfo { id: number; name: string; screen_name: string; is_closed: GroupClosed; deactivated?: "deleted" | "banned"; is_admin?: 0 | 1; admin_level?: 1 | 2 | 3; is_member?: 0 | 1; is_advertiser?: 0 | 1; invited_by?: number; type: "group" | "page" | "event"; photo_50: string; photo_100: string; photo_200: string; } interface GetConversationMembersAdditionalParams extends IMethodParams { fields?: string[]; group_id?: number; peer_id?: number; } export default class MessagesAPI extends API { private api_name; send(peer_id: number, message?: string, attachments?: string | string[], params?: SendAdditionalParams): Promise<number>; send(peer_id: string, message?: string, attachments?: string | string[], params?: SendAdditionalParams): Promise<number>; send(peers_id: number[], message?: string, attachments?: string | string[], params?: SendAdditionalParams): Promise<SendMessageResponse[]>; edit(peer_id: number, message_id: number, message?: string, attachments?: string | string[], params?: EditAdditionalParams): Promise<1>; delete(message_ids: number[], spam?: boolean, delete_for_all?: boolean, group_id?: number): Promise<DeleteMessageResponse>; delete(message_id: number, spam?: boolean, delete_for_all?: boolean, group_id?: number): Promise<DeleteMessageResponse>; getConversationMembers(peer_id: number, params?: GetConversationMembersAdditionalParams): Promise<ConversationMembersResponse>; removeChatUser(chat_id: number, member_id: number): Promise<1>; removeChatUserFromPeer(peer_id: number, member_id: number): Promise<1>; editChat(chat_id: number, title: string): Promise<1>; editChatFromPeer(peer_id: number, title: string): Promise<1>; } export {};