テレグラムボットには、50MBで送信するためのファイルサイズ制限があります。
大きなファイルを送信する必要があります。これを回避する方法はありますか?
私はこのプロジェクトについて知っています https://github.com/pwrtelegram/pwrtelegram が、それを機能させることができませんでした。
たぶん誰かがすでにそのような問題を解決していますか?
Telegram APIを介してファイルのアップロードを実装し、ボットを使用してfile_idで送信するオプションがあります。
Javaライブラリを使用してボットを作成します https://github.com/rubenlagus/TelegramBots
[〜#〜]更新[〜#〜]
この問題を解決するために、私はテレグラムAPIを使用しますが、大きなファイルには1.5 GBの制限があります。
私はkotlogramを好む-優れたドキュメントを備えた完璧なlib https://github.com/badoualy/kotlogram
更新2
このlibの使用方法の例:
private void uploadToServer(TelegramClient telegramClient, TLInputPeerChannel tlInputPeerChannel, Path pathToFile, 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 fileId, 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
ドキュメントに書いて作成することができます。
コピーして貼り付けないでください。必要に応じて書き換えてください。