編輯:僅測試我的覆盆子pi上的GET-Request(沒有電報API)的代碼。我不是發送tg消息,而是將它寫入文件。我發現,魔術在這部分情況:使用電報機器人發送HTTP GET請求的結果
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電報機器人API真正的新。
我想要的是一個HTTP GET請求到一個URL,它以JSON格式返回數據。我希望bot能將這個結果發送到聊天中。
我的機器人運行在openshift上,使用this guide and code sample寫入NodeJS中。爲了弄清GET請求的代碼,我使用了postman。它已經幫助我向這個URL發出POST請求。所以我使用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
?
我在這兩個真的很掙扎,所以一些幫助真的很感激!
看到我今天開發的機器人同樣的東西。這看起來相關:https://github.com/python-telegram-bot/python-telegram-bot/pull/435 – Karlo
在HTTP GET請求?我在我的機器人的每個命令都有這個錯誤,但他們仍然工作。 –