2015-07-15 10:41:45 +02:00
[](https://travis-ci.org/yagop/node-telegram-bot-api) [](https://ci.appveyor.com/project/yagop/node-telegram-bot-api/branch/master) [](https://coveralls.io/r/yagop/node-telegram-bot-api?branch=master) [](https://www.bithound.io/github/yagop/node-telegram-bot-api)
2015-06-29 01:04:39 +02:00
2015-06-29 22:37:38 +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 ](telegram.me/BotFather ) and create a new bot.
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-08-08 12:59:16 +02:00
bot.on('text', 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
2015-09-15 17:55:02 -03: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.
2015-06-29 00:51:10 +02:00
* * *
2015-07-08 22:04:55 +02:00
<!-- Start src/telegram.js -->
2015-06-29 22:49:16 +02:00
## TelegramBot
Both request method to obtain messages are implemented. To use standard polling, set `polling: true`
2015-09-08 10:26:54 +02:00
on `options` . Notice that [webHook ](https://core.telegram.org/bots/api#setwebhook ) will need a valid SSL certificate (self-signed certificates are allowed since August 29, 2015).
2015-08-08 12:59:16 +02:00
Emits `message` when a message arrives.
2015-06-29 22:49:16 +02:00
See: https://core.telegram.org/bots/api
### Params:
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
* **String** *token* Bot Token
* **Object** *[options]*
2015-08-08 12:59:16 +02:00
* **Boolean|Object** *[options.polling=false]* Set true to enable polling or set options
2015-06-29 22:49:16 +02:00
* **String|Number** *[options.polling.timeout=4]* Polling time
2015-08-08 12:59:16 +02:00
* **String|Number** *[options.polling.interval=2000]* Interval between requests in miliseconds
* **Boolean|Object** *[options.webHook=false]* Set true to enable WebHook or set options
2015-06-29 22:49:16 +02:00
* **String** *[options.webHook.key]* PEM private key to webHook server
* **String** *[options.webHook.cert]* PEM certificate key to webHook server
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
## getMe()
2015-06-29 00:51:10 +02:00
Returns basic information about the bot in form of a `User` object.
2015-08-08 12:59:16 +02:00
See: https://core.telegram.org/bots/api#getme
2015-06-29 22:49:16 +02:00
### Return:
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
* **Promise**
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
## setWebHook(url)
2015-06-29 00:51:10 +02:00
2015-07-07 22:11:54 +02:00
Specify an url to receive incoming updates via an outgoing webHook.
See: https://core.telegram.org/bots/api#setwebhook
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
### Params:
2015-06-29 00:51:10 +02:00
2015-07-07 22:11:54 +02:00
* **String** *url* URL where Telegram will make HTTP Post. Leave empty to delete webHook.
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
## getUpdates([timeout], [limit], [offset])
2015-06-29 00:51:10 +02:00
Use this method to receive incoming updates using long polling
2015-06-29 22:49:16 +02:00
See: https://core.telegram.org/bots/api#getupdates
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
### Params:
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
* **Number|String** *[timeout]* Timeout in seconds for long polling.
* **Number|String** *[limit]* Limits the number of updates to be retrieved.
* **Number|String** *[offset]* Identifier of the first update to be returned.
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
### Return:
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
* **Promise** Updates
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
## sendMessage(chatId, text, [options])
2015-06-29 00:51:10 +02:00
Send text message.
2015-06-29 22:49:16 +02:00
See: https://core.telegram.org/bots/api#sendmessage
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
### Params:
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
* **Number|String** *chatId* Unique identifier for the message recipient
2015-08-08 12:59:16 +02:00
* **String** *text* Text of the message to be sent
2015-06-29 22:49:16 +02:00
* **Object** *[options]* Additional Telegram query options
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
### Return:
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
* **Promise**
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
## forwardMessage(chatId, fromChatId, messageId)
2015-06-29 00:51:10 +02:00
Forward messages of any kind.
2015-06-29 22:49:16 +02:00
### Params:
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
* **Number|String** *chatId* Unique identifier for the message recipient
* **Number|String** *fromChatId* Unique identifier for the chat where the original message was sent
* **Number|String** *messageId* Unique message identifier
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
### Return:
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
* **Promise**
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
## sendPhoto(chatId, photo, [options])
2015-06-29 00:51:10 +02:00
Send photo
2015-06-29 22:49:16 +02:00
See: https://core.telegram.org/bots/api#sendphoto
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
### Params:
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
* **Number|String** *chatId* Unique identifier for the message recipient
* **String|stream.Stream** *photo* A file path or a Stream. Can also be a `file_id` previously uploaded
* **Object** *[options]* Additional Telegram query options
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
### Return:
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
* **Promise**
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
## sendAudio(chatId, audio, [options])
2015-06-29 00:51:10 +02:00
Send audio
2015-06-29 22:49:16 +02:00
See: https://core.telegram.org/bots/api#sendaudio
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
### Params:
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
* **Number|String** *chatId* Unique identifier for the message recipient
* **String|stream.Stream** *audio* A file path or a Stream. Can also be a `file_id` previously uploaded.
* **Object** *[options]* Additional Telegram query options
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
### Return:
2015-06-29 00:51:10 +02:00
2015-06-29 22:49:16 +02:00
* **Promise**
2015-07-06 01:40:54 +02:00
2015-07-07 22:11:54 +02:00
## sendDocument(chatId, A, [options])
Send Document
See: https://core.telegram.org/bots/api#sendDocument
### Params:
* **Number|String** *chatId* Unique identifier for the message recipient
* **String|stream.Stream** *A* file path or a Stream. Can also be a `file_id` previously uploaded.
* **Object** *[options]* Additional Telegram query options
### Return:
* **Promise**
2015-07-06 01:40:54 +02:00
2015-07-08 22:04:55 +02:00
## sendSticker(chatId, A, [options])
Send .webp stickers.
See: https://core.telegram.org/bots/api#sendsticker
### Params:
* **Number|String** *chatId* Unique identifier for the message recipient
* **String|stream.Stream** *A* file path or a Stream. Can also be a `file_id` previously uploaded.
* **Object** *[options]* Additional Telegram query options
### Return:
* **Promise**
2015-07-08 22:36:28 +02:00
## sendVideo(chatId, A, [options])
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
See: https://core.telegram.org/bots/api#sendvideo
### Params:
* **Number|String** *chatId* Unique identifier for the message recipient
* **String|stream.Stream** *A* file path or a Stream. Can also be a `file_id` previously uploaded.
* **Object** *[options]* Additional Telegram query options
### Return:
* **Promise**
2015-09-15 17:55:02 -03:00
## sendVoice(chatId, A, [options])
Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message. For this to work, your audio must be in an .ogg file encoded with OPUS (other formats may be sent as Audio or Document).
See: https://core.telegram.org/bots/api#sendvoice
### Params:
* **Number|String** *chatId* Unique identifier for the message recipient
* **String|stream.Stream** *A* file path or a Stream. Can also be a `file_id` previously uploaded.
* **Object** *[options]* Additional Telegram query options
### Return:
* **Promise**
2015-07-06 01:40:54 +02:00
## sendChatAction(chatId, action)
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
See: https://core.telegram.org/bots/api#sendchataction
### Params:
* **Number|String** *chatId* Unique identifier for the message recipient
2015-07-07 22:11:54 +02:00
* **String** *action* Type of action to broadcast.
2015-07-06 01:40:54 +02:00
### Return:
2015-07-08 22:04:55 +02:00
* **Promise**
2015-07-09 23:15:05 +02:00
## getUserProfilePhotos(userId, [offset], [limit])
Use this method to get a list of profile pictures for a user.
Returns a [UserProfilePhotos ](https://core.telegram.org/bots/api#userprofilephotos ) object.
See: https://core.telegram.org/bots/api#getuserprofilephotos
### Params:
* **Number|String** *userId* Unique identifier of the target user
* **Number** *[offset]* Sequential number of the first photo to be returned. By default, all photos are returned.
* **Number** *[limit]* Limits the number of photos to be retrieved. Values between 1—100 are accepted. Defaults to 100.
### Return:
* **Promise**
2015-07-09 13:40:11 +02:00
## sendLocation(chatId, latitude, longitude, [options])
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.
See: https://core.telegram.org/bots/api#sendlocation
### Params:
* **Number|String** *chatId* Unique identifier for the message recipient
* **Float** *latitude* Latitude of location
* **Float** *longitude* Longitude of location
* **Object** *[options]* Additional Telegram query options
### Return:
* **Promise**
2015-09-26 17:46:06 +03:00
## getFile(fileId)
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.
See: https://core.telegram.org/bots/api#getfile
### Params:
* **String** *fileId* File identifier to get info about
### Return:
* **Promise**
2015-07-08 22:04:55 +02:00
<!-- End src/telegram.js -->