nodevk-ts
Version:
Simple Node.js module that allows you to interact with the VKontakte API.
174 lines (173 loc) • 5.65 kB
TypeScript
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 {};