簡體   English   中英

使用電報Bot上傳文件-NodeJS

[英]Upload files with telegram bot - NodeJS

我想將.txt文件上傳到使用我的JavaScript機器人電報。 我已經在php和python中看到了一些示例,但聽不懂,所以我只需要一個js示例即可找出答案。

我應該先上傳文件然后再sendDocmuent還是應該在sendDocmuent輸入?

我嘗試了sendDocumentdocument: '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);
            }
        }
});

}

電報機器人API

編輯:這是對我有用的代碼。

看來Telegram API從來不需要sendDocument方法的文件名:

文件發送。 傳遞file_id作為String來發送電報服務器上存在的文件(推薦),傳遞HTTP URL作為Telegram的字符串來從Internet獲取文件,或者使用multipart / form-data上載新文件

正如您所猜測的那樣,您不僅需要發送字符串'file.txt' ,還需要實際發送文件的內容(作為多部分/表單數據)。 基於此答案 ,您只需要修改request對象的form字段:

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'))    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM