2016-11-07 5 views
1

EDIT: тестирование только кода для GET-запроса (без телеграммы api) на моей малиновой пи. Вместо отправки сообщения tg я пишу его в файл. Я обнаружил, что волшебство происходит в этой части:отправить результат по запросу HTTP GET с телеграммой bot

req.end(function (res) { 
    if (res.error) throw new Error(res.error); 

    console.log(res.body); 
    }); 

console.log(res.body) дает мне этот выход (которые являются правильными именами таблиц/столбцов):

{ test: 
    { columns: [ 'eventID', 'event_desc' ], 
    records: 
     [ [Object], 
     [Object], 
     [Object], 
     [Object], 
     [Object], 
     [Object], 
     [Object], 
     [Object], 
     [Object], 
     [Object], 
     [Object], 
     [Object], 
     [Object], 
     [Object] ] } } 

Но если заменить его fs.appendFile("getrequest.log",res.body + "\n"); я только получаю:

[object Object] 

Любая идея, почему результат меняется, когда я использую другую функцию?


Оригинальный вопрос:

Я действительно новый, чтобы nodejs и телеграмма бот апи.

Я пытаюсь сделать HTTP-запрос GET URL-адресу, который возвращает данные в формате JSON. Мне бы хотелось, чтобы бот отправил этот результат в чат.

Мой бот работает в спусках и записывается в NodeJS, используя this guide and code sample. Чтобы выяснить код для запроса GET, я использовал postman. Это уже помогло мне сделать запрос POST на этот URL. Поэтому я использую unirest и этот код:

bot.onText(/\/list (.+)/, function (msg, match) { 

    var fromId = msg.chat.id; 
    var eventDb = match[1]; 
    var eventURL = "https://api.italianrockmafia.ch/api.php/"; 
    eventURL += eventDb; 
    var unirest = require("unirest"); 

    var req = unirest("GET", eventURL); 

    req.headers({ 
    "cache-control": "no-cache" 
    }); 

    req.end(function (res) { 
    if (res.error) throw new Error(res.error); 

    console.log(res.body); 
    }); 
    bot.sendMessage(fromId, req); 
}); 

Так что я не уверен, какое значение я должен использовать в bot.sendMessage(); и где я должен использовать эту функцию. Я пробовал несколько комбинаций (с req, res, res.body) Но никто из них не работал.

Если я использую код, как указано выше, журнал говорит message ist empty. Когда я изменяю последние строки в:

req.end(function (res) { 
    bot.sendMessage(fromId, res); 
    if (res.error) throw new Error(res.error); 

    console.log(res.body); 
}); 

журнал только подбрасывает «Неправильный файл идентификатор/HTTP URL, указанный» в файле модуль Телеграммы это сам. Это сообщение появляется с каждой командой (даже с теми, которые работают).

Так мои 2 вопроса:

  • Какое значение мне нужно отправить?
  • Где в коде необходимо указать bot.sendMessage?

Я боюсь действительно на этих двух, поэтому некоторая помощь действительно оценена!

+0

Видя то же самое с ботом, который я разработал сегодня. Это выглядит так: https://github.com/python-telegram-bot/python-telegram-bot/pull/435 – Karlo

+0

По запросу HTTP GET? У меня есть эта ошибка при каждой команде моего бота, но они все еще работают. –

ответ

0

Я думаю, что это что-то делать с inputfile ограничениями

Предоставлять Телеграмма с HTTP URL для файла, подлежащего отправке. Telegram загрузит и отправит файл.5 МБ максимальный размер для фотографий и 20 МБ макс для других типов контента.

+0

Спасибо за ваш ответ! Я не уверен, правильно ли я прав, но в моем примере я не пытаюсь отправить файл. Я хочу отправить тело страницы, на которую я отправил HTTP-запрос. (REST API). Также. почтальон говорит, что ответ только 976 байтов большой ... –