76 lines
2.3 KiB
Markdown
76 lines
2.3 KiB
Markdown
# WorkTime Bot
|
|
|
|
A single-user Telegram time-tracking bot. Clock in/out, toggle remote/onsite, mark day off, get daily reports, and export monthly Excel reports.
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
# edit .env — set BOT_TOKEN and BOT_ALLOWED_USERS
|
|
docker compose up -d
|
|
```
|
|
|
|
### Environment Variables
|
|
|
|
| Variable | Purpose |
|
|
| ------------------- | ----------------------------------------------------------- |
|
|
| `BOT_TOKEN` | Telegram Bot API token (required) |
|
|
| `BOT_ALLOWED_USERS` | Comma-separated Telegram user IDs (empty = allow all) |
|
|
| `HTTPS_PROXY` | Outbound proxy for Telegram API (e.g. `http://proxy:10808`) |
|
|
| `DB_PATH` | Path to SQLite database (default: `db.sqlite3`) |
|
|
| `BOT_WEBHOOK_URL` | Set for webhook mode (omit for polling) |
|
|
|
|
## Usage
|
|
|
|
**Persistent reply keyboard** at the bottom: `Clock In` / `Clock Out`
|
|
|
|
**Inline menu** on `/start`:
|
|
|
|
- Clock In / Clock Out
|
|
- Report / Export
|
|
- Toggle Remote/Onsite / Day Off
|
|
|
|
### Commands
|
|
|
|
| Command | Action |
|
|
| -------------------------- | ---------------------------- |
|
|
| `/start` | Show inline menu |
|
|
| `Clock In` or `/clockin` | Record clock-in |
|
|
| `Clock Out` or `/clockout` | Record clock-out |
|
|
| `/remote` | Toggle remote/onsite mode |
|
|
| `/report` | Today's work & break summary |
|
|
| `/export` | Monthly `.xlsx` report |
|
|
| `/dayoff` | Toggle today as day off |
|
|
|
|
Daily report is sent automatically at 23:00.
|
|
|
|
## How Break Time Works
|
|
|
|
The gap between a clock-out and the next clock-in is counted as break:
|
|
|
|
```
|
|
09:00 Clock In → work starts
|
|
12:00 Clock Out → work: 3h, break starts
|
|
13:00 Clock In → break: 1h, work resumes
|
|
17:00 Clock Out → work: 4h
|
|
total: 7h work, 1h break
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
├── cmd/bot/ main.go, webhook.go
|
|
├── internal/
|
|
│ ├── bot/ handlers, export, totals
|
|
│ └── db/ SQLite store
|
|
├── db/schema.sql Database schema
|
|
├── Dockerfile
|
|
└── docker-compose.yml
|
|
```
|
|
|
|
## Build
|
|
|
|
```bash
|
|
docker compose up -d --build
|
|
```
|