【问题标题】:Upload and send string as file via telegram bot通过电报机器人上传和发送字符串作为文件
【发布时间】:2019-10-04 19:34:04
【问题描述】:

我有一个字符串,我想通过电报机器人发送,但不是作为消息(它相当长),而是作为文件。 但是,我在创建此文件并将其上传到 Telegram 时遇到了一些问题(因为我需要使用 API 文档 https://core.telegram.org/bots/api#sending-files 中指定的 multipart/form-data 发布文件)。 受到https://stackoverflow.com/a/22858914/4869973 的启发,我尝试了以下方法:

var file = new Blob([enc_data], {type: 'text/plain'});
var formData = new FormData();
formData.append('chat_id', '<id>');
formData.append('document', file);

var request = new XMLHttpRequest();
request.open('POST', 'https://api.telegram.org/bot<token>/sendDocument');
request.send(FormData);

但我只收到一般错误POST https://api.telegram.org/bot&lt;token&gt;/sendDocument 400 (Bad Request) 我从未使用过 XMLHttpRequest,所以我可能弄乱了它的用法,但我找不到任何解决方案。 欢迎使用替代方案(可能使用纯 js)。

【问题讨论】:

    标签: javascript post telegram telegram-bot


    【解决方案1】:

    您的变量命名错误。您将表单数据命名为 formData,然后在发送请求时将其命名为 FormData

    复制并粘贴此代码,它应该可以工作。我测试了它,它确实如此。确保将 chat_id 和 token 替换为有效的,否则它将不起作用。

    var chat_id = 3934859345; // replace with yours
    var enc_data = "This is my default text";
    var token = "45390534dfsdlkjfshldfjsh28453945sdnfnsldfj427956345"; // from botfather
    
    var blob = new Blob([enc_data], { type: 'plain/text' });
    
    var formData = new FormData();
    formData.append('chat_id', chat_id);
    formData.append('document', blob, 'document.txt');
    
    var request = new XMLHttpRequest();
    request.open('POST', `https://api.telegram.org/bot${token}/sendDocument`);
    request.send(formData);
    

    【讨论】:

    • 工作就像一个魅力,不敢相信这是一个如此微不足道的错误!
    猜你喜欢
    • 1970-01-01
    • 2017-06-16
    • 2016-10-22
    • 1970-01-01
    • 2022-01-15
    • 2020-03-10
    • 2019-06-02
    • 2016-05-03
    • 1970-01-01
    相关资源
    最近更新 更多