- Applied Black code style
- Sends the logs to log channel when shutting down
- Uses
shutil.move
instead ofos.rename
to move files (useful when 2 paths aren't on the same disk, ex Docker volumes) - Simplified the Dockerfile (less steps => less layers)
- Added a pre-filled
.env
, and automatically load its vars if they aren't empty, else display a warning - Correctly handle spaces in file paths, fixing issues with ffmpeg and other command-line utilities
- Display the entire file path on a file caption, instead of just the filename
- Don't trigger doc/url process when using /exec and /eval
- Added the
/privacy
command - The logs channel can now be an username, and we may have fixed an issue with Pyrogram being so old that it can't see 64-bits channel IDs
/eval
and/exec
now don't format the output when writing to a file- Deleted VIP related commands and strings for now
- The DB collection name can be customized (useful when multiple bots run on the same DB but needs a different collection, ex not to share the ongoing tasks list)
- The upload list buttons is hidden when uploading a file, assuring that no user spam click
- The check for tasks running for more time than expected no longer relies on a while true + asyncio.sleep, but on a
aiocron
job - When rebooting, the timestamps sent to the owner are now readable
- The video duration is now properly parsed (no more 0s videos) and the thumbnail is no longer generated from 0s but rather midway through the video
- Several code improvements (style and bug-risk mainly)
- Uses
ast.literal_eval
instead ofeval
for security reasons, catches properly most exceptions - Stopped using the deprecated
cgi
module and now gets filename from headers withemail.parser
- Updated the
.gitignore
- Sorted imports
- When pushing a tagged image, it is now also pushed as
latest
- Updated python runtime from 3.12.1 to 3.12.4
- Updated dependencies (aiofiles, aiohttp, dnspython, GitPython, motor, Pillow, psutil, requests, unzip-http), added aiocron
- 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)
- 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)
- Finally fixed #133
- Attempt to create a premium user to upload +2Gb files
- Added
/maintenance
- 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)
- 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
- 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)
- Bugfix : No longer use of
subprocess.communicate()
, as it's thread blocking - All strings are in
bot_data.py
, hope this should ease #179 - Even less thread block : use of
async for
andyield
- Any file unreachable/with a size of 0B is skipped, thus avoiding the bot being stuck on an impossible task
- Security fix : Merging files could lead to paths being swapped between users. It's now fixed
- Added a new command : /merge (and /done)
- Allows to merge splitted archives in .XXX format
- Upload of thumbnails on telegra.ph now handles errors
- 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
- 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
- Added /gitpull command to try the latest updates (removed at each restart)
- /delthumb also works locally
- Logs the boot time on database
- Clears the logs on /restart (because in the end they're sent before actually restarting)
- /user2 now correctly format the link when an username is provided
- Users are warned when the bot have restarted
- So the ongoing tasks are also stored in the DB
- And so /stats shows how many tasks are ongoing
- X7 archives are now supported
- Splitted archives are no longer processed (even .rar ones)
- Sending videos as media worked but now instantly fails for an unknown reason
- Heroku deployment file now complies to their drop of the free their
- Added THUMB_DEL buttons
- Added ZIPX support
- Added a Refresh button on /stats (#143)
- Happy new year 2023 🎉
- Avoids double ban/unban
- Fixed extentions recognition
- Added a "Processing task" message
- Added the website to /help
- Python 3.10 -> 3.11
- Added a new command : /report
- Removal of the personal_only and beta branches, only master remains
- Added permalink to the profile on /user2
- Half refactor, a lot of errors and misuse of functions gone
- Added renovate[bot]
- Better new user formatting
- ban/unban also acts on main user_db
- Added support for IPSW archives on request
- URL downloaded files finally have their original name
- Split goes stonks (lie)
- Prompting users to transload files I can't download
- What happens on the terminal is now on the logs
- Made /listdir and /sendfile for testing purposes
- Added issue templates
- /delthumb now also deletes it from the DB
- Huge code refactoring
- Little fixes
- Still trying to split files
- 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 deployment
- /getthumbs work
- Made thumbnail support better (with buttons)
- Saves the thumbnail URL (telegra.ph) to the DB
- Buttons 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
- Thumbnails on upload are officially supported 🥳
- Commands updates (no /setmode, /me become /info, addded stats for everyone)
- 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
- Definitely fixed #NEW_USER
- Once again tweaks on BayFiles
- Way better handling of
check_logs()
on start - Fixed the #NEW_USER
- Few changes on BayFiles upload
- A lot of changes on BayFiles upload :
- Errors sent to logs
- Formatting the results with size, url and filename
- Correct formatting of the errors
- Created get_cloud(), will improve it to let choose the upload platform for the user (bayfiles, anonfiles, …)
- Instead of using things from other users, I use the official curl method from BayFiles docs
- If a file is above 2 Gb, it's uploaded to Bayfiles instead
- Better get_files() according to what Nexa made. Looks faster
- Fixed crashes
- Made
/stats
working for non owner, as requested in #34
- Added
/getthumbs
, which don't work 😅 - User Name is better on the database (better formatting when he joins)
- Custom thumb made better + logging on it
- Buggy thumbnails (files didn't uploads due to this)
- That version crashes
- The thumbnail is resized according to Telegram API specifications
- Thumbnails are saved to a separate folder
- Created thumb_exists()
- Created this changelog to track updates
- Once again updated the uptime
- Added numpy and Pillow in the requirements
- Tried to have a thumbnail support. Nevertheless, it's removed at each restart. Will look for a Telegra.ph support
- Major bug fixes
- Added workaround for #26
- The bot now edit its messages each 7s (instead of 10s)
- Attempt to make a really better ETA
- Working around allowing user to cancel file/URL download (will look for the extracting process, bot can't reply while extracting)
- Reduced amount of lines in logs (that was too much 💀)
- Definitely fixed the bug of
v4.0.1
- Better texts
- Keyboard now refreshes correctly after sending a file
- Better handling of issue #2 + better usage of it (no longer systematically delete message)
- Added
/dbexport
,/commands
,/admincmd
- Added exec and eval, but not usable now
- Empty keyboard buttons are side to side
- Major bug fixes
- Tried to add date+time on logs filename. Can't actually do it because I will need to work with wildcards
- Added logging for motor and asyncio
- Added
/sendto
that works like/broadcast
but to a single user. Works with chats and channels too. Will look for handling replies as well - You can use commands in more places
- Major bug fixes
- Upload count return 0 instead of None if it doesn't exist
- Try to automatically perform a
/clean
when a task failed
- Logs message now replies to the concerned archive. Better if multiple archives are processed at the same time
- Errors shows up in logs
- Created an empty keyboard where only Upload all & Cancel shows up
- Fixed major bug : REPLY_MARKUP_TOO_LONG (#2)
- Try to close session (to fix #4)
/mode
work finally as expected (previous behavior added users to banned db when they changed their upload mode, thus the command couldn't work. That huge bug is present in Nexa's repo)- Created a TimeFormatter with seconds as input
- Created upload file count (buggy). Barely saves in DB + only shows up in logs when user selected upload all mode
- Tried to fetch the SITERM signal
- Trying to fix a bug where the User Id no longer shows up in logs
- Added logging instead of print
- Bot sends start time to logs (may send stop time as well, but I need to handle SIGTERM gracefully)
/restart
now works (but not as expected. Instead of killing and restart the process, it creates a subprocess that behave the same way)- Added
/logs
to send a.txt
containing the logs to the owner
- More emojis
- Created
/help
and/about
from home text
- Minor bug fixes
- Fully upgraded
/stats
- Added
/redbutton
,/restart
,/cleanall
,/addthumb
,/delthumb
- Minor text changes
- Password archives no longer shows an empty upload button
- Sends file downloaded from URL to logs
- Added password warning in both user chat and logs
- Less imports on
ext_helper.py
- Added another HumanBytes and functions for a better ETA
- BIG CHANGE : Bot no longer hang up when a password protected archive is extracted normally ! 🥳
- Fixed some errors
- Captions really works now
- Added precise versionning of packages (due to PyroGram 2 release)
- Python 3.9.11 as default runtime
- Removed mentions of Nexa since this project take a slightly different direction
- Added
/me
,/user
,/db
,/dbdive
- Added filename in description while uploading
- Sending password of archive in logs
- Same as
v1.0.0
, but with text changed, typos fixed, mentions of me, more emojis, less formatting, … - Changed license from GPL 3.0 to MIT
- Consider this as the original work of Nexa