This is the Chatbot in charge of maintaining the Telegram BotList, a channel that is a community-driven approach to collect the best Bots on Telegram.
The bot simplifies navigation by acting as a mirror of the BotList, and automates the process of submitting, reviewing and publishing bots by the BotListChat community.
This repository is meant as inspiration and technical guidance for bot builders, mainly for folks using the amazing python-telegram-bot library.
JosXa/BotListBot is licensed under the MIT License.
- Python 3.7.x
- A PostgreSQL database instance or Docker (see below)
- Pipenv installed globally (
pip install pipenv
) - Your own bot token for local development
- A sentry.io account (logging)
- An S3-compatible object storage (e.g. Minio)
Using PyCharm...
- VCS -> Get from Version Control... ->
https://github.com/JosXa/BotListBot
(or your own fork) - Add a new project Interpreter using Pipenv (not virtualenv) and let PyCharm install the packages for you
- Modify the variables in
template.env
and save the file as just.env
in the root folder - Run the file
scripts/initialize_database.py
once. Then open its run configuration, add the word "seed" to the arguments list, and run it again. This will fill the database with some initial, required values. - Run
botlistbot/main.py
using a default configuration
Not using PyCharm...
- Clone from GitHub:
git clone https://github.com/JosXa/BotListBot
(or your own fork) - Run
pipenv install
- Modify the variables in
template.env
and save the file as just.env
in the root folder of the checkout. - Create and seed the database via
pipenv run python scripts/initialize_database.py seed
- Run the project via
pipenv run python botlistbot/main.py
Setup a PostgreSQL database instance with Docker
- Install Docker
- Run
docker-compose up -d
- Create and seed the database via
pipenv run python scripts/initialize_database.py seed
- To stop the database, run
docker-compose down
If you have a look at settings.py, you can
see a bunch of environment variables that are being retrieved via decouple.config(...)
calls.
Those settings can be controlled via the .env
file you created at the root folder.