messaging-api-telegram-proxy
v1.2.3
Published
Messaging API client for Telegram use proxy
Downloads
8
Maintainers
Readme
messaging-api-telegram-proxy
Messaging API client for Telegram use proxy
Table of Contents
Forked: https://github.com/Yoctol/messaging-apis
Installation
npm i --save messaging-api-telegram-proxy
Usage
Initialize
const { TelegramClient } = require('messaging-api-telegram-proxy');
let telegram_access_token = '12345678:AaBbCcDdwhatever'// get accessToken from telegram [@BotFather](https://telegram.me/BotFather)
let proxy_http = 'http://login:[email protected]:1234' // https://www.google.ru/search?q=proxy+http
const client = TelegramClient.connect(telegram_access_token, proxy_http);
Error Handling
messaging-api-telegram-proxy
uses axios as HTTP client. We use axios-error package to wrap API error instances for better formatting error messages. Directly console.log
on the error instance will return formatted message. If you'd like to get the axios request
, response
, or config
, you can still get them via those keys on the error instance.
client.getWebhookInfo().catch(error => {
console.log(error); // formatted error message
console.log(error.stack); // error stack trace
console.log(error.config); // axios request config
console.log(error.request); // HTTP request
console.log(error.response); // HTTP response
});
API Reference
All methods return a Promise.
Webhook API
getWebhookInfo
- Official Docs
Gets current webhook status.
Example:
client.getWebhookInfo().then(info => {
console.log(info);
// {
// url: 'https://4a16faff.ngrok.io/',
// has_custom_certificate: false,
// pending_update_count: 0,
// max_connections: 40,
// }
});
getUpdates
- Official Docs
Use this method to receive incoming updates using long polling. An Array of Update objects is returned.
| Param | Type | Description |
| ------- | -------- | -------------------- |
| options | Object
| Optional parameters. |
Example:
client
.getUpdates({
limit: 10,
})
.then(updates => {
console.log(updates);
/*
[
{
update_id: 513400512,
message: {
message_id: 3,
from: {
id: 313534466,
first_name: 'first',
last_name: 'last',
username: 'username',
},
chat: {
id: 313534466,
first_name: 'first',
last_name: 'last',
username: 'username',
type: 'private',
},
date: 1499402829,
text: 'hi',
},
},
...
]
*/
});
setWebhook(url)
- Official Docs
Specifies a url and receive incoming updates via an outgoing webhook.
| Param | Type | Description |
| ----- | -------- | ----------------------------- |
| url | String
| HTTPS url to send updates to. |
Example:
client.setWebhook('https://4a16faff.ngrok.io/');
deleteWebhook
- Official Docs
Removes webhook integration.
Example:
client.deleteWebhook();
Send API - Official Docs
sendMessage(chatId, text [, options])
- Official Docs
Sends text messages.
| Param | Type | Description |
| ------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| text | String
| Text of the message to be sent. |
| options | Object
| Other optional parameters. |
Example:
client.sendMessage(CHAT_ID, 'hi', {
disable_web_page_preview: true,
disable_notification: true,
});
sendPhoto(chatId, photo [, options])
- Official Docs
Sends photos.
| Param | Type | Description |
| ------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| photo | String
| Pass a file id (recommended) or HTTP URL to send photo. |
| options | Object
| Other optional parameters. |
Example:
client.sendPhoto(CHAT_ID, 'https://example.com/image.png', {
caption: 'gooooooodPhoto',
disable_notification: true,
});
sendAudio(chatId, audio [, options])
- Official Docs
Sends audio files.
| Param | Type | Description |
| ------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| audio | String
| Pass a file id (recommended) or HTTP URL to send audio. |
| options | Object
| Other optional parameters. |
Example:
client.sendAudio(CHAT_ID, 'https://example.com/audio.mp3', {
caption: 'gooooooodAudio',
disable_notification: true,
});
sendDocument(chatId, document [, options])
- Official Docs
Sends general files.
| Param | Type | Description |
| -------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| document | String
| Pass a file id (recommended) or HTTP URL to send document. |
| options | Object
| Other optional parameters. |
Example:
client.sendDocument(CHAT_ID, 'https://example.com/doc.gif', {
caption: 'gooooooodDocument',
disable_notification: true,
});
sendSticker(chatId, sticker [, options])
- Official Docs
Sends .webp
stickers.
| Param | Type | Description |
| ------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| sticker | String
| Pass a file id (recommended) or HTTP URL to send sticker. |
| options | Object
| Other optional parameters. |
Example:
client.sendSticker(CHAT_ID, 'CAADAgADQAADyIsGAAE7MpzFPFQX5QI', {
disable_notification: true,
});
sendVideo(chatId, video [, options])
- Official Docs
Sends video files, Telegram clients support mp4
videos (other formats may be sent as Document).
| Param | Type | Description |
| ------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| video | String
| Pass a file id (recommended) or HTTP URL to send video. |
| options | Object
| Other optional parameters. |
Example:
client.sendVideo(CHAT_ID, 'https://example.com/video.mp4', {
caption: 'gooooooodVideo',
disable_notification: true,
});
sendVoice(chatId, voice [, options])
- Official Docs
Sends audio files.
| Param | Type | Description |
| ------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| voice | String
| Pass a file id (recommended) or HTTP URL to send voice. |
| options | Object
| Other optional parameters. |
Example:
client.sendVoice(CHAT_ID, 'https://example.com/voice.ogg', {
caption: 'gooooooodVoice',
disable_notification: true,
});
sendVideoNote(chatId, videoNote [, options])
- Official Docs
Sends video messages. As of v.4.0, Telegram clients support rounded square mp4 videos of up to 1 minute long.
| Param | Type | Description |
| --------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| videoNote | String
| Pass a file id (recommended) or HTTP URL to send video note. |
| options | Object
| Other optional parameters. |
Example:
client.sendVideoNote(CHAT_ID, 'https://example.com/video_note.mp4', {
duration: 40,
disable_notification: true,
});
sendMediaGroup(chatId, media [, options])
- Official Docs
send a group of photos or videos as an album.
| Param | Type | Description |
| ------- | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| media | Array<InputMedia> | A JSON-serialized array describing photos and videos to be sent, must include 2–10 items |
| options | Object
| Other optional parameters. |
Example:
client.sendMediaGroup(CHAT_ID, [
{ type: 'photo', media: 'BQADBAADApYAAgcZZAfj2-xeidueWwI' },
]);
sendLocation(chatId, location [, options])
- Official Docs
Sends point on the map.
| Param | Type | Description |
| ------------------ | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| location | Object
| Object contains latitude and longitude. |
| location.latitude | Number
| Latitude of the location. |
| location.longitude | Number
| Longitude of the location. |
| options | Object
| Other optional parameters. |
Example:
client.sendLocation(
CHAT_ID,
{
latitude: 30,
longitude: 45,
},
{
disable_notification: true,
}
);
sendVenue(chatId, venue [, options])
- Official Docs
Sends information about a venue.
| Param | Type | Description |
| --------------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| venue | Object
| Object contains information of the venue. |
| venue.latitude | Number
| Latitude of the venue. |
| venue.longitude | Number
| Longitude of the venue. |
| venue.title | String
| Name of the venue. |
| venue.address | String
| Address of the venue. |
| options | Object
| Other optional parameters. |
Example:
client.sendVenue(
CHAT_ID,
{
latitude: 30,
longitude: 45,
title: 'a_title',
address: 'an_address',
},
{
disable_notification: true,
}
);
sendContact(chatId, contact [, options])
- Official Docs
Sends phone contacts.
| Param | Type | Description |
| -------------------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| contact | Object
| Object contains information of the contact. |
| contact.phone_number | String
| Phone number of the contact. |
| contact.first_name | String
| First name of the contact. |
| options | Object
| Other optional parameters. |
Example:
client.sendContact(
CHAT_ID,
{
phone_number: '886123456789',
first_name: 'first',
},
{ last_name: 'last' }
);
sendChatAction(chatId, action)
- Official Docs
Tells the user that something is happening on the bot's side.
| Param | Type | Description |
| ------ | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| action | String
| Type of action to broadcast. |
Example:
client.sendChatAction(CHAT_ID, 'typing');
Get API
getMe
- Official Docs
Gets bot's information.
Example:
client.getMe().then(result => {
console.log(result);
// {
// id: 313534466,
// first_name: 'first',
// username: 'a_bot'
// }
});
getUserProfilePhotos(userId [, options])
- Official Docs
Gets a list of profile pictures for a user.
| Param | Type | Description |
| ------- | -------- | ------------------------------------- |
| userId | String
| Unique identifier of the target user. |
| options | Object
| Other optional parameters |
Example:
client.getUserProfilePhotos(USER_ID, { limit: 1 }).then(result => {
console.log(result);
// {
// total_count: 3,
// photos: [
// [
// {
// file_id:
// 'AgADBAADGTo4Gz8cZAeR-ouu4XBx78EeqRkABHahi76pN-aO0UoDA050',
// file_size: 14650,
// width: 160,
// height: 160,
// },
// {
// file_id:
// 'AgADBAADGTo4Gz8cZAeR-ouu4XBx78EeqRkABKCfooqTgFUX0EoD5B1C',
// file_size: 39019,
// width: 320,
// height: 320,
// },
// {
// file_id:
// 'AgADBAADGTo4Gz8cZAeR-ouu4XBx78EeqRkABPL_pC9K3UpI0koD1B1C',
// file_size: 132470,
// width: 640,
// height: 640,
// },
// ],
// ],
// }
});
getFile(fileId)
- Official Docs
Gets basic info about a file and prepare it for downloading.
| Param | Type | Description |
| ------ | -------- | ---------------------------------- |
| fileId | String
| File identifier to get info about. |
Example:
client
.getFile('UtAqweADGTo4Gz8cZAeR-ouu4XBx78EeqRkABPL_pM4A1UpI0koD65K2')
.then(file => {
console.log(file);
// {
// file_id: 'UtAqweADGTo4Gz8cZAeR-ouu4XBx78EeqRkABPL_pM4A1UpI0koD65K2',
// file_size: 106356,
// file_path: 'photos/1068230105874016297.jpg',
// }
});
getFileLink(fileId)
Gets link of the file.
| Param | Type | Description |
| ------ | -------- | ---------------------------------- |
| fileId | String
| File identifier to get info about. |
Example:
client
.getFileLink('UtAqweADGTo4Gz8cZAeR-ouu4XBx78EeqRkABPL_pM4A1UpI0koD65K2')
.then(link => {
console.log(link);
// 'https://api.telegram.org/file/bot<ACCESS_TOKEN>/photos/1068230105874016297.jpg'
});
getChat(chatId)
- Official Docs
Gets up to date information about the chat (current name of the user for one-on-one conversations, current username of a user, group or channel, etc.)
| Param | Type | Description | | ------ | --------------------------------- | ------------------------------------------------------------------------ | | chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
Example:
client.getChat(CHAT_ID).then(chat => {
console.log(chat);
// {
// id: 313534466,
// first_name: 'first',
// last_name: 'last',
// username: 'username',
// type: 'private',
// }
});
getChatAdministrators(chatId)
- Official Docs
Gets a list of administrators in a chat.
| Param | Type | Description | | ------ | --------------------------------- | ------------------------------------------------------------------------ | | chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
Example:
client.getChatAdministrators(CHAT_ID).then(admins => {
console.log(admins);
// [
// {
// user: {
// id: 313534466,
// first_name: 'first',
// last_name: 'last',
// username: 'username',
// languange_code: 'zh-TW',
// },
// status: 'creator',
// },
// ]
});
getChatMembersCount(chatId)
- Official Docs
Gets the number of members in a chat.
| Param | Type | Description | | ------ | --------------------------------- | ------------------------------------------------------------------------ | | chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
Example:
client.getChatMembersCount(CHAT_ID).then(count => {
console.log(count); // '6'
});
getChatMember(chatId, userId)
- Official Docs
Gets information about a member of a chat.
| Param | Type | Description |
| ------ | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| userId | Number
| Unique identifier of the target user. |
Example:
client.getChatMember(CHAT_ID, USER_ID).then(member => {
console.log(member);
// {
// user: {
// id: 313534466,
// first_name: 'first',
// last_name: 'last',
// username: 'username',
// languange_code: 'zh-TW',
// },
// status: 'creator',
// }
});
Updating API
editMessageText(text [, options])
- Official Docs
Edits text and game messages sent by the bot or via the bot (for inline bots).
| Param | Type | Description |
| ------------------------- | --------------------------------- | ------------------------------------------------------------------------ |
| text | String
| New text of the message. |
| options | Object
| One of chat_id, message_id or inline_message_id is required. |
| options.chat_id | Number | String | Unique identifier for the target chat or username of the target channel. |
| options.message_id | Number
| Identifier of the sent message. |
| options.inline_message_id | String
| Identifier of the inline message. |
Example:
client.editMessageText('new_text', { message_id: MESSAGE_ID });
editMessageCaption(caption [, options])
- Official Docs
Edits captions of messages sent by the bot or via the bot (for inline bots).
| Param | Type | Description |
| ------------------------- | --------------------------------- | ------------------------------------------------------------------------ |
| caption | String
| New caption of the message. |
| options | Object
| One of chat_id, message_id or inline_message_id is required. |
| options.chat_id | Number | String | Unique identifier for the target chat or username of the target channel. |
| options.message_id | Number
| Identifier of the sent message. |
| options.inline_message_id | String
| Identifier of the inline message. |
Example:
client.editMessageCaption('new_caption', { message_id: MESSAGE_ID });
editMessageReplyMarkup(replyMarkup [, options])
- Official Docs
Edits only the reply markup of messages sent by the bot or via the bot (for inline bots).
| Param | Type | Description |
| ------------------------- | --------------------------------- | ------------------------------------------------------------------------ |
| replyMarkup | Object
| New replyMarkup of the message. |
| options | Object
| One of chat_id, message_id or inline_message_id is required. |
| options.chat_id | Number | String | Unique identifier for the target chat or username of the target channel. |
| options.message_id | Number
| Identifier of the sent message. |
| options.inline_message_id | String
| Identifier of the inline message. |
Example:
client.editMessageReplyMarkup(
{
keyboard: [[{ text: 'new_button_1' }, { text: 'new_button_2' }]],
resize_keyboard: true,
one_time_keyboard: true,
},
{ message_id: MESSAGE_ID }
);
deleteMessage(chatId, messageId)
- Official Docs
Deletes a message, including service messages.
| Param | Type | Description |
| --------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| messageId | Number
| Identifier of the message to delete. |
Example:
client.deleteMessage(CHAT_ID, MESSAGE_ID);
editMessageLiveLocation(location [, options])
- Official Docs
Edit live location messages sent by the bot or via the bot (for inline bots).
| Param | Type | Description |
| ------------------------- | --------------------------------- | ------------------------------------------------------------------------ |
| location | Object
| Object contains new latitude and longitude. |
| location.latitude | Number
| Latitude of new location. |
| location.longitude | Number
| Longitude of new location. |
| options | Object
| One of chat_id, message_id or inline_message_id is required. |
| options.chat_id | Number | String | Unique identifier for the target chat or username of the target channel. |
| options.message_id | Number
| Identifier of the sent message. |
| options.inline_message_id | String
| Identifier of the inline message. |
Example:
client.editMessageLiveLocation(
{
latitude: 30,
longitude: 45,
},
{
message_id: MESSAGE_ID,
}
);
stopMessageLiveLocation(options)
- Official Docs
Stop updating a live location message sent by the bot or via the bot (for inline bots) before live_period expires.
| Param | Type | Description |
| ---------------------------- | --------------------------------- | ------------------------------------------------------------------------ |
| identifier | Object
| One of chat_id, message_id or inline_message_id is required. |
| identifier.chat_id | Number | String | Unique identifier for the target chat or username of the target channel. |
| identifier.message_id | Number
| Identifier of the sent message. |
| identifier.inline_message_id | String
| Identifier of the inline message. |
Example:
client.stopMessageLiveLocation({ message_id: MESSAGE_ID });
Group API
kickChatMember(chatId, userId [, options])
- Official Docs
Kicks a user from a group, a supergroup or a channel.
| Param | Type | Description |
| ------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| userId | Number
| Unique identifier of the target user. |
| options | Object
| Other optional parameters. |
Example:
client.kickChatMember(CHAT_ID, USER_ID, { until_date: UNIX_TIME });
unbanChatMember(chatId, userId)
- Official Docs
Unbans a previously kicked user in a supergroup or channel.
| Param | Type | Description |
| ------ | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| userId | Number
| Unique identifier of the target user. |
Example:
client.unbanChatMember(CHAT_ID, USER_ID);
restrictChatMember(chatId, userId [, options])
- Official Docs
Restricts a user in a supergroup
| Param | Type | Description |
| ------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| userId | Number
| Unique identifier of the target user. |
| options | Object
| Other optional parameters. |
Example:
client.restrictChatMember(CHAT_ID, USER_ID, { can_send_messages: true });
promoteChatMember(chatId, userId [, options])
- Official Docs
Promotes or demotes a user in a supergroup or a channel.
| Param | Type | Description |
| ------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| userId | Number
| Unique identifier of the target user. |
| options | Object
| Other optional parameters. |
Example:
client.promoteChatMember(CHAT_ID, USER_ID, {
can_change_info: true,
can_invite_users: true,
});
exportChatInviteLink(chatId)
- Official Docs
Exports an invite link to a supergroup or a channel.
| Param | Type | Description | | ------ | --------------------------------- | ------------------------------------------------------------------------ | | chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
Example:
client.exportChatInviteLink(CHAT_ID);
setChatPhoto(chatId, photo)
- Official Docs
Sets a new profile photo for the chat.
| Param | Type | Description |
| ------ | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| photo | String
| Pass a file id (recommended) or HTTP URL to send photo. |
Example:
client.setChatPhoto(CHAT_ID, 'https://example.com/image.png');
deleteChatPhoto(chatId)
- Official Docs
Deletes a chat photo.
| Param | Type | Description | | ------ | --------------------------------- | ------------------------------------------------------------------------ | | chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
Example:
client.deleteChatPhoto(CHAT_ID);
setChatTitle(chatId, title)
- Official Docs
Changes the title of a chat.
| Param | Type | Description |
| ------ | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| title | String
| New chat title, 1-255 characters. |
Example:
client.setChatTitle(CHAT_ID, 'New Title');
setChatDescription(chatId, description)
- Official Docs
Changes the description of a supergroup or a channel.
| Param | Type | Description |
| ----------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| description | String
| New chat description, 0-255 characters. |
Example:
client.setChatDescription(CHAT_ID, 'New Description');
setChatStickerSet(chatId, stickerSetName)
- Official Docs
Set a new group sticker set for a supergroup.
| Param | Type | Description |
| -------------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| stickerSetName | String
| Name of the sticker set to be set as the group sticker set. |
Example:
client.setChatStickerSet(CHAT_ID, 'Sticker Set Name');
deleteChatStickerSet(chatId)
- Official Docs
Delete a group sticker set from a supergroup.
| Param | Type | Description | | ------ | --------------------------------- | ------------------------------------------------------------------------ | | chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
Example:
client.deleteChatStickerSet(CHAT_ID);
pinChatMessage(chatId, messageId [, options])
- Official Docs
Pins a message in a supergroup.
| Param | Type | Description |
| --------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| messageId | Number
| Identifier of a message to pin. |
| options | Object
| Other optional parameters. |
Example:
client.pinChatMessage(CHAT_ID, MESSAGE_ID, { disable_notification: true });
unpinChatMessage(chatId)
- Official Docs
Unpins a message in a supergroup chat.
| Param | Type | Description | | ------ | --------------------------------- | ------------------------------------------------------------------------ | | chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
Example:
client.unpinChatMessage(CHAT_ID);
leaveChat(chatId)
- Official Docs
Leaves a group, supergroup or channel.
| Param | Type | Description | | ------ | --------------------------------- | ------------------------------------------------------------------------ | | chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
Example:
client.leaveChat(CHAT_ID);
Payments API
sendInvoice(chatId, product [, options])
- Official Docs
Sends invoice.
| Param | Type | Description |
| ----------------------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| product | Object
| Object of the product. |
| product.title | String
| Product name. |
| product.description | String
| Product description. |
| product.payload | String
| Bot defined invoice payload. |
| product.provider_token | String
| Payments provider token. |
| product.start_parameter | String
| Deep-linking parameter. |
| product.currency | String
| Three-letter ISO 4217 currency code. |
| product.prices | Array<Object>
| Breakdown of prices. |
| options | Object
| Additional Telegram query options. |
Example:
client.sendInvoice(CHAT_ID, {
title: 'product name',
description: 'product description',
payload: 'bot-defined invoice payload',
provider_token: 'PROVIDER_TOKEN',
start_parameter: 'pay',
currency: 'USD',
prices: [
{ label: 'product', amount: 11000 },
{ label: 'tax', amount: 11000 },
],
});
answerShippingQuery(shippingQueryId, ok [, options])
- Official Docs
Reply to shipping queries.
| Param | Type | Description |
| --------------- | --------- | ----------------------------------------------- |
| shippingQueryId | String
| Unique identifier for the query to be answered. |
| ok | Boolean
| Specify if delivery of the product is possible. |
| options | Object
| Additional Telegram query options. |
Example:
client.answerShippingQuery('UNIQUE_ID', true);
answerPreCheckoutQuery(preCheckoutQueryId, ok [, options])
- Official Docs
Respond to such pre-checkout queries.
| Param | Type | Description |
| ------------------ | --------- | ----------------------------------------------- |
| preCheckoutQueryId | String
| Unique identifier for the query to be answered. |
| ok | Boolean
| Specify if delivery of the product is possible. |
| options | Object
| Additional Telegram query options. |
Example:
client.answerPreCheckoutQuery('UNIQUE_ID', true);
Inline mode API
answerInlineQuery(inlineQueryId, results [, options])
- Official Docs
Send answers to an inline query.
| Param | Type | Description |
| ------------- | -------------------------------------------------------------------------------- | --------------------------------------------------------- |
| inlineQueryId | String
| Unique identifier of the query. |
| results | Array<InlineQueryResult> | Array of object represents one result of an inline query. |
| options | Object
| Additional Telegram query options. |
Example:
client.answerInlineQuery(
'INLINE_QUERY_ID',
[
{
type: 'photo',
id: 'UNIQUE_ID',
photo_file_id: 'FILE_ID',
title: 'PHOTO_TITLE',
},
{
type: 'audio',
id: 'UNIQUE_ID',
audio_file_id: 'FILE_ID',
caption: 'AUDIO_TITLE',
},
],
{
cache_time: 1000,
}
);
Game API
sendGame(chatId, gameShortName [, options])
- Official Docs
Sends a game.
| Param | Type | Description |
| ------------- | --------------------------------- | ------------------------------------------------------------------------ |
| chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
| gameShortName | String | Short name of the game. |
| options | Object
| Additional Telegram query options. |
Example:
client.sendGame(CHAT_ID, 'Mario Bros.', {
disable_notification: true,
});
setGameScore(userId, score [, options])
- Official Docs
Sets the score of the specified user in a game.
| Param | Type | Description |
| ------- | --------------------------------- | ---------------------------------- |
| userId | Number | String | User identifier. |
| score | Number | New score, must be non-negative. |
| options | Object
| Additional Telegram query options. |
Example:
client.setGameScore(USER_ID, 999);
getGameHighScores(userId [, options])
- Official Docs
Gets data for high score tables.
| Param | Type | Description |
| ------- | --------------------------------- | ---------------------------------- |
| userId | Number | String | User identifier. |
| options | Object
| Additional Telegram query options. |
Example:
client.getGameHighScores(USER_ID).then(scores => {
console.log(scores);
// [
// {
// position: 1,
// user: {
// id: 427770117,
// is_bot: false,
// first_name: 'first',
// },
// score: 999,
// },
// ]
});
Others
forwardMessage(chatId, fromChatId, messageId [, options])
- Official Docs
Forwards messages of any kind.
| Param | Type | Description |
| ---------- | --------------------------------- | -------------------------------------------------------------------------------------- |
| chatId | Number | String | Unique identifier for the target chat or username of the target supergroup or channel. |
| fromChatId | Number | String | Unique identifier for the chat where the original message was sent. |
| messageId | Number
| Message identifier in the chat specified in from_chat_id. |
| options | Object
| Other optional parameters. |
Example:
client.forwardMessage(CHAT_ID, USER_ID, MESSAGE_ID, {
disable_notification: true,
});
Debug Tips
Log requests details
To enable default request debugger, use following DEBUG
env variable:
DEBUG=messaging-api-telegram-proxy
If you want to use custom request logging function, just define your own onRequest
:
const client = TelegramClient.connect({
accessToken: ACCESS_TOKEN,
onRequest: ({ method, url, headers, body }) => {
/* */
},
});
Test
Point requests to your dummy server
To avoid sending requests to real Telegram server, specify origin
option when constructing your client:
const { TelegramClient } = require('messaging-api-telegram-proxy');
const client = TelegramClient.connect({
accessToken: ACCESS_TOKEN,
origin: 'https://mydummytestserver.com',
});
Warning: Don't do this on production server.
Manual Mock with Jest
create __mocks__/messaging-api-telegram-proxy.js
in your project root:
// __mocks__/messaging-api-telegram-proxy.js
const jestMock = require('jest-mock');
const { TelegramClient } = require.requireActual('messaging-api-telegram-proxy');
module.exports = {
TelegramClient: {
connect: jest.fn(() => {
const Mock = jestMock.generateFromMetadata(
jestMock.getMetadata(TelegramClient)
);
return new Mock();
}),
},
};
Then, mock messaging-api-telegram-proxy
package in your tests:
// __tests__/mytest.spec.js
jest.mock('messaging-api-telegram-proxy');