TelegramClient
Usage
Get the TelegramClient
instance using the getClient
function:
const { getClient } = require('bottender');
const client = getClient('telegram');
// `client` is a `TelegramClient` instance
const webhookInfo = await client.getWebhookInfo();
Or, get the TelegramClient
instance from the context
:
async function MyAction(context) {
if (context.platform === 'telegram') {
// `context.client` is a `TelegramClient` instance
const webhookInfo = await context.client.getWebhookInfo();
}
}
Error Handling
TelegramClient
uses axios as HTTP client. We use axios-error package to wrap API error instances for better formatting error messages. Calling console.log
with the error instance returns the 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); // the formatted error message
console.log(error.stack); // stack trace of the error
console.log(error.config); // axios request config
console.log(error.request); // axios HTTP request
console.log(error.response); // axios HTTP response
});
Methods
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/',
// hasCustomCertificate: false,
// pendingUpdateCount: 0,
// maxConnections: 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);
/*
[
{
updateId: 513400512,
message: {
messageId: 3,
from: {
id: 313534466,
firstName: 'first',
lastName: 'last',
username: 'username',
},
chat: {
id: 313534466,
firstName: 'first',
lastName: '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', {
disableWebPagePreview: true,
disableNotification: 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',
disableNotification: 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',
disableNotification: 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',
disableNotification: 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', {
disableNotification: 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',
disableNotification: 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',
disableNotification: 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,
disableNotification: 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,
},
{
disableNotification: 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',
},
{
disableNotification: 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.phoneNumber | String | Phone number of the contact. |
contact.firstName | String | First name of the contact. |
options | Object | Other optional parameters. |
Example:
client.sendContact(
CHAT_ID,
{
phoneNumber: '886123456789',
firstName: 'first',
},
{ lastName: '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,
// firstName: '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);
// {
// totalCount: 3,
// photos: [
// [
// {
// fileId:
// 'AgADBAADGTo4Gz8cZAeR-ouu4XBx78EeqRkABHahi76pN-aO0UoDA050',
// fileSize: 14650,
// width: 160,
// height: 160,
// },
// {
// fileId:
// 'AgADBAADGTo4Gz8cZAeR-ouu4XBx78EeqRkABKCfooqTgFUX0EoD5B1C',
// fileSize: 39019,
// width: 320,
// height: 320,
// },
// {
// fileId:
// 'AgADBAADGTo4Gz8cZAeR-ouu4XBx78EeqRkABPL_pC9K3UpI0koD1B1C',
// fileSize: 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);
// {
// fileId: 'UtAqweADGTo4Gz8cZAeR-ouu4XBx78EeqRkABPL_pM4A1UpI0koD65K2',
// fileSize: 106356,
// filePath: '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,
// firstName: 'first',
// lastName: '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,
// firstName: 'first',
// lastName: 'last',
// username: 'username',
// languangeCode: '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,
// firstName: 'first',
// lastName: 'last',
// username: 'username',
// languangeCode: '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 chatId , messageId or inlineMessageId is required. |
options.chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
options.messageId | Number | Identifier of the sent message. |
options.inlineMessageId | String | Identifier of the inline message. |
Example:
client.editMessageText('new_text', { messageId: 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 chatId , messageId or inlineMessageId is required. |
options.chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
options.messageId | Number | Identifier of the sent message. |
options.inlineMessageId | String | Identifier of the inline message. |
Example:
client.editMessageCaption('new_caption', { messageId: 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 chatId , messageId or inlineMessageId is required. |
options.chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
options.messageId | Number | Identifier of the sent message. |
options.inlineMessageId | String | Identifier of the inline message. |
Example:
client.editMessageReplyMarkup(
{
keyboard: [[{ text: 'new_button_1' }, { text: 'new_button_2' }]],
resizeKeyboard: true,
oneTimeKeyboard: true,
},
{ messageId: 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 chatId , messageId or inlineMessageId is required. |
options.chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
options.messageId | Number | Identifier of the sent message. |
options.inlineMessageId | String | Identifier of the inline message. |
Example:
client.editMessageLiveLocation(
{
latitude: 30,
longitude: 45,
},
{
messageId: 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 chatId , messageId or inlineMessageId is required. |
identifier.chatId | Number | String | Unique identifier for the target chat or username of the target channel. |
identifier.messageId | Number | Identifier of the sent message. |
identifier.inlineMessageId | String | Identifier of the inline message. |
Example:
client.stopMessageLiveLocation({ messageId: 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, { untilDate: 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, { canSendMessages: 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, {
canChangeInfo: true,
canInviteUsers: 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, { disableNotification: 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.providerToken | String | Payments provider token. |
product.startParameter | 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',
providerToken: 'PROVIDER_TOKEN',
startParameter: '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',
photoFileId: 'FILE_ID',
title: 'PHOTO_TITLE',
},
{
type: 'audio',
id: 'UNIQUE_ID',
audioFileId: 'FILE_ID',
caption: 'AUDIO_TITLE',
},
],
{
cacheTime: 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.', {
disableNotification: 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,
// isBot: false,
// firstName: '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 fromChatId. |
options | Object | Other optional parameters. |
Example:
client.forwardMessage(CHAT_ID, USER_ID, MESSAGE_ID, {
disableNotification: true,
});
Debug Tips
Log Requests Details
To enable default request debugger, use following DEBUG
env variable:
DEBUG=messaging-api-telegram
Test
Send Requests to Your Dummy Server
To avoid sending requests to the real Telegram server, provide the origin
option in your bottender.js.config
file:
module.exports = {
channels: {
telegram: {
enabled: true,
path: '/webhooks/telegram',
accessToken: process.env.TELEGRAM_ACCESS_TOKEN,
origin:
process.env.NODE_ENV === 'test'
? 'https://mydummytestserver.com'
: undefined,
},
},
};
Warning: Don't do this on the production server.