Skip to content

Releases: EDM115/unzip-bot

Version 7.0.0a [alpha]

16 Nov 17:30
1c850df
Compare
Choose a tag to compare
Pre-release

Important

Naming scheme moving forward
Pre-releases of v7 will be in alpha at first (7.0.0a, 7.0.1a, ...)
They will then move to beta (ready for test) : 7.0.0b, 7.0.1b, ...
Finally, a release candidate might or might not be created (if so, will be called 7-RC, 7-RC1, ...)
And only then a production ready build will get a full name (7.0.0)

Caution

This release is created in the sole purpose to warn stargazers/forks owners of the future changes, to raise awareness about the breaking things and to have a "working" version before the massive switch

BREAKING CHANGES

  • Uses an .env file for retrieving values
  • Switch to unzip-bot as the only way to describe the project. Also the module name is now unzipbot
  • Stores thumbnails as Telegram files instead of telegra.ph URLs since the shutdown of this feature. Backwards compatibility is kept. The FILE_REFERENCE_EXPIRED error can appear, right now we barely handle it and just delete 0B files
  • The base image is now Alpine Linux in place of Arch Linux. Consider this a plus, as the image now weights 294 Mb instead of 1.87 Gb (a 6 times improvement !). This implies the following :
    • Separate Docker build steps to avoid bloat in the final image
    • Usage of 7-zip instead of p7zip
    • Manual build of unrar. Addition of a specific build script for it
    • RAR files have a special handling case for them. This will ease the treatment of splitted RARs in the future
  • bash is the default shell

Features

  • Send logs when shutting down the container to the logs channel
  • Uses ast.literal_eval instead of eval for security reasons
  • No longer uses the deprecated cgi module
  • Display the full path name on the extracted file caption
  • Added a /privacy command with temporary text
  • Add the ability to use an username as LOGS_CHANNEL
  • We can finally use newly created channels/groups as LOGS_CHANNEL
  • Ability to set a custom MONGODB_DBNAME. Defaults to Unzipper_Bot for legacy purposes, will change in the future
  • Removes the keyboard when uploading a single file to avoid people spamming buttons
  • Removes long tasks periodically using a proper cron job
  • Boot time message now displays a human readable time. A timezone is set by default to Europe/Paris, will be customizable later on
  • Actually implements graceful handling of SIGTERM, so the logs and shutdown messages are sent to the logs channel

Bug fixes

  • Fixed issues with tasks count being broken
  • Uses shutil instead of os to avoid issues with Docker volumes
  • Fixed variables overlapping each other
  • Spaces inside strings passed to command line utilities no longer breaks the commands
  • /eval and /exec no longer triggers an extraction prompt. Also they have a better text formatting and removes it when uploading the result as a file
  • Video duration and thumbnail are properly parsed and accurate
  • Properly access dicts values

Other

  • Updated dependencies
  • Updated donation links
  • Sorted imports using isort, formatted the code using black
  • Better Docker instructions in the README. Globally reformatted it a bit
  • Added a .dockerignore
  • The changelog file is now uppercase to match GitHub file sorting
  • The log file is now called unzip-bot.log instead of unzip-log.txt

