2017-01-21 12 views
2

Я использую эту функцию для отправки фотографии через node.js, но это не работает. телеграммы-боты-апи https://www.npmjs.com/package/telegram-bot-apiTelegram Bot sendPhoto via node.js

var telegram = require('telegram-bot-api'); 

var api = new telegram({ 
    token: '<PUT YOUR TOKEN HERE>', 
}); 

api.sendPhoto({ 
    chat_id: <YOUR CHAT ID>, 
    caption: 'This is my test image', 

    // you can also send file_id here as string (as described in telegram bot api documentation) 
    photo: '/path/to/file/test.jpg' 
}) 
.then(function(data) 
{ 
    console.log(util.inspect(data, false, null)); 
}); 

но я эта ошибка

fn = function() { throw arg; }; 
         ^
StatusCodeError: 403 - [object Object] 
+1

Используете ли вы какой-либо пакет узлов для реализации телеграммы бота api? Если вы не используете пакеты узлов телеграмм бота, функция sendPhoto должна включать в себя параметры, такие как идентификатор конечного пользователя, а также URL-адрес фотографии, например sendPhoto (userId, photo_url). – Sravan

+0

Я использую telegram-bot-api moudules , но я имеют эту ошибку \t fn = function() {throw arg; }; ^ StatusCodeError: 403 - [object Object] –

ответ

3

я понял, проблема. Похоже, вы используете идентификатор чата вашего собственного бота, чтобы отправить недопустимую фотографию. Таким образом, вы получаете 403 запрещенную ошибку (см. telegram bot errors api)

Чтобы использовать функцию sendPhoto, вам нужно будет использовать идентификатор чата пользователя, а не пользователя вашего бота. Я сделал несколько изменений в вашем коде, чтобы дать вам понять. Этот код получит идентификатор чата пользователя от переменной message.chatid. Просто замените ваш токен в этом коде и укажите свой URL-адрес изображения и попробуйте его.

PS: Отправить сообщение этому боту и оно отправит вам фотографию в ответе.

var telegram = require('telegram-bot-api'); 

var api = new telegram({ 
    token: 'Your BOT token', 
    updates: { 
       enabled: true, 
       get_interval: 1000 
      } 
}); 
api.on('message', function(message) 
{ 
    var chat_id = message.chat.id; 
     console.log("This is the user's chat id"+chat_id); 

api.sendPhoto({ 
    chat_id : message.chat.id, 
    caption: 'This is my test image', 
    photo: 'image.jpeg'//replace your image url here 
}) 
.then(function(data) 
{ 
    console.log(data); 
}); 
}); 
+0

, дайте мне знать, если это вам помогло @Sedric Heidarizarei – Sravan

+0

Великий .... Это правда. –

+0

Рад, что это поможет вам @ sedric-heidarizarei – Sravan

1

, как описано в телеграмме боте api documentation вы можете отправить файл с двумя различными способами:

1- отправка изображения по изображению URL:
, так что вы должны установить параметр фото к URL изображения, что-то вроде ниже

api.sendPhoto({ 
 
    chat_id: <YOUR CHAT ID>, 
 
    caption: 'image sent by uploading from url', 
 

 
    // first you upload image on a url and send url as a parameter 
 
    photo: 'https://whatbook.org/wp-content/uploads/2015/06/Download-Telegram-App-For-PC-Laptop-Windows-XP-7-8-MAC-OS.png' 
 
}) 
 
.then(function(data) 
 
{ 
 
    console.log(util.inspect(data, false, null)); 
 
});

2- представляемого изображения по file_id

каждый файл, загрузить в телеграмм сервере иметь идентификатор что вы можете использовать этот идентификатор, чтобы избежать повторной загрузки изображения на сервер телеграмм, поэтому в api вы должны передать файл file_id файла изображения, например:

api.sendPhoto({ 
 
     chat_id: <YOUR CHAT ID>, 
 
     caption: 'the image sent by file_id', 
 

 
     // it is a file_id that you get when someone upload an image to 
 
     photo: 'AgADBAADZbo1G14XZAfdtXnWB5anFpRbYRkABMRWzQmdc4EQbPcCAAEC' 
 
    }) 
 
    .then(function(data) 
 
    { 
 
     console.log(util.inspect(data, false, null)); 
 
    });

+0

, пожалуйста, прочитайте документацию на telegram.org –

+0

, почему мне нужен идентификатор чата? я хочу отправить фотографию своему боту, когда shomeone Нажата на кнопку '/ start' –

+0

спасибо, я нахожу мой тент выше –