Загрузить и отправить строку в виде файла через бот Telegram - PullRequest
1 голос
/ 17 мая 2019

У меня есть строка, которую я хочу отправить через бота телеграммы, но не в виде сообщения (оно довольно длинное), а в виде файла.Однако у меня есть некоторые проблемы при создании и загрузке этого файла в Telegram (поскольку мне нужно опубликовать файл, используя multipart / form-data, как указано в документации API https://core.telegram.org/bots/api#sending-files)., вдохновленный 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<token>/sendDocument 400 (Bad Request) Я никогда не использовал XMLHttpRequest, поэтому я, вероятно, перебираю его использование, но не могу найти никакого решения. Альтернативы (возможно, с использованием простогоjs) добро пожаловать.

1 Ответ

1 голос
/ 20 мая 2019

Ваше имя переменной неверно.Вы назвали данные формы как formData, а затем, когда отправили запрос, вы назвали его FormData.

Скопируйте и вставьте этот код, он должен работать.Я проверил это, и это делает.Обязательно замените chat_id и токен действительными, иначе он не будет работать.

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...