What's Changed

  • chore(dependencies): update dependency pillow to v10.2.0 - autoclosed by @renovate in #259
  • Apply Black code style by @github-actions in #273
  • chore(dependencies): update dependency aiohttp to v3.9.2 [security] by @renovate in #277
  • chore(dependencies): update dependency aiohttp to v3.9.3 by @renovate in #278
  • chore(dependencies): update peter-evans/create-pull-request action to v6 by @renovate in #279
  • chore(dependencies): update dependency gitpython to v3.1.42 by @renovate in #280
  • chore(dependencies): update dependency dnspython to v2.6.0 by @renovate in #281
  • chore(dependencies): update dependency dnspython to v2.6.1 by @renovate in #283
  • Create tech stack docs (techstack.yml and techstack.md) by @stack-file in #284
  • chore(dependencies): update dependency motor to v3.4.0 by @renovate in #293
  • chore(dependencies): update dependency gitpython to v3.1.43 by @renovate in #292
  • chore(dependencies): update dependency pillow to v10.3.0 by @renovate in #294
  • [dependabot/pip] (deps): Bump aiohttp from 3.9.3 to 3.9.4 by @dependabot in #299
  • chore(dependencies): update dependency aiohttp to v3.9.5 by @renovate in #297
  • refactor: merge collapsible with statements by @deepsource-autofix in #300
  • chore(dependencies): update dependency requests to v2.32.0 by @renovate in #301
  • chore(dependencies): update dependency requests to v2.32.1 by @renovate in #302
  • chore(dependencies): update dependency requests to v2.32.2 by @renovate in #303
  • chore(dependencies): update dependency requests to v2.32.3 by @renovate in #305
  • chore(dependencies): update docker/build-push-action action to v6 by @renovate in #307
  • chore(dependencies): update dependency motor to v3.5.0 by @renovate in #312
  • chore(dependencies): update dependency pillow to v10.4.0 by @renovate in #315
  • chore(dependencies): update dependency motor to v3.5.1 by @renovate in #319
  • chore(dependencies): update dependency aiohttp to v3.10.0 by @renovate in #327
  • Apply Black code style by @github-actions in #328
  • chore(dependencies): update dependency psutil to v6 by @renovate in #308
  • chore(dependencies): update dependency aiofiles to v24 by @renovate in #311
  • chore(dependencies): update dependency unzip-http to v0.6 by @renovate in #317
  • chore(dependencies): update dependency aiohttp to v3.10.1 by @renovate in #331
  • Apply Black code style by @github-actions in #332
  • chore(dependencies): update dependency aiohttp to v3.10.2 by @renovate in #334
  • chore(dependencies): update dependency aiohttp to v3.10.3 by @renovate in #335
  • chore(dependencies): update dependency aiohttp to v3.10.4 by @renovate in #338
  • chore(dependencies): update dependency aiohttp to v3.10.5 by @renovate in #339
  • chore(dependencies): update peter-evans/create-pull-request action to v7 by @renovate in #340
  • Apply Black code style by @github-actions in #341
  • chore(dependencies): update dependency motor to v3.6.0 by @renovate in #343
  • chore(dependencies): update dependency aiohttp to v3.10.6 by @renovate in #344
  • chore(dependencies): update dependency aiohttp to v3.10.7 by @renovate in #346
  • chore(dependencies): update dependency aiohttp to v3.10.8 by @renovate in #347
  • chore(dependencies): update dependency aiohttp to v3.10.9 by @renovate in #348
  • chore(dependencies): update dependency dnspython to v2.7.0 by @renovate in #349
  • chore(dependencies): update dependency aiohttp to v3.10.10 by @renovate in #350
  • chore(dependencies): update actions/checkout action to v4 by @renovate in #351
  • chore(dependencies): update dependency pillow to v11 by @renovate in #353
  • chore(dependencies): update dependency psutil to v6.1.0 by @renovate in #354

New Contributors

  • @github-actions made their first contribution in #273

Full Changelog: 6.3.3...7.0.0a

Version 6.3.3 [stable]

21 Jan 14:17
6b4e8b4
Compare
Choose a tag to compare

Improvements

  • Added support for PKG archives
  • ICO aren't treated as images anymore
  • When we upload a picture, either catch PhotoExtInvalid if it isn't meant to be uploaded as a picture
    or catch PhotoSaveFileInvalid if the picture is too big for Telegram
  • Added M4A and ALAC as Audio files
  • Reduced the number of Docker layers
  • Bumped the number of concurrent tasks to 75
  • removed useless files and imports
  • updated the licence years
  • updated the gh bot's config files
  • added ffmpeg buildpack
  • updated python runtime from 3.11.5 to 3.12.1
  • SIGTERM partial handling
  • new feature : if you Upload all, you won't get hundreds of notifications ! Now the bot sends the files silently and send one notification when everything's uploaded
  • New password for testing archives
  • Cap the resources to avoid quota exceedings
  • Don't upload files from MacOS archives (.DS_Store, __MACOSX)
  • Fixed TAR archives being broken (basically a .tar.gz would only upload the .tar inside)
  • Archives are no longer renamed to "archive_from_ID.ext"
  • Added /eval and /exec commands for Owner + aexec function
  • Audio files with media tags are uploaded with their tags
  • Tasks aren't processed if there is less than 5% of disk space available
  • All ongoing tasks are removed instantly instead of one by one
  • Updated dependencies (GitPython, Pillow, aiohttp, psutil, gitdb, motor)

