2
0
mirror of https://github.com/yagop/node-telegram-bot-api synced 2025-08-22 18:07:16 +00:00

501 lines
24 KiB
Markdown
Raw Normal View History

2016-01-01 22:00:41 +01:00
[![Build Status](https://travis-ci.org/yagop/node-telegram-bot-api.svg?branch=master)](https://travis-ci.org/yagop/node-telegram-bot-api) [![Build status](https://ci.appveyor.com/api/projects/status/ujko6bsum3g5msjh/branch/master?svg=true)](https://ci.appveyor.com/project/yagop/node-telegram-bot-api/branch/master) [![Coverage Status](https://coveralls.io/repos/yagop/node-telegram-bot-api/badge.svg?branch=master)](https://coveralls.io/r/yagop/node-telegram-bot-api?branch=master) [![bitHound Score](https://www.bithound.io/github/yagop/node-telegram-bot-api/badges/score.svg)](https://www.bithound.io/github/yagop/node-telegram-bot-api) [![https://telegram.me/node_telegram_bot_api](https://img.shields.io/badge/💬 Telegram-node__telegram__bot__api-blue.svg)](https://telegram.me/node_telegram_bot_api) [![https://telegram.me/Yago_Perez](https://img.shields.io/badge/💬 Telegram-Yago__Perez-blue.svg)](https://telegram.me/Yago_Perez)
2015-10-10 18:28:21 +02:00
Node.js module to interact with official [Telegram Bot API](https://core.telegram.org/bots/api). A bot token is needed, to obtain one, talk to [@botfather](https://telegram.me/BotFather) and create a new bot.
2015-06-29 22:37:38 +02:00
2015-06-29 22:19:19 +02:00
```sh
npm install node-telegram-bot-api
```
```js
var TelegramBot = require('node-telegram-bot-api');
var token = 'YOUR_TELEGRAM_BOT_TOKEN';
// Setup polling way
var bot = new TelegramBot(token, {polling: true});
2015-10-10 18:09:25 +02:00
2016-01-03 17:20:34 +01:00
// Matches /echo [whatever]
2015-10-10 18:09:25 +02:00
bot.onText(/\/echo (.+)/, function (msg, match) {
var fromId = msg.from.id;
var resp = match[1];
bot.sendMessage(fromId, resp);
});
// Any kind of message
bot.on('message', function (msg) {
2015-06-29 22:19:19 +02:00
var chatId = msg.chat.id;
// photo can be: a file path, a stream or a Telegram file_id
2015-08-08 12:59:16 +02:00
var photo = 'cats.png';
bot.sendPhoto(chatId, photo, {caption: 'Lovely kittens'});
2015-06-29 22:19:19 +02:00
});
```
2015-06-29 22:37:38 +02:00
There are some other examples on [examples](https://github.com/yagop/node-telegram-bot-api/tree/master/examples).
2015-08-08 12:59:16 +02:00
### Events
2016-01-04 23:34:27 +01:00
Every time TelegramBot receives a message, it emits a `message`. Depending on which [message](https://core.telegram.org/bots/api#message) was received, emits an event from this ones: `text`, `audio`, `document`, `photo`, `sticker`, `video`, `voice`, `contact`, `location`, `new_chat_participant`, `left_chat_participant`, `new_chat_title`, `new_chat_photo`, `delete_chat_photo`, `group_chat_created`. Its much better to listen a specific event rather than a `message` in order to stay safe from the content.
2016-03-18 01:35:28 +06:00
TelegramBot emits `inline_query` when receives an [Inline Query](https://core.telegram.org/bots/api#inlinequery) and `chosen_inline_result` when receives a [ChosenInlineResult](https://core.telegram.org/bots/api#choseninlineresult). Bot must be enabled on [inline mode](https://core.telegram.org/bots/api#inline-mode)
2015-06-29 00:51:10 +02:00
* * *
### WebHooks
Telegram only supports HTTPS connections to WebHooks, in order to set a WebHook a private key file and public certificate must be used. Since August 29, 2015 Telegram supports self signed ones, to generate them:
```bash
# Our private cert will be key.pem, keep in private this file.
openssl genrsa -out key.pem 2048
# Our public certificate will be crt.pem
openssl req -new -sha256 -key key.pem -out crt.pem
```
Once they are generated, the `crt.pem` can be provided to `telegramBot.setWebHook(url, crt)` as `crt`.
2015-07-08 22:04:55 +02:00
2015-09-26 22:52:14 +02:00
## API Reference
<a name="TelegramBot"></a>
2016-03-20 20:14:56 +01:00
2015-06-29 22:49:16 +02:00
## TelegramBot
2015-09-26 22:52:14 +02:00
TelegramBot
**Kind**: global class
**See**: https://core.telegram.org/bots/api
* [TelegramBot](#TelegramBot)
2016-01-04 23:43:31 +01:00
* [new TelegramBot(token, [options])](#new_TelegramBot_new)
2016-07-07 23:51:13 +02:00
* [.stopPolling()](#TelegramBot+stopPolling) ⇒ <code>Promise</code>
2016-01-04 23:43:31 +01:00
* [.getMe()](#TelegramBot+getMe) ⇒ <code>Promise</code>
* [.setWebHook(url, [cert])](#TelegramBot+setWebHook)
* [.getUpdates([timeout], [limit], [offset])](#TelegramBot+getUpdates) ⇒ <code>Promise</code>
* [.sendMessage(chatId, text, [options])](#TelegramBot+sendMessage) ⇒ <code>Promise</code>
* [.answerInlineQuery(inlineQueryId, results, [options])](#TelegramBot+answerInlineQuery) ⇒ <code>Promise</code>
* [.forwardMessage(chatId, fromChatId, messageId)](#TelegramBot+forwardMessage) ⇒ <code>Promise</code>
* [.sendPhoto(chatId, photo, [options])](#TelegramBot+sendPhoto) ⇒ <code>Promise</code>
* [.sendAudio(chatId, audio, [options])](#TelegramBot+sendAudio) ⇒ <code>Promise</code>
2016-06-06 23:34:03 +02:00
* [.sendDocument(chatId, doc, [options], [fileOpts])](#TelegramBot+sendDocument) ⇒ <code>Promise</code>
2016-01-04 23:43:31 +01:00
* [.sendSticker(chatId, sticker, [options])](#TelegramBot+sendSticker) ⇒ <code>Promise</code>
* [.sendVideo(chatId, video, [options])](#TelegramBot+sendVideo) ⇒ <code>Promise</code>
* [.sendVoice(chatId, voice, [options])](#TelegramBot+sendVoice) ⇒ <code>Promise</code>
* [.sendChatAction(chatId, action)](#TelegramBot+sendChatAction) ⇒ <code>Promise</code>
2016-06-06 22:57:06 +02:00
* [.kickChatMember(chatId, userId)](#TelegramBot+kickChatMember) ⇒ <code>Promise</code>
* [.unbanChatMember(chatId, userId)](#TelegramBot+unbanChatMember) ⇒ <code>Promise</code>
* [.answerCallbackQuery(callbackQueryId, text, showAlert, [options])](#TelegramBot+answerCallbackQuery) ⇒ <code>Promise</code>
* [.editMessageText(text, [options])](#TelegramBot+editMessageText) ⇒ <code>Promise</code>
* [.editMessageCaption(caption, [options])](#TelegramBot+editMessageCaption) ⇒ <code>Promise</code>
* [.editMessageReplyMarkup(replyMarkup, [options])](#TelegramBot+editMessageReplyMarkup) ⇒ <code>Promise</code>
2016-01-04 23:43:31 +01:00
* [.getUserProfilePhotos(userId, [offset], [limit])](#TelegramBot+getUserProfilePhotos) ⇒ <code>Promise</code>
* [.sendLocation(chatId, latitude, longitude, [options])](#TelegramBot+sendLocation) ⇒ <code>Promise</code>
* [.getFile(fileId)](#TelegramBot+getFile) ⇒ <code>Promise</code>
* [.getFileLink(fileId)](#TelegramBot+getFileLink) ⇒ <code>Promise</code>
* [.downloadFile(fileId, downloadDir)](#TelegramBot+downloadFile) ⇒ <code>Promise</code>
* [.onText(regexp, callback)](#TelegramBot+onText)
2016-01-30 18:19:39 +01:00
* [.onReplyToMessage(chatId, messageId, callback)](#TelegramBot+onReplyToMessage)
2015-09-26 22:52:14 +02:00
<a name="new_TelegramBot_new"></a>
2016-03-20 20:14:56 +01:00
2015-09-26 22:52:14 +02:00
### new TelegramBot(token, [options])
2015-06-29 22:49:16 +02:00
Both request method to obtain messages are implemented. To use standard polling, set `polling: true`
on `options`. Notice that [webHook](https://core.telegram.org/bots/api#setwebhook) will need a SSL certificate.
2015-08-08 12:59:16 +02:00
Emits `message` when a message arrives.
2015-06-29 22:49:16 +02:00
2015-06-29 00:51:10 +02:00
2015-09-26 22:52:14 +02:00
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| token | <code>String</code> | | Bot Token |
| [options] | <code>Object</code> | | |
| [options.polling] | <code>Boolean</code> &#124; <code>Object</code> | <code>false</code> | Set true to enable polling or set options |
2016-01-30 18:19:39 +01:00
| [options.polling.timeout] | <code>String</code> &#124; <code>Number</code> | <code>10</code> | Polling time in seconds |
2015-09-26 22:52:14 +02:00
| [options.polling.interval] | <code>String</code> &#124; <code>Number</code> | <code>2000</code> | Interval between requests in miliseconds |
| [options.webHook] | <code>Boolean</code> &#124; <code>Object</code> | <code>false</code> | Set true to enable WebHook or set options |
| [options.webHook.key] | <code>String</code> | | PEM private key to webHook server. |
| [options.webHook.cert] | <code>String</code> | | PEM certificate (public) to webHook server. |
2015-06-29 00:51:10 +02:00
2016-07-07 23:51:13 +02:00
<a name="TelegramBot+stopPolling"></a>
### telegramBot.stopPolling() ⇒ <code>Promise</code>
Stops polling after the last polling request resolves
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**Returns**: <code>Promise</code> - promise Promise, of last polling request
2015-09-26 22:52:14 +02:00
<a name="TelegramBot+getMe"></a>
2016-03-20 20:14:56 +01:00
2015-09-26 22:52:14 +02:00
### telegramBot.getMe() ⇒ <code>Promise</code>
2015-06-29 00:51:10 +02:00
Returns basic information about the bot in form of a `User` object.
2015-09-26 22:52:14 +02:00
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#getme
<a name="TelegramBot+setWebHook"></a>
2016-03-20 20:14:56 +01:00
### telegramBot.setWebHook(url, [cert])
2015-07-07 22:11:54 +02:00
Specify an url to receive incoming updates via an outgoing webHook.
2015-09-26 22:52:14 +02:00
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#setwebhook
2015-06-29 00:51:10 +02:00
2015-09-26 22:52:14 +02:00
| Param | Type | Description |
| --- | --- | --- |
| url | <code>String</code> | URL where Telegram will make HTTP Post. Leave empty to delete webHook. |
| [cert] | <code>String</code> &#124; <code>stream.Stream</code> | PEM certificate key (public). |
2015-06-29 00:51:10 +02:00
2015-09-26 22:52:14 +02:00
<a name="TelegramBot+getUpdates"></a>
2016-03-20 20:14:56 +01:00
2015-09-26 22:52:14 +02:00
### telegramBot.getUpdates([timeout], [limit], [offset]) ⇒ <code>Promise</code>
2015-06-29 00:51:10 +02:00
Use this method to receive incoming updates using long polling
2015-09-26 22:52:14 +02:00
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**Returns**: <code>Promise</code> - Updates
**See**: https://core.telegram.org/bots/api#getupdates
2015-06-29 00:51:10 +02:00
2015-09-26 22:52:14 +02:00
| Param | Type | Description |
| --- | --- | --- |
| [timeout] | <code>Number</code> &#124; <code>String</code> | Timeout in seconds for long polling. |
| [limit] | <code>Number</code> &#124; <code>String</code> | Limits the number of updates to be retrieved. |
| [offset] | <code>Number</code> &#124; <code>String</code> | Identifier of the first update to be returned. |
2015-06-29 00:51:10 +02:00
2015-09-26 22:52:14 +02:00
<a name="TelegramBot+sendMessage"></a>
2016-03-20 20:14:56 +01:00
2015-09-26 22:52:14 +02:00
### telegramBot.sendMessage(chatId, text, [options]) ⇒ <code>Promise</code>
2015-06-29 00:51:10 +02:00
Send text message.
2015-09-26 22:52:14 +02:00
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#sendmessage
2015-06-29 00:51:10 +02:00
2015-09-26 22:52:14 +02:00
| Param | Type | Description |
| --- | --- | --- |
| chatId | <code>Number</code> &#124; <code>String</code> | Unique identifier for the message recipient |
| text | <code>String</code> | Text of the message to be sent |
| [options] | <code>Object</code> | Additional Telegram query options |
2015-06-29 00:51:10 +02:00
2016-01-04 23:34:27 +01:00
<a name="TelegramBot+answerInlineQuery"></a>
2016-03-20 20:14:56 +01:00
2016-01-04 23:34:27 +01:00
### telegramBot.answerInlineQuery(inlineQueryId, results, [options]) ⇒ <code>Promise</code>
Send answers to an inline query.
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#answerinlinequery
| Param | Type | Description |
| --- | --- | --- |
| inlineQueryId | <code>String</code> | Unique identifier of the query |
| results | <code>Array.&lt;InlineQueryResult&gt;</code> | An array of results for the inline query |
| [options] | <code>Object</code> | Additional Telegram query options |
2015-09-26 22:52:14 +02:00
<a name="TelegramBot+forwardMessage"></a>
2016-03-20 20:14:56 +01:00
2015-09-26 22:52:14 +02:00
### telegramBot.forwardMessage(chatId, fromChatId, messageId) ⇒ <code>Promise</code>
2015-06-29 00:51:10 +02:00
Forward messages of any kind.
2015-09-26 22:52:14 +02:00
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
2015-06-29 00:51:10 +02:00
2015-09-26 22:52:14 +02:00
| Param | Type | Description |
| --- | --- | --- |
| chatId | <code>Number</code> &#124; <code>String</code> | Unique identifier for the message recipient |
| fromChatId | <code>Number</code> &#124; <code>String</code> | Unique identifier for the chat where the original message was sent |
| messageId | <code>Number</code> &#124; <code>String</code> | Unique message identifier |
2015-06-29 00:51:10 +02:00
2015-09-26 22:52:14 +02:00
<a name="TelegramBot+sendPhoto"></a>
2016-03-20 20:14:56 +01:00
2015-09-26 22:52:14 +02:00
### telegramBot.sendPhoto(chatId, photo, [options]) ⇒ <code>Promise</code>
2015-06-29 00:51:10 +02:00
Send photo
2015-09-26 22:52:14 +02:00
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#sendphoto
2015-06-29 00:51:10 +02:00
2015-09-26 22:52:14 +02:00
| Param | Type | Description |
| --- | --- | --- |
| chatId | <code>Number</code> &#124; <code>String</code> | Unique identifier for the message recipient |
2016-01-03 17:20:34 +01:00
| photo | <code>String</code> &#124; <code>stream.Stream</code> &#124; <code>Buffer</code> | A file path or a Stream. Can also be a `file_id` previously uploaded |
2015-09-26 22:52:14 +02:00
| [options] | <code>Object</code> | Additional Telegram query options |
2015-06-29 00:51:10 +02:00
2015-09-26 22:52:14 +02:00
<a name="TelegramBot+sendAudio"></a>
2016-03-20 20:14:56 +01:00
2015-09-26 22:52:14 +02:00
### telegramBot.sendAudio(chatId, audio, [options]) ⇒ <code>Promise</code>
2015-06-29 00:51:10 +02:00
Send audio
2015-09-26 22:52:14 +02:00
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#sendaudio
2015-06-29 00:51:10 +02:00
2015-09-26 22:52:14 +02:00
| Param | Type | Description |
| --- | --- | --- |
| chatId | <code>Number</code> &#124; <code>String</code> | Unique identifier for the message recipient |
2016-01-03 17:20:34 +01:00
| audio | <code>String</code> &#124; <code>stream.Stream</code> &#124; <code>Buffer</code> | A file path, Stream or Buffer. Can also be a `file_id` previously uploaded. |
2015-09-26 22:52:14 +02:00
| [options] | <code>Object</code> | Additional Telegram query options |
2015-07-07 22:11:54 +02:00
2015-09-26 22:52:14 +02:00
<a name="TelegramBot+sendDocument"></a>
2016-03-20 20:14:56 +01:00
2016-06-06 23:34:03 +02:00
### telegramBot.sendDocument(chatId, doc, [options], [fileOpts]) ⇒ <code>Promise</code>
2015-07-07 22:11:54 +02:00
Send Document
2015-09-26 22:52:14 +02:00
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#sendDocument
2015-07-06 01:40:54 +02:00
2015-09-26 22:52:14 +02:00
| Param | Type | Description |
| --- | --- | --- |
| chatId | <code>Number</code> &#124; <code>String</code> | Unique identifier for the message recipient |
2016-01-03 17:20:34 +01:00
| doc | <code>String</code> &#124; <code>stream.Stream</code> &#124; <code>Buffer</code> | A file path, Stream or Buffer. Can also be a `file_id` previously uploaded. |
2015-09-26 22:52:14 +02:00
| [options] | <code>Object</code> | Additional Telegram query options |
2016-06-06 23:34:03 +02:00
| [fileOpts] | <code>Object</code> | Optional file related meta-data |
2015-07-08 22:04:55 +02:00
2015-09-26 22:52:14 +02:00
<a name="TelegramBot+sendSticker"></a>
2016-03-20 20:14:56 +01:00
2016-01-03 17:20:34 +01:00
### telegramBot.sendSticker(chatId, sticker, [options]) ⇒ <code>Promise</code>
2015-07-08 22:04:55 +02:00
Send .webp stickers.
2015-09-26 22:52:14 +02:00
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#sendsticker
2015-07-08 22:04:55 +02:00
2015-09-26 22:52:14 +02:00
| Param | Type | Description |
| --- | --- | --- |
| chatId | <code>Number</code> &#124; <code>String</code> | Unique identifier for the message recipient |
2016-01-03 17:20:34 +01:00
| sticker | <code>String</code> &#124; <code>stream.Stream</code> &#124; <code>Buffer</code> | A file path, Stream or Buffer. Can also be a `file_id` previously uploaded. Stickers are WebP format files. |
2015-09-26 22:52:14 +02:00
| [options] | <code>Object</code> | Additional Telegram query options |
2015-07-08 22:36:28 +02:00
2015-09-26 22:52:14 +02:00
<a name="TelegramBot+sendVideo"></a>
2016-03-20 20:14:56 +01:00
2016-01-03 17:20:34 +01:00
### telegramBot.sendVideo(chatId, video, [options]) ⇒ <code>Promise</code>
2015-08-08 12:59:16 +02:00
Use this method to send video files, Telegram clients support mp4 videos (other formats may be sent as Document).
2015-07-08 22:36:28 +02:00
2015-09-26 22:52:14 +02:00
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#sendvideo
2015-07-08 22:36:28 +02:00
2015-09-26 22:52:14 +02:00
| Param | Type | Description |
| --- | --- | --- |
| chatId | <code>Number</code> &#124; <code>String</code> | Unique identifier for the message recipient |
2016-01-04 23:34:27 +01:00
| video | <code>String</code> &#124; <code>stream.Stream</code> &#124; <code>Buffer</code> | A file path or Stream. Can also be a `file_id` previously uploaded. |
2015-09-26 22:52:14 +02:00
| [options] | <code>Object</code> | Additional Telegram query options |
2015-09-15 17:55:02 -03:00
2015-09-26 22:52:14 +02:00
<a name="TelegramBot+sendVoice"></a>
2016-03-20 20:14:56 +01:00
2015-09-26 22:52:14 +02:00
### telegramBot.sendVoice(chatId, voice, [options]) ⇒ <code>Promise</code>
Send voice
2015-09-15 17:55:02 -03:00
2015-09-26 22:52:14 +02:00
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#sendvoice
2015-09-15 17:55:02 -03:00
2015-09-26 22:52:14 +02:00
| Param | Type | Description |
| --- | --- | --- |
| chatId | <code>Number</code> &#124; <code>String</code> | Unique identifier for the message recipient |
2016-01-03 17:20:34 +01:00
| voice | <code>String</code> &#124; <code>stream.Stream</code> &#124; <code>Buffer</code> | A file path, Stream or Buffer. Can also be a `file_id` previously uploaded. |
2015-09-26 22:52:14 +02:00
| [options] | <code>Object</code> | Additional Telegram query options |
2015-07-06 01:40:54 +02:00
2015-09-26 22:52:14 +02:00
<a name="TelegramBot+sendChatAction"></a>
2016-03-20 20:14:56 +01:00
2015-09-26 22:52:14 +02:00
### telegramBot.sendChatAction(chatId, action) ⇒ <code>Promise</code>
2015-07-07 22:11:54 +02:00
Send chat action.
`typing` for text messages,
`upload_photo` for photos, `record_video` or `upload_video` for videos,
`record_audio` or `upload_audio` for audio files, `upload_document` for general files,
`find_location` for location data.
2015-07-06 01:40:54 +02:00
2015-09-26 22:52:14 +02:00
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#sendchataction
2015-07-08 22:04:55 +02:00
2015-09-26 22:52:14 +02:00
| Param | Type | Description |
| --- | --- | --- |
| chatId | <code>Number</code> &#124; <code>String</code> | Unique identifier for the message recipient |
| action | <code>String</code> | Type of action to broadcast. |
2015-07-09 23:15:05 +02:00
2016-06-06 22:57:06 +02:00
<a name="TelegramBot+kickChatMember"></a>
### telegramBot.kickChatMember(chatId, userId) ⇒ <code>Promise</code>
Use this method to kick a user from a group or a supergroup.
In the case of supergroups, the user will not be able to return
to the group on their own using invite links, etc., unless unbanned
first. The bot must be an administrator in the group for this to work.
Returns True on success.
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#kickchatmember
| Param | Type | Description |
| --- | --- | --- |
| chatId | <code>Number</code> &#124; <code>String</code> | Unique identifier for the target group or username of the target supergroup |
| userId | <code>String</code> | Unique identifier of the target user |
<a name="TelegramBot+unbanChatMember"></a>
### telegramBot.unbanChatMember(chatId, userId) ⇒ <code>Promise</code>
Use this method to unban a previously kicked user in a supergroup.
The user will not return to the group automatically, but will be
able to join via link, etc. The bot must be an administrator in
the group for this to work. Returns True on success.
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#unbanchatmember
| Param | Type | Description |
| --- | --- | --- |
| chatId | <code>Number</code> &#124; <code>String</code> | Unique identifier for the target group or username of the target supergroup |
| userId | <code>String</code> | Unique identifier of the target user |
<a name="TelegramBot+answerCallbackQuery"></a>
### telegramBot.answerCallbackQuery(callbackQueryId, text, showAlert, [options]) ⇒ <code>Promise</code>
Use this method to send answers to callback queries sent from
inline keyboards. The answer will be displayed to the user as
a notification at the top of the chat screen or as an alert.
On success, True is returned.
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#answercallbackquery
| Param | Type | Description |
| --- | --- | --- |
| callbackQueryId | <code>Number</code> &#124; <code>String</code> | Unique identifier for the query to be answered |
| text | <code>String</code> | Text of the notification. If not specified, nothing will be shown to the user |
| showAlert | <code>Boolean</code> | Whether to show an alert or a notification at the top of the screen |
| [options] | <code>Object</code> | Additional Telegram query options |
<a name="TelegramBot+editMessageText"></a>
### telegramBot.editMessageText(text, [options]) ⇒ <code>Promise</code>
Use this method to edit text messages sent by the bot or via
the bot (for inline bots). On success, the edited Message is
returned.
Note that you must provide one of chat_id, message_id, or
inline_message_id in your request.
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#editmessagetext
| Param | Type | Description |
| --- | --- | --- |
| text | <code>String</code> | New text of the message |
| [options] | <code>Object</code> | Additional Telegram query options (provide either one of chat_id, message_id, or inline_message_id here) |
<a name="TelegramBot+editMessageCaption"></a>
### telegramBot.editMessageCaption(caption, [options]) ⇒ <code>Promise</code>
Use this method to edit captions of messages sent by the
bot or via the bot (for inline bots). On success, the
edited Message is returned.
Note that you must provide one of chat_id, message_id, or
inline_message_id in your request.
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
2016-07-07 23:51:13 +02:00
**See**: https://core.telegram.org/bots/api#editmessagecaption
2016-06-06 22:57:06 +02:00
| Param | Type | Description |
| --- | --- | --- |
| caption | <code>String</code> | New caption of the message |
| [options] | <code>Object</code> | Additional Telegram query options (provide either one of chat_id, message_id, or inline_message_id here) |
<a name="TelegramBot+editMessageReplyMarkup"></a>
### telegramBot.editMessageReplyMarkup(replyMarkup, [options]) ⇒ <code>Promise</code>
Use this method to edit only the reply markup of messages
sent by the bot or via the bot (for inline bots).
On success, the edited Message is returned.
Note that you must provide one of chat_id, message_id, or
inline_message_id in your request.
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#editmessagetext
| Param | Type | Description |
| --- | --- | --- |
| replyMarkup | <code>Object</code> | A JSON-serialized object for an inline keyboard. |
| [options] | <code>Object</code> | Additional Telegram query options (provide either one of chat_id, message_id, or inline_message_id here) |
2015-09-26 22:52:14 +02:00
<a name="TelegramBot+getUserProfilePhotos"></a>
2016-03-20 20:14:56 +01:00
2015-09-26 22:52:14 +02:00
### telegramBot.getUserProfilePhotos(userId, [offset], [limit]) ⇒ <code>Promise</code>
2015-07-09 23:15:05 +02:00
Use this method to get a list of profile pictures for a user.
Returns a [UserProfilePhotos](https://core.telegram.org/bots/api#userprofilephotos) object.
2015-09-26 22:52:14 +02:00
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#getuserprofilephotos
2015-07-09 23:15:05 +02:00
2015-09-26 22:52:14 +02:00
| Param | Type | Description |
| --- | --- | --- |
| userId | <code>Number</code> &#124; <code>String</code> | Unique identifier of the target user |
| [offset] | <code>Number</code> | Sequential number of the first photo to be returned. By default, all photos are returned. |
| [limit] | <code>Number</code> | Limits the number of photos to be retrieved. Values between 1—100 are accepted. Defaults to 100. |
2015-07-09 13:40:11 +02:00
2015-09-26 22:52:14 +02:00
<a name="TelegramBot+sendLocation"></a>
2016-03-20 20:14:56 +01:00
2015-09-26 22:52:14 +02:00
### telegramBot.sendLocation(chatId, latitude, longitude, [options]) ⇒ <code>Promise</code>
2015-07-09 23:15:05 +02:00
Send location.
2015-07-09 13:40:11 +02:00
Use this method to send point on the map.
2015-09-26 22:52:14 +02:00
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#sendlocation
2015-07-09 13:40:11 +02:00
2015-09-26 22:52:14 +02:00
| Param | Type | Description |
| --- | --- | --- |
| chatId | <code>Number</code> &#124; <code>String</code> | Unique identifier for the message recipient |
| latitude | <code>Float</code> | Latitude of location |
| longitude | <code>Float</code> | Longitude of location |
| [options] | <code>Object</code> | Additional Telegram query options |
2015-09-26 17:46:06 +03:00
2015-09-26 22:52:14 +02:00
<a name="TelegramBot+getFile"></a>
2016-03-20 20:14:56 +01:00
2015-09-26 22:52:14 +02:00
### telegramBot.getFile(fileId) ⇒ <code>Promise</code>
2015-09-26 17:46:06 +03:00
Get file.
Use this method to get basic info about a file and prepare it for downloading.
Attention: link will be valid for 1 hour.
2015-09-26 22:52:14 +02:00
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**See**: https://core.telegram.org/bots/api#getfile
2015-09-26 17:46:06 +03:00
2015-09-26 22:52:14 +02:00
| Param | Type | Description |
| --- | --- | --- |
| fileId | <code>String</code> | File identifier to get info about |
2015-09-26 22:52:14 +02:00
<a name="TelegramBot+getFileLink"></a>
2016-03-20 20:14:56 +01:00
2015-09-26 22:52:14 +02:00
### telegramBot.getFileLink(fileId) ⇒ <code>Promise</code>
Get link for file.
Use this method to get link for file for subsequent use.
Attention: link will be valid for 1 hour.
2016-03-20 20:14:56 +01:00
This method is a sugar extension of the (getFile)[#getfilefileid] method,
which returns just path to file on remote server (you will have to manually build full uri after that).
2015-09-26 22:52:14 +02:00
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**Returns**: <code>Promise</code> - promise Promise which will have *fileURI* in resolve callback
**See**: https://core.telegram.org/bots/api#getfile
2015-09-26 22:52:14 +02:00
| Param | Type | Description |
| --- | --- | --- |
| fileId | <code>String</code> | File identifier to get info about |
2015-09-26 19:52:17 +03:00
2015-09-26 22:52:14 +02:00
<a name="TelegramBot+downloadFile"></a>
2016-03-20 20:14:56 +01:00
2015-09-26 22:52:14 +02:00
### telegramBot.downloadFile(fileId, downloadDir) ⇒ <code>Promise</code>
2015-09-26 19:52:17 +03:00
Downloads file in the specified folder.
This is just a sugar for (getFile)[#getfilefiled] method
2015-09-26 22:52:14 +02:00
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
**Returns**: <code>Promise</code> - promise Promise, which will have *filePath* of downloaded file in resolve callback
2015-09-26 19:52:17 +03:00
2015-09-26 22:52:14 +02:00
| Param | Type | Description |
| --- | --- | --- |
| fileId | <code>String</code> | File identifier to get info about |
| downloadDir | <code>String</code> | Absolute path to the folder in which file will be saved |
2015-09-26 19:52:17 +03:00
2015-10-10 18:09:25 +02:00
<a name="TelegramBot+onText"></a>
2016-03-20 20:14:56 +01:00
2015-10-10 18:09:25 +02:00
### telegramBot.onText(regexp, callback)
Register a RegExp to test against an incomming text message.
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
| Param | Type | Description |
| --- | --- | --- |
| regexp | <code>RegExp</code> | RegExp to be executed with `exec`. |
| callback | <code>function</code> | Callback will be called with 2 parameters, the `msg` and the result of executing `regexp.exec` on message text. |
2016-01-30 18:06:04 +01:00
<a name="TelegramBot+onReplyToMessage"></a>
2016-03-20 20:14:56 +01:00
2016-01-30 18:19:39 +01:00
### telegramBot.onReplyToMessage(chatId, messageId, callback)
2016-01-30 18:06:04 +01:00
Register a reply to wait for a message response.
**Kind**: instance method of <code>[TelegramBot](#TelegramBot)</code>
| Param | Type | Description |
| --- | --- | --- |
2016-01-30 18:19:39 +01:00
| chatId | <code>Number</code> &#124; <code>String</code> | The chat id where the message cames from. |
| messageId | <code>Number</code> &#124; <code>String</code> | The message id to be replied. |
2016-03-20 20:14:56 +01:00
| callback | <code>function</code> | Callback will be called with the reply message. |
2016-01-30 18:06:04 +01:00
2015-09-26 22:52:14 +02:00
* * *