telegram怎么发文件
telegram bot有50MB的文件大小限定。
我需要发送大文件。有措施解决这个问题吗?
我知道这个项目,但我做不到。
大概有人已经解决了这样的问题?
有一个选项可以通过Telegram API实现文件上传,然后使用bot通过文件ID发送。
我用java编写了一个bot,使用库 https://github.com/pwrtelegram/pwrtelegram
更新
为理解决这个问题,我使用了telegram api,它对大文件的限定是1.5gb。
我更嘻歡kotlogram-完美的lib,有好的文档 https://github.com/rubenlagus/TelegramBots
更新2
我怎样使用此库的示例:
private void uploadToServer(TelegramClient telegramClient, TLInputPeerChannel tlInputPeerChannel, Path pathToF!ile, int partSize) { File file = pathToFile.toFile(); long fileId = getRandomId(); int totalParts = Math.toIntExact(file.length() / partSize + 1); int filePart = 0; int offset = filePart * partSize; try (InputStream is = new FileInputStream(file)) { byte[] buffer = new byte[partSize]; int read; while ((read = is.read(buffer, offset, partSize)) != -1) { TLBytes bytes = new TLBytes(buffer, 0, read); TLBool tlBool = telegramClient.uploadSaveBigFilePart(fileId, filePart, totalParts, bytes); telegramClient.clearSentMessageList(); filePart++; } } catch (Exception e) { log.error("Error uploading file to server", e); } finally { telegramClient.close(); } sendToChannel(telegramClient, tlInputPeerChannel, "FILE_NAME.zip", fileId, totalParts) } private void sendToChannel(TelegramClient telegramClient, TLInputPeerChannel tlInputPeerChannel, String name, long f!ileId, int totalParts) { try { String mimeType = name.substring(name.indexOf(".") + 1); TLVector<TLAbsDocumentAttribute> attributes = new TLVector<>(); attributes.add(new TLDocumentAttributeFilename(name)); TLInputFileBig inputFileBig = new TLInputFileBig(fileId, totalParts, name); TLInputMediaUploadedDocument document = new TLInputMediaUploadedDocument(inputFileBig, mimeType, attributes, "", null); TLAbsUpdates tlAbsUpdates = telegramClient.messagesSendMedia(false, false, false, tlInputPeerChannel, null, document, getRandomId(), null); } catch (Exception e) { log.error("Error sending file by id into channel", e); } finally { telegramClient.close(); } }
在
TelegramClient telegramClient
和
TLInputPeerChannel tlInputPeerChannel
中,可以创建为写入文档。
不要复制粘贴,根据需要重写。
假如你想通过电报机器人发送文件,你有 three options :
inputstream(照片限定为10 MB,其他文件限定为50 MB)
从http url(telegram将下载并发送文件。照片最大大小为5 MB,其他种类的内容最大大小为20 MB。)
按文件ID发送缓存文件。(以这种方法发送的文件没有限定)
因此,我提议您预先存储文件ID,并通过这些ID发送文件(这也是 api docs 提议的)。
如今可用!
https://core.telegram.org/bots/api#getfile
万岁!它于9月18日添加:
https://core.telegram.org/bots/api
用法:
在消息的JSON中,您将像从前一样收到
file_id
。带有语音文件的消息对象的示例:
{ message_id: 2675, from: { id: 10000001, first_name: 'john', username: 'john' }, chat: { id: 10000001, first_name: 'john', username: 'john' }, date: 1442848171, voice: { duration: 2, mime_type: 'audio/ogg', file_id: 'AwADBAADYwADO1wlBuF1ogMa7HnMAg', // <------- file_id file_size: 17746 } }
如今,通过API的getFile,您可以获取文件所需的路径信息:
https://api.telegram.org/bot<bot_token>/getFile?file_id=the_file_id
这将返回具有
file_id
,
file_size
和
file_path
。然后,您可以使用
file_path
下载文件:
https://api.telegram.org/file/bot<token>/<file_path>
请留意,此链接只能使用一个小时。一个小时后,您可以请求另一个链接。这意味着,假如您想以某种方法托管文件,而甘心制止每次提供文件时都检察!并重新检察是否有奇怪链接,那么最好将文件下载到自己的托管服务中。
通过此方法得到的文件的最大大小为
20MB。
错误:使用大于20mb的文件时得到。(如下所示)
{"ok":false,"error_code":400,"description":"Bad Request: file is too big[size:1556925644]"}
从电报的文档:
成功后,将返回一个File对象。然后可以通过链接 https://api.telegram.org/file/bot /下载文件,该文件取自相应。可以确保链接至少有用1小时。链接逾期后,可以通过再次调用getFile来请求一个新的链接。现在,漫游器可以下载最大20MB的文件。
Telegram bot API只能通过
url
param发送小于20 MB的文件,您应该查找 Sending Files 部分。
假如要发送20-50 MB文件,则应下载并重新上传到Telegram bot API服务器 你可以参考这个简单的代码
$curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => 'https://api.telegram.org/bot131210513:AXXXXXX/sendDocument?caption=Hello+World&chat_id=24523586', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: multipart/form-data' ], CURLOPT_POST => true, CURLOPT_POSTFIELDS => [ 'document' => curl_file_create('/etc/hosts', 'plain/text', 'Hosts-file.txt') ] ]); $data = curl_exec($curl); curl_close($curl);
您可以在服务器上安装 pwrtelegram 。然后只需切换API URL,您就可以使用机器人上传最多1.5 GB的文件。这是唯一可行的方法。察看链接以获取更多信息。
别的,
无法
通报任何随机
file_id
,由于Telegram不会发送它。您只能传入之前由您的机器人上传的file_id。要绕过限定,请使用上面的方法。它运作得很好。
首先,您应该将文件发送到机器人,然后获取文件ID。
之后你可以使用fileID来发送你的文件,这样负载将在Telegram的服务器上,而不是你的。固然,您可以从自己的服务器发送文件,但这种方法会降低机器人的速率。
请留意,当您向bot发送文件并获取fileID时,从那一刻起,文件可以立刻发送,而无需将文件存储在您自己的服务器上。
您不需要制作文件ID。
您只需要将文件发送到僵尸程序并让机器人找到答案 !fileID并将其保存在某处以备未来转移。
本文网址:
http://www.1cm8858.com/d/2020612122616_3071_3044330177/home
Ten articles before and after
微博5.38亿条用户数据暗网出售被爆超5亿在-电报telegram技巧分享
挖洞经验Telegram修复撤回照片和视频失灵的漏洞-电报telegram技巧分享
telegram使用技巧汇总中语音-电报telegram技巧分享
如何加入你喜欢的telegram电报群组?资源-电报telegram技巧分享
??貓貓聯盟◾️▫️寵物群电报新群推送TelegramGroupLinks-电报telegram技巧分享
telegram群组资源https:/t.mehomenet6家庭网络资源共享群集体维护的IPTV订阅源(备)同步githubio-电报telegram技巧分享
敢叫板普京的男人家庭网络部署心得-电报telegram技巧分享
晚上耳朵听到发电报声为什么偶经常半夜滴滴答答的时钟声音和?-电报telegram技巧分享