You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
Patricio López b34caa84c5 added sendVoice function 10 years ago
examples Changed event message to event text on exmaple polling 11 years ago
src added sendVoice function 10 years ago
test added sendVoice function 10 years ago
.gitignore Updated .gitignore 11 years ago
.travis.yml Travis cache node_modules 11 years ago
LICENSE.md Update LICENSE.md 11 years ago
README.md added sendVoice function 10 years ago
index.js First commit 11 years ago
package.json Release v0.12.1. 11 years ago

README.md

Build Status Build status Coverage Status bitHound Score

Node.js module to interact with official Telegram Bot API. A bot token is needed, to obtain one, talk to @botfather and create a new bot.

npm install node-telegram-bot-api
var TelegramBot = require('node-telegram-bot-api');

var token = 'YOUR_TELEGRAM_BOT_TOKEN';
// Setup polling way
var bot = new TelegramBot(token, {polling: true});
bot.on('text', function (msg) {
  var chatId = msg.chat.id;
  // photo can be: a file path, a stream or a Telegram file_id
  var photo = 'cats.png';
  bot.sendPhoto(chatId, photo, {caption: 'Lovely kittens'});
});

There are some other examples on examples.

Events

Every time TelegramBot receives a message, it emits a message. Depending on which 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.


TelegramBot

Both request method to obtain messages are implemented. To use standard polling, set polling: true on options. Notice that webHook will need a valid SSL certificate (self-signed certificates are allowed since August 29, 2015). Emits message when a message arrives.

See: https://core.telegram.org/bots/api

Params:

  • String token Bot Token
  • Object [options]
  • Boolean|Object [options.polling=false] Set true to enable polling or set options
  • String|Number [options.polling.timeout=4] Polling time
  • String|Number [options.polling.interval=2000] Interval between requests in miliseconds
  • Boolean|Object [options.webHook=false] Set true to enable WebHook or set options
  • String [options.webHook.key] PEM private key to webHook server
  • String [options.webHook.cert] PEM certificate key to webHook server

getMe()

Returns basic information about the bot in form of a User object.

See: https://core.telegram.org/bots/api#getme

Return:

  • Promise

setWebHook(url)

Specify an url to receive incoming updates via an outgoing webHook.

See: https://core.telegram.org/bots/api#setwebhook

Params:

  • String url URL where Telegram will make HTTP Post. Leave empty to delete webHook.

getUpdates([timeout], [limit], [offset])

Use this method to receive incoming updates using long polling

See: https://core.telegram.org/bots/api#getupdates

Params:

  • 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.

Return:

  • Promise Updates

sendMessage(chatId, text, [options])

Send text message.

See: https://core.telegram.org/bots/api#sendmessage

Params:

  • Number|String chatId Unique identifier for the message recipient
  • String text Text of the message to be sent
  • Object [options] Additional Telegram query options

Return:

  • Promise

forwardMessage(chatId, fromChatId, messageId)

Forward messages of any kind.

Params:

  • 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

Return:

  • Promise

sendPhoto(chatId, photo, [options])

Send photo

See: https://core.telegram.org/bots/api#sendphoto

Params:

  • 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

Return:

  • Promise

sendAudio(chatId, audio, [options])

Send audio

See: https://core.telegram.org/bots/api#sendaudio

Params:

  • 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

Return:

  • Promise

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

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

sendVideo(chatId, A, [options])

Use this method to send video files, Telegram clients support mp4 videos (other formats may be sent as Document).

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

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

sendChatAction(chatId, action)

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.

See: https://core.telegram.org/bots/api#sendchataction

Params:

  • Number|String chatId Unique identifier for the message recipient
  • String action Type of action to broadcast.

Return:

  • Promise

getUserProfilePhotos(userId, [offset], [limit])

Use this method to get a list of profile pictures for a user. Returns a 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

sendLocation(chatId, latitude, longitude, [options])

Send location. 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