What's Changed

  • Update dependency GitPython to v3.1.36 by @renovate in #223
  • Update docker/metadata-action action to v5 by @renovate in #226
  • Update docker/login-action action to v3 by @renovate in #225
  • Update docker/build-push-action action to v5 by @renovate in #224
  • Update dependency Pillow to v10.0.1 by @renovate in #227
  • Update dependency GitPython to v3.1.37 by @renovate in #228
  • Update dependency aiohttp to v3.8.6 by @renovate in #229
  • Update ad-m/github-push-action action to v0.8.0 by @renovate in #230
  • Update dependency psutil to v5.9.6 by @renovate in #232
  • Update dependency Pillow to v10.1.0 by @renovate in #233
  • Update dependency GitPython to v3.1.38 by @renovate in #234
  • Update dependency GitPython to v3.1.40 by @renovate in #235
  • Update dependency gitdb to v4.0.11 by @renovate in #237
  • Create tech stack docs (techstack.yml and techstack.md) by @stack-file in #246
  • Update dependency motor to v3.3.2 by @renovate in #247
  • Update dependency aiohttp to v3.9.0rc0 by @renovate in #248
  • Update dependency aiohttp to v3.9.0 by @renovate in #251
  • Update dependency aiohttp to v3.9.1 by @renovate in #253
  • Update github/codeql-action action to v3 by @renovate in #254
  • Create tech stack docs (techstack.yml and techstack.md) by @stack-file in #255
  • Create tech stack docs (techstack.yml and techstack.md) by @stack-file in #256
  • Update dependency psutil to v5.9.7 by @renovate in #257
  • Create tech stack docs (techstack.yml and techstack.md) by @stack-file in #261
  • Update dependency GitPython to v3.1.41 [SECURITY] by @renovate in #264
  • Create tech stack docs (techstack.yml and techstack.md) by @stack-file in #265
  • refactor: replace multiple == checks with in by @deepsource-autofix in #268
  • chore(dependencies): update dependency psutil to v5.9.8 by @renovate in #270
  • chore(dependencies): update dependency dnspython to v2.5.0 by @renovate in #271

New Contributors

  • @stack-file made their first contribution in #246

Full Changelog: 6.3.2...6.3.3

Version 6.3.2 [stable]

10 Sep 09:16
f2cf480
Compare
Choose a tag to compare

Improvements

  • Fixed thumbnails not being saved
  • Premium related stuff is moved to its own branch (buggy so yes)
  • Fixed files being nearly all the time not uploaded
  • Better logging
  • Added Mend Bolt
  • Downgraded pyromod to 1.5 again (too much errors, I know they had been fixed in 2.1.0 but still)
  • Client specification in decorators instead of global @client
  • New maintenance logic
  • Attempt to support files sent as TG links (may fail for topics, unaccessible chats and forward-restricted files)

What's Changed

  • Update dependency motor to v3.3.1 by @renovate in #213
  • Update dependency GitPython to v3.1.33 by @renovate in #214
  • Update dependency GitPython to v3.1.34 by @renovate in #215
  • Configure Mend Bolt for GitHub by @mend-bolt-for-github in #216
  • Update actions/checkout action to v4 by @renovate in #218
  • Update dependency GitPython to v3.1.35 by @renovate in #220

New Contributors

  • @mend-bolt-for-github made their first contribution in #216

Full Changelog: 6.3...6.3.2

Version 6.3.1 [stable]

30 Aug 18:22
ec7b04f
Compare
Choose a tag to compare

