diff --git a/doc/api.md b/doc/api.md
index c8b9395..d93cc25 100644
--- a/doc/api.md
+++ b/doc/api.md
@@ -35,6 +35,7 @@ TelegramBot
* [.sendDocument(chatId, doc, [options], [fileOptions])](#TelegramBot+sendDocument) ⇒ Promise
* [.sendSticker(chatId, sticker, [options], [fileOptions])](#TelegramBot+sendSticker) ⇒ Promise
* [.sendVideo(chatId, video, [options], [fileOptions])](#TelegramBot+sendVideo) ⇒ Promise
+ * [.sendAnimation(chatId, animation, [options], [fileOptions])](#TelegramBot+sendAnimation) ⇒ Promise
* [.sendVideoNote(chatId, videoNote, [options], [fileOptions])](#TelegramBot+sendVideoNote) ⇒ Promise
* [.sendVoice(chatId, voice, [options], [fileOptions])](#TelegramBot+sendVoice) ⇒ Promise
* [.sendChatAction(chatId, action, [options])](#TelegramBot+sendChatAction) ⇒ Promise
@@ -52,6 +53,7 @@ TelegramBot
* [.answerCallbackQuery(callbackQueryId, [options])](#TelegramBot+answerCallbackQuery) ⇒ Promise
* [.editMessageText(text, [options])](#TelegramBot+editMessageText) ⇒ Promise
* [.editMessageCaption(caption, [options])](#TelegramBot+editMessageCaption) ⇒ Promise
+ * [.editMessageMedia(media, [options])](#TelegramBot+editMessageMedia) ⇒ Promise
* [.editMessageReplyMarkup(replyMarkup, [options])](#TelegramBot+editMessageReplyMarkup) ⇒ Promise
* [.getUserProfilePhotos(userId, [options])](#TelegramBot+getUserProfilePhotos) ⇒ Promise
* [.sendLocation(chatId, latitude, longitude, [options])](#TelegramBot+sendLocation) ⇒ Promise
@@ -436,6 +438,25 @@ Use this method to send video files, Telegram clients support mp4 videos (other
| [options] | Object
| Additional Telegram query options |
| [fileOptions] | Object
| Optional file related meta-data |
+
+
+### telegramBot.sendAnimation(chatId, animation, [options], [fileOptions]) ⇒ Promise
+Use this method to send animation files (GIF or H.264/MPEG-4 AVC video without sound).
+
+**Kind**: instance method of [TelegramBot
](#TelegramBot)
+**See**
+
+- https://core.telegram.org/bots/api#sendanimation
+- https://github.com/yagop/node-telegram-bot-api/blob/master/doc/usage.md#sending-files
+
+
+| Param | Type | Description |
+| --- | --- | --- |
+| chatId | Number
\| String
| Unique identifier for the message recipient |
+| animation | String
\| stream.Stream
\| Buffer
| A file path, Stream or Buffer. Can also be a `file_id` previously uploaded. |
+| [options] | Object
| Additional Telegram query options |
+| [fileOptions] | Object
| Optional file related meta-data |
+
### telegramBot.sendVideoNote(chatId, videoNote, [options], [fileOptions]) ⇒ Promise
@@ -727,6 +748,26 @@ inline_message_id in your request.
| caption | String
| New caption of the message |
| [options] | Object
| Additional Telegram query options (provide either one of chat_id, message_id, or inline_message_id here) |
+
+
+### telegramBot.editMessageMedia(media, [options]) ⇒ Promise
+Use this method to edit audio, document, photo, or video messages.
+If a message is a part of a message album, then it can be edited only to a photo or a video.
+Otherwise, message type can be changed arbitrarily. When inline message is edited, new file can't be uploaded.
+Use previously uploaded file via its file_id or specify a URL.
+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 [TelegramBot
](#TelegramBot)
+**See**: https://core.telegram.org/bots/api#editmessagemedia
+
+| Param | Type | Description |
+| --- | --- | --- |
+| media | Object
| A JSON-serialized object for a new media content of the message |
+| [options] | Object
| Additional Telegram query options (provide either one of chat_id, message_id, or inline_message_id here) |
+
### telegramBot.editMessageReplyMarkup(replyMarkup, [options]) ⇒ Promise
diff --git a/src/telegram.js b/src/telegram.js
index d95a4de..88bb9f2 100644
--- a/src/telegram.js
+++ b/src/telegram.js
@@ -21,6 +21,7 @@ let Promise = require('bluebird');
const _messageTypes = [
'text',
+ 'animation',
'audio',
'channel_chat_created',
'contact',
@@ -36,6 +37,7 @@ const _messageTypes = [
'new_chat_members',
'new_chat_photo',
'new_chat_title',
+ 'passport_data',
'photo',
'pinned_message',
'sticker',
@@ -837,6 +839,32 @@ class TelegramBot extends EventEmitter {
return this._request('sendVideo', opts);
}
+ /**
+ * Use this method to send animation files (GIF or H.264/MPEG-4 AVC video without sound).
+ * @param {Number|String} chatId Unique identifier for the message recipient
+ * @param {String|stream.Stream|Buffer} animation A file path, Stream or Buffer.
+ * Can also be a `file_id` previously uploaded.
+ * @param {Object} [options] Additional Telegram query options
+ * @param {Object} [fileOptions] Optional file related meta-data
+ * @return {Promise}
+ * @see https://core.telegram.org/bots/api#sendanimation
+ * @see https://github.com/yagop/node-telegram-bot-api/blob/master/doc/usage.md#sending-files
+ */
+ sendAnimation(chatId, animation, options = {}, fileOptions = {}) {
+ const opts = {
+ qs: options
+ };
+ opts.qs.chat_id = chatId;
+ try {
+ const sendData = this._formatSendData('animation', animation, fileOptions);
+ opts.formData = sendData[0];
+ opts.qs.document = sendData[1];
+ } catch (ex) {
+ return Promise.reject(ex);
+ }
+ return this._request('sendAnimation', opts);
+ }
+
/**
* Use this method to send rounded square videos of upto 1 minute long.
* @param {Number|String} chatId Unique identifier for the message recipient
@@ -1184,6 +1212,26 @@ class TelegramBot extends EventEmitter {
return this._request('editMessageCaption', { form });
}
+ /**
+ * Use this method to edit audio, document, photo, or video messages.
+ * If a message is a part of a message album, then it can be edited only to a photo or a video.
+ * Otherwise, message type can be changed arbitrarily. When inline message is edited, new file can't be uploaded.
+ * Use previously uploaded file via its file_id or specify a URL.
+ * 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.
+ *
+ * @param {Object} media A JSON-serialized object for a new media content of the message
+ * @param {Object} [options] Additional Telegram query options (provide either one of chat_id, message_id, or inline_message_id here)
+ * @return {Promise}
+ * @see https://core.telegram.org/bots/api#editmessagemedia
+ */
+ editMessageMedia(media, form = {}) {
+ form.media = media;
+ return this._request('editMessageMedia', { form });
+ }
+
/**
* Use this method to edit only the reply markup of messages
* sent by the bot or via the bot (for inline bots).