Add initial project structure for Telegram bot
- Created Docker configuration files for development and production. - Added Dockerfile for building the bot image. - Implemented configuration loading from environment variables. - Developed main application logic and command handlers. - Included README with setup instructions and usage details. - Added .gitignore and .dockerignore files to exclude unnecessary files. - Provided example environment file (.env.example) for bot token configuration. - Established basic error handling for the bot.
This commit is contained in:
67
README.md
Normal file
67
README.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# Duty Teller (Telegram Bot)
|
||||
|
||||
A minimal Telegram bot boilerplate using [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) v22 with the `Application` API.
|
||||
|
||||
## Get a bot token
|
||||
|
||||
1. Open Telegram and search for [@BotFather](https://t.me/BotFather).
|
||||
2. Send `/newbot` and follow the prompts to create a bot.
|
||||
3. Copy the token BotFather gives you.
|
||||
|
||||
## Setup
|
||||
|
||||
1. **Clone and enter the project**
|
||||
```bash
|
||||
cd duty-teller
|
||||
```
|
||||
|
||||
2. **Create a virtual environment (recommended)**
|
||||
```bash
|
||||
python -m venv venv
|
||||
source venv/bin/activate # Linux/macOS
|
||||
# or: venv\Scripts\activate # Windows
|
||||
```
|
||||
|
||||
3. **Install dependencies**
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
4. **Configure the bot**
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
Edit `.env` and set `BOT_TOKEN` to the token from BotFather.
|
||||
|
||||
## Run
|
||||
|
||||
```bash
|
||||
python main.py
|
||||
```
|
||||
|
||||
The bot runs in polling mode. Send `/start` or `/help` to your bot in Telegram to test.
|
||||
|
||||
## Run with Docker
|
||||
|
||||
Ensure `.env` exists (e.g. `cp .env.example .env`) and contains `BOT_TOKEN`.
|
||||
|
||||
- **Dev** (volume mount; code changes apply without rebuild):
|
||||
```bash
|
||||
docker compose -f docker-compose.dev.yml up --build
|
||||
```
|
||||
Stop with `Ctrl+C` or `docker compose -f docker-compose.dev.yml down`.
|
||||
|
||||
- **Prod** (no volume; runs the built image; restarts on failure):
|
||||
```bash
|
||||
docker compose -f docker-compose.prod.yml up -d --build
|
||||
```
|
||||
For production deployments you may use Docker secrets or your orchestrator’s env instead of a `.env` file.
|
||||
|
||||
## Project layout
|
||||
|
||||
- `main.py` – Builds the `Application`, registers handlers, runs polling.
|
||||
- `config.py` – Loads `BOT_TOKEN` from env; exits if missing.
|
||||
- `handlers/` – Command and error handlers; add new handlers here.
|
||||
- `requirements.txt` – Pinned dependencies (PTB with job-queue, python-dotenv).
|
||||
|
||||
To add commands, define async handlers in `handlers/commands.py` (or a new module) and register them in `handlers/__init__.py`.
|
||||
Reference in New Issue
Block a user