我已经尝试过这个console.log(photo.file_path);但是我得到了file_path
var picture = (context)ctx.message.photo[0].file_id;
var photo = `https://api.telegram.org/bot1234-ABCD/getFile?file_id=${picture}`;
console.log(photo.file_path);
答案 0 :(得分:0)
npm插入针
`var needle = require('needle');
needle.get(https://api.telegram.org/bot1234:ABCD/getFile?file_id=${picture}
,function(error,response){
如果(!error && response.statusCode == 200)
console.log(response.body.resuolt);
});`
答案 1 :(得分:0)
您可以使用axios存储图像。假设文件ID为fileId
,上下文为ctx
。我将图像存储在路径${config.basePath}/public/images/profiles/${ctx.update.message.from.id}.jpg
ctx.telegram.getFileLink(fileId).then(url => {
axios({url, responseType: 'stream'}).then(response => {
return new Promise((resolve, reject) => {
response.data.pipe(fs.createWriteStream(`${config.basePath}/public/images/profiles/${ctx.update.message.from.id}.jpg`))
.on('finish', () => /* File is saved. */)
.on('error', e => /* An error has occured */)
});
})
})
如何获取为机器人发送的图像的文件ID
bot.on('message', ctx => {
const files = ctx.update.message.photo;
// telegram stores the photos for different sizes
// here is a sample files result
// [ { file_id:
// 'AgADBAADgbAxG768CFDXChKUnJnzU5jjLBsABAEAAwIAA20AA_PFBwABFgQ',
// file_size: 29997,
// width: 320,
// height: 297 },
// { file_id:
// 'AgADBAADgbAxG768CFDXChKUnJnzU5jjLBsABAEAAwIAA3gAA_HFBwABFgQ',
// file_size: 80278,
// width: 580,
// height: 538 } ]
// })
// I am getting the bigger image
fileId = files[1].file_id
// Proceed downloading
});
不要忘记将axios安装为npm install axios --save
,并要求将其安装为const axios = require('axios')
N.B。不要公开发布文件链接,因为它会暴露您的机器人令牌。