我想将一个.txt
文件上传到我的JavaScript机器人进行电报。
我已经在php和python中看到了一些示例,但听不懂,所以我只需要一个js示例来查找。
我应该先上传文件然后上传sendDocmuent
,还是应该在sendDocmuent
中输入?
我尝试将sendDocument
与document: 'file.txt'
一起使用,但是没有用。
还阅读了有关表单数据的信息,但一无所获!
call("sendDocument",{
chat_id: owner,
document: 'file.txt' // or /file.txt or full address (C:...)
});
我没有使用任何库,这是我的调用函数:
const botUrl = "https://api.telegram.org/bot" + token + "/";
const request = require('request');
function call(method, params, onResponse)
{
var requestData = params;
var data = {
url: botUrl+method,
json: true,
body: requestData
};
request.post(data, function(error, httpResponse, body){
if (onResponse) {
if(body)
{
onResponse(body.result);
}
}
});
}
答案 0 :(得分:0)
已编辑:这是对我有用的代码。
Telegram API似乎永远不需要sendDocument方法的文件名:
要发送的文件。传递file_id作为字符串以发送电报服务器上存在的文件(推荐),传递HTTP URL作为字符串以使电报从互联网获取文件,或使用多部分/表单数据
您不仅需要发送字符串'file.txt'
,还需要像猜测的那样,将文件的内容实际发送为multipart / form-data。以this answer为基础,您只需要修改form
对象的request
字段:
const request = require('request')
const fs = require('fs')
const token = '752511654:AAGnu88dyi7YsmpZfcaA6XvR26Fy7f2moGo'
const url = 'https://api.telegram.org/bot'+token+'/sendDocument'
const chat_id = "741718736"
let r = request(url, (err, res, body) => {
if(err) console.log(err)
console.log(body)
})
let f = r.form()
f.append('chat_id', chat_id)
f.append('document', fs.createReadStream('file.txt'))