Nukesor / archivebot

:floppy_disk: A telegram bot for backing up and collecting all kinds of media.
MIT License
98 stars 31 forks source link
archive archiver bot convenient downloader file-sharing file-upload photos python3 telegram-bot telethon video

Archive-Bot

MIT Licence Paypal Patreon

:warning: :warning: :warning: State of the project :warning: :warning: :warning:

The project is no longer actively maintained! Might still work for you though.

If you started a successful fork of this repository that has been maintained over a longer period of time, feel free to contact me. I'll then point to your fork :).

:warning: :warning: :warning: :warning: :warning: :warning: :warning: :warning: :warning: :warning: :warning: :warning: :warning:

Features

A handy bot which enables to download files from telegram chats to your server.

It features a full backup of all files posted in a chat and a continuous backup of incoming new media. A 7z archive can then be created and downloaded from the Telegram chat with a single command at any time.

For instance, this is great to collect images and videos from the members of your last holiday trip or to simply push backups or interesting files from your telegram chats to your server.

To send multiple uncompressed pictures and videos with your phone:

  1. Click the share button
  2. Select File
  3. Select Gallery (To send images without compression)

WARNING: This is a hobby side project of mine. It has been developed for use on Linux, but might work on windows as well. There might be some bugs, but I didn't find them yet. I'm happy about any PR's, feel free to help out!

Features

Stuff that's not working

Installation and starting

This bot is developed for Linux. Windows isn't tested, but it shouldn't be too hard to make it compatible. Feel free to create a PR.

Dependencies:

  1. Clone the repository:

    git clone git@github.com:nukesor/archivebot && cd archivebot
  2. Run just setup to setup the project

  3. Run just initdb to initialize the database

  4. Run just run to create a default config ~/.config/archivebot.toml

  5. Adjust the configuration

  6. Start the bot via just run

Configuration

You can choose to run archivebot as a bot with a telegram bot token. If run as a normal telegram bot, archivebot is unable to scan the whole chat history. Thereby /scan_chat doesn't work as well as the /zip command, since normal bots can't upload files larger than 20MB. Userbots on the other hand can upload files up to 1.5GB.

If you run the bot as a normal Telegram bot, disable the privacy mode for your bot via the BotFather menu! Telegram bots can't read group messages by default.

In case you decide to run it as a userbot to access all features, set the userbot flag to true and add your phone number to the configuration. You will receive a login code, which has to be entered on the first start and every time your session expires (which happens pretty much never).

Commands

In group chats the bot expects a command in combination with its username. (In userbot mode that's your own username) E.g. /start@some_bot_name or /start@Nukesor

/start Start the bot
/stop Stop the bot
/clear_history Clear all files from the server.
/zip Create a zip file of all files on the server
/set_name Set the name for this chat. This also determines the name of the target folder on the server.
/scan_chat Scan the whole chat history for files to back up.
/accept ['document', 'photo'] Specify the accepted media Example: '/accept document photo'
/verbose ['true', 'false'] The bot will complain if there are duplicate files or uncompressed images are sent, whilst not being accepted.
/sort_by_user ['true', 'false'] Incoming files will be sorted by user in the server directory for this chat.
/allow_duplicates ['true', 'false'] Allow to save files with duplicate names.
/info Show current settings.
/help Show this text

Botfather commands

These are the command descriptions formatted for the botfather, in case you want to host your own bot

start - Start archiving Files for this chat
stop - Stop archiving Files for this chat
clear_history - Clear all files from the server.
zip - Create a zip file of all files on the server.
set_name - Set the name for this chat. This also determines the name of the target folder on the server.
scan_chat - Scan the whole chat history for files to back up.
accept - ['document', 'photo'] Specify the allowed media types. Example: `/accept document photo`
sort_by_user - ['true', 'false'] Incoming files will be sorted by user in the server directory for this chat.
verbose - ['true', 'false'] The bot will complain if there are duplicate files or uncompressed images are sent, whilst not being accepted.
allow_duplicates - ['true', 'false'] Allow to save files with duplicate names.
info - Show current settings.
help - Show the help text.