package Ġcom . github . iper gen its a . bot . file utils Ċ Ċ import Ġcom . github . iper gen its a . bot . compression . Compression Ċ import Ġorg . apache . commons . io . FileUtils Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġorg . telegram . telegram bots . bots . Telegram Long Polling Bot Ċ import Ġorg . telegram . telegram bots . meta . api . methods . Get File Ċ import Ġorg . telegram . telegram bots . meta . api . methods . send . Send Document Ċ import Ġorg . telegram . telegram bots . meta . api . objects . Document Ċ import Ġorg . telegram . telegram bots . meta . api . objects . Input File Ċ import Ġorg . telegram . telegram bots . meta . api . objects . Update Ċ import Ġorg . telegram . telegram bots . meta . exceptions . Telegram ApiException Ċ import Ġjava . io . File Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Path Ċ import Ġkotlin . io . path . create Directory Ċ import Ġkotlin . io . path . not Exists ĊĊ Ċ @ Component Ċ class ĠFile Compression Bot ( ĊĠĠĠ Ġprivate Ġval Ġbot Security Config : ĠBot Security Config , ĊĠĠĠ Ġprivate Ġval Ġzip Compression : ĠCompression Ċ ) Ġ: ĠTelegram Long Polling Bot () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Bot Username (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" compression Ġbot " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Bot Token (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbot Security Config . token ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonUpdate Received ( update : ĠUpdate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġupdate . take If Ġ{ Ġit . has Message () Ġ} ?. message ĊĠĠĠĠĠĠĠ Ġlog . info (" Handling Ġmsg : Ġ{}", Ġmessage ?. message Id ) ĊĠĠĠĠĠĠĠ Ġmessage ?. take If Ġ{ Ġit . has Document () Ġ} ?. document ?. let Ġ{ Ġdocument Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= Ġdocument . fileName ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdownloaded File Ġ= Ġdownload Document ( document ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp File Ġ= Ġfiles Tmp Dir (). resolve ("$ fileName . zip "). to File () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzip Compression . zip Files To ( downloaded File , ĠfileName , Ġtmp File ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠSend Document (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchat Id Ġ= Ġmessage . chat Id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . document Ġ= ĠInput File ( tmp File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcaption Ġ= Ġ" Your Ġfile Ġis Ġcompressed " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecute ( response ) Ġ// ĠCall Ġmethod Ġto Ġsend Ġthe Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠTelegram ApiException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" error Ġsending Ġthe Ġresponse Ġto Ġthe Ġuser ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfiles Tmp Dir (): ĠPath Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdir Ġ= ĠPath . of (" telegram - bot ") ĊĠĠĠĠĠĠĠ Ġif Ġ( dir . not Exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdir . create Directory () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdir ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdownload Document ( document : ĠDocument ): ĠFile ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠgetFile Request Ġ= ĠGet File ( document . file Id ) ĊĠĠĠĠĠĠĠ Ġval Ġtele gram File Ġ= Ġexecute ( getFile Request ) ĊĠĠĠĠĠĠĠ Ġval Ġinput File AsStream Ġ= Ġdownload File AsStream ( telegram File ) ĊĠĠĠĠĠĠĠ Ġval Ġdestination Ġ= Ġfiles Tmp Dir (). resolve (" input "). resolve (" tmp ${ document . file Id } "). to File () ĊĠĠĠĠĠĠĠ ĠFileUtils . copy InputStream ToFile ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput File AsStream , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestination ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdestination ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog : ĠLogger Ġ= ĠLoggerFactory . getLogger ( File Compression Bot :: class . java ) ĊĠĠĠ Ġ} Ċ }