# dev-kian/dalletelegrambot architecture

> Architecture diagram of the GitHub repository dev-kian/dalletelegrambot, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dev-kian/dalletelegrambot
- Repository: https://github.com/dev-kian/dalletelegrambot

## Overview

DalleTelegramBot is a Telegram bot for generating DALL-E images, with user-configurable image options and API keys plus an administrative panel. Users send commands or choose inline actions; the Telegram update handler dispatches those interactions to command and query implementations, which manage user settings or invoke image generation. Admin capabilities include user lookup and bans, broadcasts, bot controls, rate limiting, logs, and OS details. Edges reflect sampled dispatch and module references or explicit README claims; several admin and account implementations were not sampled, so their internal links are limited.

Main entry points: [`DalleTelegramBot/Data/Repositories/UserRepository.cs`](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Data/Repositories/UserRepository.cs) (User persistence), [`DalleTelegramBot/Queries/Admin`](https://github.com/dev-kian/dalletelegrambot/tree/main/DalleTelegramBot/Queries/Admin) (Admin operations), [`DalleTelegramBot/Services/Telegram/Handlers/TelegramUpdateHandler.cs`](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Services/Telegram/Handlers/TelegramUpdateHandler.cs) (Update handler), [`DalleTelegramBot/Commands/User/ImageGenerationCommand.cs`](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Commands/User/ImageGenerationCommand.cs) (Image generation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Bot runtime"]
  node_update_handler["Update handler"]
  node_receiver["Update receiver<br/>[ReceiverService.cs]"]
  node_command_registry["Command registry"]
  node_query_registry["Query registry<br/>[QueryCollection.cs]"]
  node_telegram_service["Telegram messaging<br/>[TelegramService.cs]"]
  node_app_settings["App settings<br/>[AppSettings.cs]"]
end

subgraph group_user["User experience"]
  node_commands["User commands"]
  node_account_queries["Account settings"]
end

subgraph group_generation["Image generation"]
  node_image_generation["Image generation"]
  node_openai_client["OpenAI client<br/>[OpenAIClient.cs]"]
end

subgraph group_admin["Administration"]
  node_admin_commands["Admin commands"]
  node_admin_queries["Admin operations"]
  node_ban_filter["Ban filter"]
  node_bot_config["Bot controls<br/>[BotConfig.cs]"]
  node_rate_limit["Rate limiting"]
  node_log_reports["Log reports"]
  node_os_details["OS details"]
end

subgraph group_data["User data"]
  node_user_repository[("User persistence<br/>[UserRepository.cs]")]
  node_user_model["User preferences<br/>[User.cs]"]
  node_state_cache[("Conversation state")]
end

node_telegram_user(("Telegram user"))
node_telegram_api["Telegram API"]
node_openai_api["OpenAI image API"]

node_telegram_user -->|"sends updates"| node_telegram_api
node_telegram_api -->|"delivers updates"| node_receiver
node_receiver -->|"forwards updates"| node_update_handler
node_update_handler -->|"resolves commands"| node_command_registry
node_update_handler -->|"resolves queries"| node_query_registry
node_update_handler -->|"tracks interaction state"| node_state_cache
node_update_handler -->|"sends replies"| node_telegram_service
node_command_registry -.->|"dispatches commands"| node_commands
node_query_registry -.->|"dispatches callbacks"| node_account_queries
node_query_registry -.->|"dispatches callbacks"| node_admin_queries
node_commands -.->|"loads user settings"| node_user_repository
node_account_queries -.->|"updates preferences"| node_user_repository
node_image_generation -->|"requests images"| node_openai_client
node_openai_client -->|"calls image API"| node_openai_api
node_image_generation -->|"reads user settings"| node_user_repository
node_image_generation -->|"checks limits"| node_rate_limit
node_image_generation -->|"tracks generation state"| node_state_cache
node_image_generation -->|"sends image results"| node_telegram_service
node_admin_commands -.->|"manages users"| node_user_repository
node_admin_queries -->|"manages users"| node_user_repository
node_admin_queries -->|"sends admin replies"| node_telegram_service
node_ban_filter -->|"checks ban status"| node_user_repository
node_admin_queries -->|"controls bot"| node_bot_config
node_admin_queries -.->|"retrieves reports"| node_log_reports
node_admin_queries -.->|"requests OS details"| node_os_details
node_user_repository -->|"persists"| node_user_model
node_app_settings -->|"configures Telegram"| node_update_handler

click node_update_handler "https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Services/Telegram/Handlers/TelegramUpdateHandler.cs"
click node_receiver "https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Services/Telegram/ReceiverService.cs"
click node_command_registry "https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Commands/CommandCollection.cs"
click node_query_registry "https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Queries/QueryCollection.cs"
click node_commands "https://github.com/dev-kian/dalletelegrambot/tree/main/DalleTelegramBot/Commands/User"
click node_account_queries "https://github.com/dev-kian/dalletelegrambot/tree/main/DalleTelegramBot/Queries/User/Account"
click node_image_generation "https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Commands/User/ImageGenerationCommand.cs"
click node_openai_client "https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Services/OpenAI/OpenAIClient.cs"
click node_telegram_service "https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Services/Telegram/TelegramService.cs"
click node_admin_commands "https://github.com/dev-kian/dalletelegrambot/tree/main/DalleTelegramBot/Commands/Admin"
click node_admin_queries "https://github.com/dev-kian/dalletelegrambot/tree/main/DalleTelegramBot/Queries/Admin"
click node_ban_filter "https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Filters/CheckBanUserFilter.cs"
click node_bot_config "https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Configurations/BotConfig.cs"
click node_rate_limit "https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Common/Caching/RateLimitingMemoryCache.cs"
click node_log_reports "https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Queries/Admin/Config/BotLogReportQuery.cs"
click node_os_details "https://github.com/dev-kian/dalletelegrambot/tree/main/DalleTelegramBot/Common/SystemMetadata"
click node_user_repository "https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Data/Repositories/UserRepository.cs"
click node_user_model "https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Data/Models/User.cs"
click node_state_cache "https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Common/Caching/StateManagementMemoryCache.cs"
click node_app_settings "https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Common/AppSettings.cs"

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_update_handler,node_receiver,node_command_registry,node_query_registry,node_telegram_service,node_app_settings,node_telegram_user toneBlue
class node_commands,node_account_queries toneAmber
class node_image_generation,node_openai_client,node_telegram_api,node_openai_api toneMint
class node_admin_commands,node_admin_queries,node_ban_filter,node_bot_config,node_rate_limit,node_log_reports,node_os_details toneRose
class node_user_repository,node_user_model,node_state_cache toneIndigo
```

## Components

### Bot runtime

- [Update handler](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Services/Telegram/Handlers/TelegramUpdateHandler.cs): `DalleTelegramBot/Services/Telegram/Handlers/TelegramUpdateHandler.cs`
- [Update receiver](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Services/Telegram/ReceiverService.cs): `DalleTelegramBot/Services/Telegram/ReceiverService.cs`
- [Command registry](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Commands/CommandCollection.cs): `DalleTelegramBot/Commands/CommandCollection.cs`
- [Query registry](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Queries/QueryCollection.cs): `DalleTelegramBot/Queries/QueryCollection.cs`
- [Telegram messaging](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Services/Telegram/TelegramService.cs): `DalleTelegramBot/Services/Telegram/TelegramService.cs`
- [App settings](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Common/AppSettings.cs): `DalleTelegramBot/Common/AppSettings.cs`

### User experience

- [User commands](https://github.com/dev-kian/dalletelegrambot/tree/main/DalleTelegramBot/Commands/User): `DalleTelegramBot/Commands/User`
- [Account settings](https://github.com/dev-kian/dalletelegrambot/tree/main/DalleTelegramBot/Queries/User/Account): `DalleTelegramBot/Queries/User/Account`

### Image generation

- [Image generation](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Commands/User/ImageGenerationCommand.cs): `DalleTelegramBot/Commands/User/ImageGenerationCommand.cs`
- [OpenAI client](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Services/OpenAI/OpenAIClient.cs): `DalleTelegramBot/Services/OpenAI/OpenAIClient.cs`

### Administration

- [Admin commands](https://github.com/dev-kian/dalletelegrambot/tree/main/DalleTelegramBot/Commands/Admin): `DalleTelegramBot/Commands/Admin`
- [Admin operations](https://github.com/dev-kian/dalletelegrambot/tree/main/DalleTelegramBot/Queries/Admin): `DalleTelegramBot/Queries/Admin`
- [Ban filter](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Filters/CheckBanUserFilter.cs): `DalleTelegramBot/Filters/CheckBanUserFilter.cs`
- [Bot controls](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Configurations/BotConfig.cs): `DalleTelegramBot/Configurations/BotConfig.cs`
- [Rate limiting](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Common/Caching/RateLimitingMemoryCache.cs): `DalleTelegramBot/Common/Caching/RateLimitingMemoryCache.cs`
- [Log reports](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Queries/Admin/Config/BotLogReportQuery.cs): `DalleTelegramBot/Queries/Admin/Config/BotLogReportQuery.cs`
- [OS details](https://github.com/dev-kian/dalletelegrambot/tree/main/DalleTelegramBot/Common/SystemMetadata): `DalleTelegramBot/Common/SystemMetadata`

### User data

- [User persistence](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Data/Repositories/UserRepository.cs): `DalleTelegramBot/Data/Repositories/UserRepository.cs`
- [User preferences](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Data/Models/User.cs): `DalleTelegramBot/Data/Models/User.cs`
- [Conversation state](https://github.com/dev-kian/dalletelegrambot/blob/main/DalleTelegramBot/Common/Caching/StateManagementMemoryCache.cs): `DalleTelegramBot/Common/Caching/StateManagementMemoryCache.cs`

### Other components

- **Telegram user**
- **Telegram API**
- **OpenAI image API**

## Connections

- Telegram user → Telegram API: sends updates (evidence: `README.md`)
- Telegram API → Update receiver: delivers updates (evidence: `DalleTelegramBot/Services/Telegram/ReceiverService.cs`)
- Update receiver → Update handler: forwards updates (evidence: `DalleTelegramBot/Services/Telegram/ReceiverService.cs`)
- Update handler → Command registry: resolves commands (evidence: `DalleTelegramBot/Services/Telegram/Handlers/TelegramUpdateHandler.cs`)
- Update handler → Query registry: resolves queries (evidence: `DalleTelegramBot/Services/Telegram/Handlers/TelegramUpdateHandler.cs`)
- Update handler → Conversation state: tracks interaction state (evidence: `DalleTelegramBot/Services/Telegram/Handlers/TelegramUpdateHandler.cs`)
- Update handler → Telegram messaging: sends replies (evidence: `DalleTelegramBot/Services/Telegram/Handlers/TelegramUpdateHandler.cs`)
- Command registry → User commands: dispatches commands
- Query registry → Account settings: dispatches callbacks
- Query registry → Admin operations: dispatches callbacks
- User commands → User persistence: loads user settings
- Account settings → User persistence: updates preferences
- Image generation → OpenAI client: requests images (evidence: `DalleTelegramBot/Commands/User/ImageGenerationCommand.cs`)
- OpenAI client → OpenAI image API: calls image API (evidence: `DalleTelegramBot/Services/OpenAI/OpenAIClient.cs`)
- Image generation → User persistence: reads user settings (evidence: `DalleTelegramBot/Commands/User/ImageGenerationCommand.cs`)
- Image generation → Rate limiting: checks limits (evidence: `DalleTelegramBot/Commands/User/ImageGenerationCommand.cs`)
- Image generation → Conversation state: tracks generation state (evidence: `DalleTelegramBot/Commands/User/ImageGenerationCommand.cs`)
- Image generation → Telegram messaging: sends image results (evidence: `DalleTelegramBot/Commands/User/ImageGenerationCommand.cs`)
- Admin commands → User persistence: manages users
- Admin operations → User persistence: manages users (evidence: `DalleTelegramBot/Queries/Admin/BanUserQuery.cs`)
- Admin operations → Telegram messaging: sends admin replies (evidence: `DalleTelegramBot/Queries/Admin/BanUserQuery.cs`)
- Ban filter → User persistence: checks ban status (evidence: `DalleTelegramBot/Filters/CheckBanUserFilter.cs`)
- Admin operations → Bot controls: controls bot (evidence: `DalleTelegramBot/Queries/Admin/Config/BotStatusQuery.cs`)
- Admin operations → Log reports: retrieves reports
- Admin operations → OS details: requests OS details
- User persistence → User preferences: persists (evidence: `DalleTelegramBot/Data/Repositories/UserRepository.cs`)
- App settings → Update handler: configures Telegram (evidence: `DalleTelegramBot/Services/Telegram/Handlers/TelegramUpdateHandler.cs`)
