ZeldrisRobot

Zeldris Robot

Support Chat Update Channel
Zeldris on Telegram
CodeFactor
DeepSource
Python Telegram Bot Code style: black
Telethon Python
Open Source Maintenance
License PRs





**A modular Telegram Python bot running on python3 with a sqlalchemy, redis, telethon.** ## How to set up/deploy.
Step to self Host!! ## Setting up the bot (Read this before trying to use!): Please make sure to use python3.6, as I cannot guarantee everything will work as expected on older Python versions! This is because markdown parsing is done by iterating through a dict, which is ordered by default in 3.6. ### Configuration There are two possible ways of configuring your bot: a config.py file, or ENV variables. The preferred version is to use a `config.py` file, as it makes it easier to see all your settings grouped together. This file should be placed in your `zeldris` folder, alongside the `__main__.py` file. This is where your bot token will be loaded from, as well as your database URI (if you're using a database), and most of your other settings. It is recommended to import sample_config and extend the Config class, as this will ensure your config contains all defaults set in the sample_config, hence making it easier to upgrade. An example `config.py` file could be: ```python from zeldris.sample_config import Config class Development(Config): OWNER_ID = 123456789 # your telegram ID OWNER_USERNAME = "username" # your telegram username TOKEN = "your bot token" # your bot token, as provided by the @botfather SQLALCHEMY_DATABASE_URI = 'postgresql://username:password@localhost:5432/database' # sample db credentials MESSAGE_DUMP = '-10007372' # some group chat that your bot is a member of USE_MESSAGE_DUMP = True SUDO_USERS = [1234, 1234] # List of id's for users which have sudo access to the bot. LOAD = [] NO_LOAD = ['translation'] MONGO_URI = "" MONGO_PORT = 27017 # leave it as it is MONGO_DB = "Zeldris" ``` If you can't have a [config.py](/ZeldrisRobot/zeldris/sample_config.py) file (EG on Heroku), it is also possible to use environment variables. The following env variables are supported: - `ENV`: Setting this to ANYTHING will enable env variables - `TOKEN`: Your bot token, as a string. - `OWNER_ID`: An integer of consisting of your owner ID - `OWNER_USERNAME`: Your username - `DATABASE_URL`: Your database URL - `MESSAGE_DUMP`: optional: a chat where your replied saved messages are stored, to stop people deleting their old - `LOAD`: Space-separated list of modules you would like to load - `NO_LOAD`: Space-separated list of modules you would like NOT to load - `WEBHOOK`: Setting this to ANYTHING will enable webhooks when in env mode messages - `URL`: The URL your webhook should connect to (only needed for webhook mode) - `MONGO_URI`: Your mongodb url - `MONGO_PORT`: Your mongodb port - `MONGO_DB`: Your mongodb name - `SUDO_USERS`: A space-separated list of user_ids which should be considered sudo users - `DEV_USERS`: A space-separated list of user_ids which should be considered dev users - `SUPPORT_USERS`: A space-separated list of user_ids which should be considered support users (can gban/ungban, nothing else) - `WHITELIST_USERS`: A space-separated list of user_ids which should be considered whitelisted - they can't be banned. - `DONATION_LINK`: Optional: link where you would like to receive donations. - `CERT_PATH`: Path to your webhook certificate - `PORT`: Port to use for your webhooks - `DEL_CMDS`: Whether to delete commands from users which don't have rights to use that command - `STRICT_GBAN`: Enforce gbans across new groups as well as old groups. When a gbanned user talks, he will be banned. - `WORKERS`: Number of threads to use. 8 is the recommended (and default) amount, but your experience may vary. __Note__ that going crazy with more threads won't necessarily speed up your bot, given the large amount of sql data accesses, and the way python asynchronous calls work. - `BAN_STICKER`: Which sticker to use when banning people. - `ALLOW_EXCL`: Whether to allow using exclamation marks ! for commands as well as /. ### Python dependencies Install the necessary Python dependencies by moving to the project directory and running: `pip3 install -U -r requirements.txt`. This will install all the necessary python packages. ### Database If you wish to use a database-dependent module (eg: locks, notes, userinfo, users, filters, welcomes), you'll need to have a database installed on your system. I use Postgres, so I recommend using it for optimal compatibility. In the case of Postgres, this is how you would set up a database on a Debian/ubuntu system. Other distributions may vary. - install postgresql: `sudo apt-get update && sudo apt-get install postgresql` - change to the Postgres user: `sudo su - postgres` - create a new database user (change YOUR_USER appropriately): `createuser -P -s -e YOUR_USER` This will be followed by you need to input your password. - create a new database table: `createdb -O YOUR_USER YOUR_DB_NAME` Change YOUR_USER and YOUR_DB_NAME appropriately. - finally: `psql YOUR_DB_NAME -h YOUR_HOST YOUR_USER` This will allow you to connect to your database via your terminal. By default, YOUR_HOST should be 0.0.0.0:5432. You should now be able to build your database URI. This will be: `sqldbtype://username:pw@hostname:port/db_name` Replace sqldbtype with whichever DB you're using (e.g. Postgres, MySQL, SQLite, `etc.) repeat for your username, password, hostname (localhost?), port (5432?), and DB name. Or, register on [ElephantSQL](https://www.elephantsql.com/) for free Postgresql. Learn for your self, We won't teach you anything.
## Credits - [Skyleebot](https://github.com/SensiPeeps/skyleebot) Based this Bot. - [1maverick1](https://github.com/1maverick1) for many stuffs. - [AyraHikari](https://github.com/AyraHikari) for weather modules and some other stuffs. - [RealAkito](https://github.com/RealAkito) for reverse search modules. - [MrYacha](https://github.com/MrYacha) for connections module. - [ATechnoHazard](https://github.com/SphericalKat) for many stuffs. - [corsicanu](https://github.com/corsicanu) and nunopenim for android modules. - [Saitama](https://github.com/AnimeKaizoku/SaitamaRobot) for anime modules and other stuffs. - [Kigyō](https://github.com/AnimeKaizoku/EnterpriseALRobot) for greetings modules. - [UserIndoBot](https://github.com/userbotindo/UserIndoBot) for any other stuffs. - Thanks to Everyone who has [contributed](https://github.com/IDN-C-X/ZeldrisRobot/graphs/contributors) to this Project! ## Projects! ``` Zeldris is part of the [IDNCoder](https://github.com/IDN-C-X) project. ```