node-telegram-bot-api: 400 Bad Request: wrong file identifier/HTTP URL specified
I am using the latest version of the library.
Expected Behavior
This has to handle http://dl.nex1music.ir/1396/07/03/Mohsen%20Salehi%20-%20Bigharari.mp3
URL, but gives an error. The given URL works out of the library properly.
Actual Behavior
2017-09-25T17:35:53.528481+00:00 app[web.1]: Unhandled rejection Error: ETELEGRAM: 400 Bad Request: wrong file identifier/HTTP URL specified 2017-09-25T17:35:53.528493+00:00 app[web.1]: at BaseError (/app/node_modules/node-telegram-bot-api/src/errors.js:10:5) 2017-09-25T17:35:53.528495+00:00 app[web.1]: at TelegramError (/app/node_modules/node-telegram-bot-api/src/errors.js:56:5) 2017-09-25T17:35:53.528496+00:00 app[web.1]: at request.then.err (/app/node_modules/node-telegram-bot-api/src/telegram.js:213:15) 2017-09-25T17:35:53.528496+00:00 app[web.1]: at tryCatcher (/app/node_modules/bluebird/js/release/util.js:16:23) 2017-09-25T17:35:53.528497+00:00 app[web.1]: at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:512:31) 2017-09-25T17:35:53.528497+00:00 app[web.1]: at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:569:18) 2017-09-25T17:35:53.528498+00:00 app[web.1]: at Promise._settlePromise0 (/app/node_modules/bluebird/js/release/promise.js:614:10) 2017-09-25T17:35:53.528498+00:00 app[web.1]: at Promise._settlePromises (/app/node_modules/bluebird/js/release/promise.js:693:18) 2017-09-25T17:35:53.528499+00:00 app[web.1]: at Async._drainQueue (/app/node_modules/bluebird/js/release/async.js:133:16) 2017-09-25T17:35:53.528500+00:00 app[web.1]: at Async._drainQueues (/app/node_modules/bluebird/js/release/async.js:143:10) 2017-09-25T17:35:53.528500+00:00 app[web.1]: at Immediate.Async.drainQueues (/app/node_modules/bluebird/js/release/async.js:17:14) 2017-09-25T17:35:53.528501+00:00 app[web.1]: at runCallback (timers.js:672:20) 2017-09-25T17:35:53.528501+00:00 app[web.1]: at tryOnImmediate (timers.js:645:5) 2017-09-25T17:35:53.528502+00:00 app[web.1]: at processImmediate [as _immediateCallback] (timers.js:617:5)
Steps to reproduce the Behavior
bot.onText(/^\/320$/, (msg, match) => {
bot.sendChatAction(msg.chat.id,'upload_audio');
bot.sendAudio(msg.chat.id, 'http://dl.nex1music.ir/1396/07/03/Mohsen%20Salehi%20-%20Bigharari.mp3');
});
About this issue
- Original URL
- State: open
- Created 7 years ago
- Reactions: 23
- Comments: 28 (1 by maintainers)
+1 still no solution ?
Have the problem with sendAudio with URL string. So what is the solution ?
EDIT : I added ?random=64 and it worked.
I’ve found out adding at the end of URL the query string:
?0
is enough to make it work 🤔Same here! 50 similar photos works fine. I have problem only with this one
https://s8.hostingkartinok.com/uploads/images/2018/08/d895b2471743055da86415f4af06b010.jpg
Same (i think) here, but with sendMessage method. I fixed when changed the URL from “http://host:port/etc…” to “http://host.some.thing:port/etc…”.
Ps: host is hosted on a server only visible inside intranet.
with sendPhoto, and the URL works fine, and the photo starts with a letter.
https://trello-attachments.s3.amazonaws.com/5666779e6c24bb815183689c/597f79754996f872478fb5c8/600x264/79a80ac19fe1a4390cba895c920944f2/S61028-20071611.jpg
Worked! OMG!
Just to add an info: it is in fact a problem of the telegram API, not the node-telegram-bot-api. I tried bypassing the SDK and making the request directly with a HTTP request and it failed with the same images I tried before.
But I noticed 2 different errors from 2 different images:
I solved this problem when using the
sendPhoto
method using a buffer and passing this buffer as a parameter. But it doesn’t work with “editMessageMedia” since it only accepts a string for the media.In my case I had a big difference, which I discovered after trying what you suggested.
this link does not generate error: https://ipfs.io/ipfs/QmUDTs1yCKM3XFHTEPABJb9b23VN77mbmoszRgbsQFQyYM/947.png this link does generate error: ipfs://QmT6kas8VTpkMZtT6EU2FJBejwnJTzVsMvxixSAMNWKitE/5293.png
placing ‘?0’ at the end of the second link, it works 🤣
You’re right, I changed the file size and it the
sendPhoto
method worked, thanksI had solved this problem. And I answred here: https://stackoverflow.com/a/62672868/12866353
Hope this will help.