Improvements

  • Bugfix : No longer use of subprocess.communicate(), as it's thread blocking
  • All strings are in bot_data.py, hope this hsould ease #179
  • Even less thread block : use of async for and yield
  • Any file unreachable/with a size of 0B is skipped, thus avoiding the bot being stuck on an impossible task
  • Fixes little error on strings
  • Closes a lot of issues opened by DeepSource (mostly style)
  • Added a task limit (configurable in config.py)
  • FloodWait is now handled correctly everywhere
  • The bot is no longer blocking any task (finally)
  • Attempt to add some URL parsers (fail)
  • Even more refactor
  • Splitted files can be renamed
  • Url are checked before extracting
  • If a thumbnail fails to be uploaded to telegra.ph, the error message is no longer saved in the db (and on download, non url strings are skipped)
  • /broadcast now shows how many users had been processed
  • Ongoing tasks are removed from the database after a restart
  • Added a new command : /cleantasks
  • Finally upgraded pyromod to v2
  • Upgraded from python-3.11.3 to python-3.11.5
  • Removed any trace of bayfiles upload since the service is dead
  • Support for .partx.rar splitted archives
  • Download files in 10 Mb chunks instead of 5 Mb
  • Added maintenance on DB
  • Aded VIP methods in DB + implementation of no-restrictions for VIP (#205)
  • Finally fixed #133
  • Attempt to create a premium user to upload +2Gb files
  • Added /maintenance

What's Changed

  • remove unused imports by @deepsource-autofix in #181
  • simplify the if statement by @deepsource-autofix in #182
  • remove unnecessary whitespace by @deepsource-autofix in #183
  • add newline at end of file by @deepsource-autofix in #184
  • refactor unnecessary else / elif when if block has a return statement by @deepsource-autofix in #185
  • remove unnecessary whitespace by @deepsource-autofix in #186
  • merge collapsible if statements by @deepsource-autofix in #188
  • remove unnecessary pass by @deepsource-autofix in #189
  • refactor if expression by @deepsource-autofix in #190
  • add newline at end of file by @deepsource-autofix in #191
  • remove unnecessary whitespace by @deepsource-autofix in #192
  • refactor unnecessary else / elif when if block has a return statement by @deepsource-autofix in #193
  • chore(deps): update dependency gitpython to v3.1.32 by @renovate in #194
  • chore(deps): update dependency dnspython to v2.4.0 by @renovate in #195
  • chore(deps): update dependency aiohttp to v3.8.5 by @renovate in #196
  • chore(deps): update dependency dnspython to v2.4.1 by @renovate in #197
  • chore(deps): update dependency aiofiles to v23.2.0 by @renovate in #199
  • chore(deps): update dependency aiofiles to v23.2.1 by @renovate in #200
  • chore(deps): update dependency dnspython to v2.4.2 by @renovate in #201
  • remove unused imports by @deepsource-autofix in #206
  • chore(deps): update dependency motor to v3.3.0 by @renovate in #207
  • chore(deps): update dependency pillow to v10 by @renovate in #172
  • chore(deps): update dependency pyromod to v2 by @renovate in #141
  • group imports from same package by @deepsource-autofix in #209

Full Changelog: 6.2...6.3

Version 6.2.2 [stable/bugfix/securityfix]

04 Jul 12:31
8284cda
Compare
Choose a tag to compare

Improvements :

  • The actions are no longer thread-blocking
  • Empty/unreachable files are skipped
  • All strings are in one place
  • Merged files aren't swapped between users
  • Use of async for and yield

Full Changelog: 6.0...6.2

Version 6.2.1 [stable/sync]

03 Jul 17:33
72ebe4a
Compare
Choose a tag to compare

Improvements

  • Dependencies update
  • tgz and zst archives are now supported
  • Thumbnail change tasks are now removed from DB after completion
  • Dockerfile have been updated : Add of ffmpeg and venv
  • Uploading videos as media is fixed ! #133
  • Added Docker instructions on the README
  • Added GitHub Actions for Docker publishing and deployment
  • Updated the FUNDING.yml
  • New command : /donate, plus donate button appears on /start and after a task is processed
  • Tell users that they can rate the bot after a task is processed
  • #33 is gone (no longer useless alerts)
  • ETA is now correct
  • Tried to add a way to cancel tasks, but it's not working
  • Files above 2 GB are now splitted
  • URL's also shows a progressbar + ETA when possible
  • Downloads are 28 times faster
  • Some databases are cleared upon restart
  • Attempt to implement #137
  • New boot sequence
  • Added a new command : /merge (and /done)
  • Allows to merge splitted archives in .XXX format
  • Upload of thumbnails on telegra.ph now handles errors

What's Changed

New Contributors

Full Changelog: 5.0...6.0

Version 5.1.2 [stable]

18 Oct 14:42
bef0f0a
Compare
Choose a tag to compare

Improvements :

  • URL downloaded files finally have their original name
  • Prompting users to transload files I can't download
  • What happens on the terminal is now on the logs
  • Added issue templates
  • /delthumb now also deletes it from the DB
  • Huge code refactoring (see next paragraph)
  • Thumbnails on upload are officially supported 🥳
  • Made thumbnail support better (with buttons)
  • Saves the thumbnail URL (telegra.ph) to the DB
  • Thumbnail support is permanant 🥳 Redownloads them at every server restart
  • Clears correctly the thumbnails
  • FloodWait correctly handled
  • Bot starting happens on another file (so we can use async/await)
  • We fetch the file size before uploading
  • We try to split files above 2 GB (fail)
  • Added /user2 and /self
  • Added ability to just change the thumbnail of the file (archive or not)
  • Also we can rename it
  • Heroku runtime shifted from Python 3.9.11 to 3.10.6
  • Added wheel for faster deploymentons are side-by-side
  • Checks if sent file is actually an archive (so we stop processing PDF and MKV 😭)
  • Code style shifted to Black 🖤
  • Upgraded to Pyrogram v2 (finally)
  • The bot can process other things while extracting
  • Better password handling
  • Progressbar on uploads too
  • Uploads as media by default
  • Avoids splitted archives to be processed
  • Better LOG_CHANNEL verification
  • Added extensions list (for verification)
  • Medias are sent as native media
  • Fixed ENTITY_BOUNDS_INVALID error
  • Removed numpy as we don't use it
  • Added requests
  • Added development followup (#38)
  • Uptime on /stats works correctly
  • Simpler buttons
  • Commands updates (no /setmode, /me become /info, addded stats for everyone)

What's Changed

  • Bump motor from 2.5.1 to 3.0.0 by @dependabot in #23
  • v3.3.3 final draft by @EDM115 in #6
  • Bump psutil from 5.9.0 to 5.9.1 by @dependabot in #29
  • Bump pillow from 9.1.1 to 9.2.0 by @dependabot in #40
  • Bump psutil from 5.9.1 to 5.9.2 by @dependabot in #42
  • Bump aiofiles from 0.8.0 to 22.1.0 by @dependabot in #41
  • Restyle (v̶4̶) v5 by @restyled-io in #43
  • Restyle (v̶4̶) v5 by @restyled-io in #44
  • Bump aiohttp from 3.8.1 to 3.8.3 by @dependabot in #47
  • Convert string with anomalous backslash into a raw string by @deepsource-autofix in #49
  • Use identity check for comparison to a singleton by @deepsource-autofix in #50
  • Use sys.exit() calls by @deepsource-autofix in #51
  • Refactor unnecessary else / elif when if block has a return statement by @deepsource-autofix in #52
  • Remove unnecessary whitespace by @deepsource-autofix in #53
  • Replace multiple == checks with in by @deepsource-autofix in #54
  • Remove unused imports by @deepsource-autofix in #55
  • Remove commented out code by @deepsource-autofix in #56
  • Refactor unnecessary else / elif when if block has a return statement by @deepsource-autofix in #57
  • Remove unnecessary f-string by @deepsource-autofix in #60
  • Remove implicit object from the base class by @deepsource-autofix in #58
  • Merge collapsible with statements by @deepsource-autofix in #59
  • Format code with black and autopep8 by @deepsource-autofix in #61
  • Remove commented out code by @deepsource-autofix in #78
  • Restyle (v̶4̶) v5 by @restyled-io in #73
  • Bump tgcrypto from 1.2.3 to 1.2.4 by @dependabot in #94

New Contributors

Full Changelog: 4.5...5.0

Version 4.5.0 [stable] #32

08 Jul 10:06
5ee8623
Compare
Choose a tag to compare

Improvements :

  • Attempt to add /merge and /cancel commands + linked callbacks. Actually failed

  • The logs are better. Putting the text message before file, as it does with URL & replies to text message instead of file

  • Made a way more permissive regex for URL

  • Fixed exceptions on nearly all commands

  • Performing a /restart send the logs automatically

  • Way better handling of check_logs() on start

  • Fixed #NEW_USER name formatting

  • Errors sent to logs

  • Created get_cloud()

  • If a file is above 2 Gb, it's uploaded to Bayfiles instead (BROKEN)

  • Better get_files()

  • Made /stats working for non owner

  • Added /getthumbs, which don't work 😅

  • Thumbnail support for most of files. Nevertheless, it's removed at each restart

  • The thumbnail is resized according to Telegram API specifications

  • Thumbnails are saved to a separate folder

  • Created thumb_exists()

  • More complete logs

  • Better texts

  • Keyboard now refreshes correctly after sending a file

  • Added /dbexport, /commands, /admincmd

  • Added exec and eval, but not usable now

  • Major bug fixes

  • Empty keyboard buttons are side to side

Version 4.0.6 [half stable]

19 May 14:37
fc8d9dc
Compare
Choose a tag to compare
Pre-release

Improvements :

  • /me works
  • /restart deletes everything
  • Created /sendto {user_id} that basically works like /broadcast but for a single user (don't handle replies yet)
  • Added uploaded files count towards the database. Still broken
  • The bot now replies to the concerned archive in logs
  • Error messages in logs
  • /cleanall works (kinda)
  • Added logging (finally)
  • A lof of commands can now be done everywhere (refer to this)
  • Added /logs. But have been broken without reason
  • Handle quite correctly REPLY_MARKUP_TOO_LONG error (see #2)
  • Sends downloaded URL to logs as file
  • Close the session (unlike here #4)
  • /mode now works correctly and no longer add users to banned_db
  • Various text changes
  • Started the CrowdIn
  • Added start message to logs (stop one still under construction)
  • Shifted nearly every print() to LOGGER
  • Tried to automatically /clean after an error
  • Added HOW_MANY_FILES_UPLOADED from archive count to logs (currently only works with "Upload All" choice)
  • Made empty keyboard when bot isn't able to read the archive content. Also fixes #2
  • Added a TimeFormatter that works with seconds instead of ms
  • No longer gets AttributeError. If the bot can't get the user_id when he joins, he still sends the message "New user" but only with Username
  • Added /restart, but I will search for a complete reboot, even if it hangs up

Bugs :

  • Inline keyboard don't refresh
  • "There is nothing to remove 💀" without reason
  • Uptime and others are broken as hell

Version 3.3.4 [stable]

02 May 13:21
7251c7e
Compare
Choose a tag to compare

Version 3.3.4 [stable]

Changes :

  • Merged beta branch
  • Added a script to deploy to Heroku when needed (refer to this)
  • Removed useless mentions of Nexa
  • Added Python 3.9 runtime by default
  • Added test functions for better ETA and humanbytes
  • Overall graphic changes (less fancy fonts, less formatting, more emojis and more explicit buttons)
  • Added file name in caption for uploads
  • Better password support
  • Downloaded URL is sent to logs in case URL has gone (this slow down the extraction)
  • Unarchiving a password protected archive in normal mode no longer make hang up the bot
  • Added /help, /about and /me commands for every user
  • Updaded /stats command for owner with uptame, total dl and ul of the day
  • Added /me, /addthumb and /delthumb commands for everyone (don't work for now)
  • Added user, db, dbdive, /redbutton, /restart and /cleanall commands for owner (don't work for now)