编辑:仅测试我的覆盆子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请求?我在我的机器人的每个命令都有这个错误,但他们仍然工作。 –