diff --git a/.env.local b/.env.local new file mode 100644 index 0000000..8a0a5e3 --- /dev/null +++ b/.env.local @@ -0,0 +1,3 @@ +MONGODB_INTERNAL_PORT= +APP_INTERNAL_PORT= +APP_EXPOSED_PORT= \ No newline at end of file diff --git a/README.md b/README.md index d0c5a59..c5c90a8 100755 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ git clone https://github.com/miloszowi/everyone-mention-telegram-bot.git ``` after that, you need to copy env files and fulfill it with correct values ```bash +cp .env.local .env cp docker/config/app.dist.env docker/config/app.env cp docker/config/database.dist.env docker/config/app.env ``` @@ -44,15 +45,23 @@ docker/logs ``` to check container logs ### Env files -app.env +`.env` +- `MONGODB_INTERNAL_PORT` - Mongodb internal port (should be the same as declared in `app.env`) +- `APP_INTERNAL_PORT` - App internal port (should be the same as declared in `app.env`) +- `APP_EXPOSED_PORT` - App exposed port (if you are not using any reverse proxy it should be also the same as declared in `app.env`) + + +`app.env` - `BOT_TOKEN` - your telegram bot token from [BotFather](https://telegram.me/BotFather) +- `WEBHOOK_URL` - url for telegram webhooks (withour the bot token) +- `PORT` - port used for initializing webhook & app - `MONGODB_DATABASE` - MongoDB database name - `MONGODB_USERNAME` - MongoDB username - `MONGODB_PASSWORD` - MongoDB password - `MONGODB_HOSTNAME` - MongoDB host (default `database` - container name) - `MONGODB_PORT` - MongoDB port (default `27017` - given in docker-compose configuration) -database.env +`database.env` - `MONGO_INITDB_ROOT_USERNAME` - conf from `app.env` - `MONGO_INITDB_ROOT_PASSWORD` - conf from `app.env` - `MONGO_INITDB_DATABASE` - conf from `app.env` diff --git a/docker-compose.yml b/docker-compose.yml index f05f579..1677662 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,13 +4,14 @@ services: database: image: mongo:5.0.2 + command: mongod --port $MONGODB_INTERNAL_PORT restart: unless-stopped env_file: - ./docker/config/database.env volumes: - db-data:/data/db ports: - - 27017:27017 + - $MONGODB_INTERNAL_PORT networks: - web @@ -22,12 +23,12 @@ services: volumes: - ./src:/src ports: - - 9000:9000 + - $APP_EXPOSED_PORT:$APP_INTERNAL_PORT depends_on: - database networks: - web - restart: on-failure + restart: unless-stopped networks: web: diff --git a/docker/config/app.dist.env b/docker/config/app.dist.env index ad05a23..cc14bd0 100755 --- a/docker/config/app.dist.env +++ b/docker/config/app.dist.env @@ -1,4 +1,6 @@ BOT_TOKEN= +WEBHOOK_URL= +PORT= MONGODB_DATABASE= MONGODB_USERNAME= diff --git a/src/app.py b/src/app.py index 7c24a4f..d52bb87 100755 --- a/src/app.py +++ b/src/app.py @@ -1,7 +1,7 @@ from telegram.ext import Updater from telegram.ext.dispatcher import Dispatcher -from config.credentials import BOT_TOKEN +from config.credentials import BOT_TOKEN, PORT, WEBHOOK_URL from handler.abstractHandler import AbstractHandler from handler import (inHandler, mentionHandler, outHandler, silentMentionHandler, groupsHandler) @@ -15,8 +15,8 @@ class App: def run(self) -> None: self.register_handlers() + self.register_webhook() - self.updater.start_polling() self.updater.idle() def register_handlers(self) -> None: @@ -25,6 +25,13 @@ class App: handler().get_bot_handler() ) + def register_webhook(self) -> None: + self.updater.start_webhook( + listen="0.0.0.0", + port=int(PORT), + url_path=BOT_TOKEN, + webhook_url="/".join([WEBHOOK_URL, BOT_TOKEN]) + ) if __name__ == "__main__": app = App() diff --git a/src/config/credentials.py b/src/config/credentials.py index 7a1ffaa..ef89331 100755 --- a/src/config/credentials.py +++ b/src/config/credentials.py @@ -5,9 +5,11 @@ from dotenv import load_dotenv load_dotenv() BOT_TOKEN = os.environ['BOT_TOKEN'] +WEBHOOK_URL = os.environ['WEBHOOK_URL'] +PORT = os.environ['PORT'] -MONGODB_DATABASE=os.environ['MONGODB_DATABASE'] -MONGODB_USERNAME=os.environ['MONGODB_USERNAME'] -MONGODB_PASSWORD=os.environ['MONGODB_PASSWORD'] -MONGODB_HOSTNAME=os.environ['MONGODB_HOSTNAME'] -MONGODB_PORT=os.environ['MONGODB_PORT'] +MONGODB_DATABASE = os.environ['MONGODB_DATABASE'] +MONGODB_USERNAME = os.environ['MONGODB_USERNAME'] +MONGODB_PASSWORD = os.environ['MONGODB_PASSWORD'] +MONGODB_HOSTNAME = os.environ['MONGODB_HOSTNAME'] +MONGODB_PORT = os.environ['MONGODB_PORT']