# veloleha/tg-task-manager architecture

> Architecture diagram of the GitHub repository veloleha/tg-task-manager, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/veloleha/tg-task-manager
- Repository: https://github.com/veloleha/tg-task-manager

## Overview

TakeYourTask is a Telegram support-task workflow built from three cooperating bots and Redis. Users submit text or media; the User Bot aggregates messages into tasks and maintains personal forum topics. The Task Bot handles task intake and support-side management, while the Mover Bot organizes work by status and assignee. Staff replies and status changes are relayed to users; completed work is archived and contributes to live and period-based statistics. README descriptions establish the broader capabilities; sampled source confirms Redis persistence, topic management, and Pub/Sub mechanics, but not every bot-to-bot handler path.

Main entry points: [`bots/user_bot/user_bot.py`](https://github.com/veloleha/tg-task-manager/blob/main/bots/user_bot/user_bot.py) (User Bot), [`bots/task_bot/task_bot.py`](https://github.com/veloleha/tg-task-manager/blob/main/bots/task_bot/task_bot.py) (Task Bot), [`core/redis_client.py`](https://github.com/veloleha/tg-task-manager/blob/main/core/redis_client.py) (Redis task store), [`bots/mover_bot/mover_bot.py`](https://github.com/veloleha/tg-task-manager/blob/main/bots/mover_bot/mover_bot.py) (Mover Bot)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_intake["User intake"]
  node_userbot["User Bot<br/>[user_bot.py]"]
  node_aggregation["Message aggregation"]
  node_topics["Personal topics<br/>[topic_manager.py]"]
end

subgraph group_work["Task workflow"]
  node_taskbot["Task Bot<br/>[task_bot.py]"]
  node_handlers["Task commands<br/>[commands.py]"]
  node_keyboards["Task controls<br/>[keyboards.py]"]
  node_mover["Mover Bot<br/>[mover_bot.py]"]
  node_moverkeys["Mover controls<br/>[topic_keyboards.py]"]
  node_status["Status topics<br/>[mover_bot.py]"]
end

subgraph group_infra["Shared services"]
  node_redis[("Redis task store<br/>[redis_client.py]")]
  node_taskredis["Task persistence<br/>[redis_manager.py]"]
  node_pubsub["Redis Pub/Sub<br/>[pubsub_manager.py]"]
  node_taskpubsub["Task Pub/Sub<br/>[pubsub_manager.py]"]
end

subgraph group_analytics["Reporting"]
  node_stats["Live statistics"]
  node_periodstats["Period reports<br/>[period_stats.py]"]
end

node_users(("Telegram users"))
node_staff(("Support staff"))
node_telegram["Telegram forum"]

node_users -->|"send messages"| node_userbot
node_userbot -->|"aggregate messages"| node_aggregation
node_userbot -->|"manage topics"| node_topics
node_userbot -->|"save tasks"| node_redis
node_topics -->|"cache topic links"| node_redis
node_topics -->|"create topics"| node_telegram
node_redis -.->|"new-task events"| node_taskbot
node_taskbot -->|"manage task data"| node_taskredis
node_taskredis -->|"read and write"| node_redis
node_taskbot -->|"dispatch commands"| node_handlers
node_handlers -->|"present controls"| node_keyboards
node_staff -->|"manage tasks"| node_taskbot
node_staff -->|"change task status"| node_mover
node_mover -->|"present controls"| node_moverkeys
node_mover -->|"organize by status"| node_status
node_mover -->|"update task state"| node_redis
node_mover -->|"move forum tasks"| node_telegram
node_redis -.->|"task updates"| node_userbot
node_userbot -->|"send replies and reactions"| node_users
node_taskbot -.->|"publish task events"| node_pubsub
node_pubsub -.->|"deliver channel events"| node_taskpubsub
node_taskredis -->|"update counters"| node_stats
node_stats -->|"provide counts"| node_taskbot
node_periodstats -->|"query task statistics"| node_taskredis

click node_userbot "https://github.com/veloleha/tg-task-manager/blob/main/bots/user_bot/user_bot.py"
click node_aggregation "https://github.com/veloleha/tg-task-manager/blob/main/bots/user_bot/message_aggregator.py"
click node_topics "https://github.com/veloleha/tg-task-manager/blob/main/bots/user_bot/topic_manager.py"
click node_taskbot "https://github.com/veloleha/tg-task-manager/blob/main/bots/task_bot/task_bot.py"
click node_handlers "https://github.com/veloleha/tg-task-manager/blob/main/bots/task_bot/handlers/commands.py"
click node_keyboards "https://github.com/veloleha/tg-task-manager/blob/main/bots/task_bot/keyboards.py"
click node_mover "https://github.com/veloleha/tg-task-manager/blob/main/bots/mover_bot/mover_bot.py"
click node_moverkeys "https://github.com/veloleha/tg-task-manager/blob/main/bots/mover_bot/topic_keyboards.py"
click node_redis "https://github.com/veloleha/tg-task-manager/blob/main/core/redis_client.py"
click node_taskredis "https://github.com/veloleha/tg-task-manager/blob/main/bots/task_bot/redis_manager.py"
click node_pubsub "https://github.com/veloleha/tg-task-manager/blob/main/core/pubsub_manager.py"
click node_taskpubsub "https://github.com/veloleha/tg-task-manager/blob/main/bots/task_bot/pubsub_manager.py"
click node_status "https://github.com/veloleha/tg-task-manager/blob/main/bots/mover_bot/mover_bot.py"
click node_stats "https://github.com/veloleha/tg-task-manager/blob/main/core/enhanced_statistics.py"
click node_periodstats "https://github.com/veloleha/tg-task-manager/blob/main/commands/period_stats.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_userbot,node_aggregation,node_topics,node_users toneBlue
class node_taskbot,node_handlers,node_keyboards,node_mover,node_moverkeys,node_status toneAmber
class node_redis,node_taskredis,node_pubsub,node_taskpubsub toneMint
class node_stats,node_periodstats toneRose
class node_staff,node_telegram toneIndigo
```

## Components

### User intake

- [User Bot](https://github.com/veloleha/tg-task-manager/blob/main/bots/user_bot/user_bot.py): `bots/user_bot/user_bot.py`
- [Message aggregation](https://github.com/veloleha/tg-task-manager/blob/main/bots/user_bot/message_aggregator.py): `bots/user_bot/message_aggregator.py`
- [Personal topics](https://github.com/veloleha/tg-task-manager/blob/main/bots/user_bot/topic_manager.py): `bots/user_bot/topic_manager.py`

### Task workflow

- [Task Bot](https://github.com/veloleha/tg-task-manager/blob/main/bots/task_bot/task_bot.py): `bots/task_bot/task_bot.py`
- [Task commands](https://github.com/veloleha/tg-task-manager/blob/main/bots/task_bot/handlers/commands.py): `bots/task_bot/handlers/commands.py`
- [Task controls](https://github.com/veloleha/tg-task-manager/blob/main/bots/task_bot/keyboards.py): `bots/task_bot/keyboards.py`
- [Mover Bot](https://github.com/veloleha/tg-task-manager/blob/main/bots/mover_bot/mover_bot.py): `bots/mover_bot/mover_bot.py`
- [Mover controls](https://github.com/veloleha/tg-task-manager/blob/main/bots/mover_bot/topic_keyboards.py): `bots/mover_bot/topic_keyboards.py`
- [Status topics](https://github.com/veloleha/tg-task-manager/blob/main/bots/mover_bot/mover_bot.py): `bots/mover_bot/mover_bot.py`

### Shared services

- [Redis task store](https://github.com/veloleha/tg-task-manager/blob/main/core/redis_client.py): `core/redis_client.py`
- [Task persistence](https://github.com/veloleha/tg-task-manager/blob/main/bots/task_bot/redis_manager.py): `bots/task_bot/redis_manager.py`
- [Redis Pub/Sub](https://github.com/veloleha/tg-task-manager/blob/main/core/pubsub_manager.py): `core/pubsub_manager.py`
- [Task Pub/Sub](https://github.com/veloleha/tg-task-manager/blob/main/bots/task_bot/pubsub_manager.py): `bots/task_bot/pubsub_manager.py`

### Reporting

- [Live statistics](https://github.com/veloleha/tg-task-manager/blob/main/core/enhanced_statistics.py): `core/enhanced_statistics.py`
- [Period reports](https://github.com/veloleha/tg-task-manager/blob/main/commands/period_stats.py): `commands/period_stats.py`

### Other components

- **Telegram users**
- **Support staff**
- **Telegram forum**

## Connections

- Telegram users → User Bot: send messages
- User Bot → Message aggregation: aggregate messages
- User Bot → Personal topics: manage topics
- User Bot → Redis task store: save tasks
- Personal topics → Redis task store: cache topic links
- Personal topics → Telegram forum: create topics
- Redis task store → Task Bot: new-task events
- Task Bot → Task persistence: manage task data
- Task persistence → Redis task store: read and write
- Task Bot → Task commands: dispatch commands
- Task commands → Task controls: present controls
- Support staff → Task Bot: manage tasks
- Support staff → Mover Bot: change task status
- Mover Bot → Mover controls: present controls
- Mover Bot → Status topics: organize by status
- Mover Bot → Redis task store: update task state
- Mover Bot → Telegram forum: move forum tasks
- Redis task store → User Bot: task updates
- User Bot → Telegram users: send replies and reactions
- Task Bot → Redis Pub/Sub: publish task events
- Redis Pub/Sub → Task Pub/Sub: deliver channel events
- Task persistence → Live statistics: update counters
- Live statistics → Task Bot: provide counts
- Period reports → Task persistence: query task statistics
