visciang/telegram
56.1
Adequate · 18 September 2026
1.4k
lines of production code
Elixir
primary language
1
measurement over time
What this system is
This system is an Elixir library for building Telegram bots, providing core capabilities for handling API requests, polling updates, and managing webhooks. It supports both stateless bot interactions and stateful, per-chat conversations with session management and concurrency controls. The library allows developers to integrate with various HTTP clients and web servers through configurable adapters.
Features
Added per-chat session management with concurrency limits
The chat\_bot library now introduces a dedicated session architecture that manages state per chat conversation. This includes a new Chat struct to represent chat context, a Registry for tracking active sessions, and a DynamicSupervisor that enforces a configurable maximum concurrency limit (max\_bot\_concurrency) for active chat sessions. Users benefit from isolated session lifecycles, the ability to resume existing chat states, and protection against resource exhaustion through enforced child process limits, with updates being dropped gracefully when the concurrency cap is reached.
_lib/bot/chat\bot · high confidence
Initial project setup and documentation
This release establishes the foundational structure of the Elixir Telegram library, introducing configuration files for code formatting (.formatter.exs) and static analysis (.credo.exs), along with an MIT LICENSE and code coverage settings (coveralls.json). It also provides comprehensive README documentation detailing the installation process, usage of the Telegram Bot API (including examples for getMe, sendMessage, and getUpdates), and instructions for sending and downloading files.
(repo-wide) · high confidence
New dispatch behavior and utility functions for bot updates
The library introduces a new \Telegram.Bot.Dispatch\ behavior that defines a \dispatch\_update/2\ callback, enabling custom modules to handle incoming Telegram updates. Additionally, \Telegram.Bot.Utils\ provides helper functions to extract the sender's username and the message sent date from update objects, supporting more granular processing of bot interactions.
lib/bot · high confidence
Behavioural changes
Configuration migration and test environment setup
The configuration system has been migrated from the deprecated Mix.Config to the modern import Config syntax. Additionally, the test environment is now explicitly configured to use the Tesla.Mock adapter for HTTP requests, set a local test API base URL, limit retries to two, reduce the get\_updates poll timeout to one second, and specify the Bandit web server adapter.
config · high confidence
Example app switches HTTP adapter to Finch with configurable options
The example application now uses the Finch HTTP client instead of the previous default adapter. A new runtime configuration file sets the Tesla adapter to \Tesla.Adapter.Finch\ and explicitly configures the adapter name and a receive timeout of 40 seconds, allowing users to see how to pass specific options to the Finch adapter.
example/config · high confidence
Refactor HTTP client to Tesla and introduce stateful ChatBot behavior
The library's HTTP layer has been migrated from Maxwell to Tesla, with \Telegram.Client\ handling API requests and file downloads and \Telegram.Poller\ enforcing a configured Tesla adapter for production polling. A new \Telegram.ChatBot\ behavior has been added to support stateful, per-chat conversations with session management, timeouts, and resume capabilities, complementing the existing stateless \Telegram.Bot\. The webhook infrastructure now supports configurable Plug-compatible web servers (Bandit or Cowboy) via \Telegram.Webhook\, and the API module now delegates to the new client for unified request handling.
lib · high confidence
Updated example bots to use Finch and new bot behaviors
The example directory has been refactored to demonstrate the library's updated architecture. The previous \example.exs\ using the legacy macro-based DSL has been removed and replaced with \example\_bot.exs\ and \example\_chatbot.exs\, which utilize the \Telegram.Bot\ and \Telegram.ChatBot\ behaviors respectively. These new examples also switch the underlying HTTP client from Maxwell to Finch (version \~\> 0.19) and require explicit configuration of the Finch adapter within the supervision tree.
example · high confidence
Test coverage
Added comprehensive test suite for Telegram library components; Added test support utilities and mock bot implementations.
Dependencies
Major dependency overhaul and Elixir 1.16 upgrade
The project has upgraded its minimum Elixir requirement to 1.16 and performed a significant dependency update. The HTTP client library was switched from Maxwell to Tesla (v1.0+), and the JSON parser was replaced with Jason. New optional HTTP server adapters, Plug.Cowboy and Bandit, have been added to support Plug-based webhooks. Development tooling was also expanded with the addition of Credo for linting and Dialyxir for static analysis, while ExCoveralls was updated for test coverage reporting.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 56.
Lenses
- Code Health 100
- Architecture 69
- Maturity 49
- Readiness 52
- Security 68
Changes since last survey
- 156 commits — 149 feature/other, 7 fixes
By area
- (root) — 94 commits
- lib/bot — 17 commits
- test/bot_test.exs — 8 commits
- (repo) — 4 commits
- .github/workflows — 4 commits
- .github/FUNDING.yml — 3 commits
- .github/dependabot.yml — 3 commits
- example/config — 3 commits
- config/config.exs — 2 commits
- lib/api.ex — 2 commits
- lib/bot.ex — 2 commits
- lib/poller.ex — 2 commits
- lib/webhook.ex — 2 commits
- test/test_helper.exs — 2 commits
- config/test.exs — 1 commit
- example/example_bot.exs — 1 commit
- lib/chat_bot.ex — 1 commit
- lib/client.ex — 1 commit
- lib/utils.ex — 1 commit
- lib/webserver — 1 commit
Notable commits
- fix: Fix README
- fix: Fix getUpdates timeout error (#65)
- fix: Fix pattern match in child_spec (#165)
- fix: deps update + fix ssl_verify build error
- fix: fix regression after switching to Tesla.Mock
- fix: fix uri path
- fix: update deps, fix test
- change: 0.20.3
- change: Add SSL certificates verification
- change: Add handle_info/4 callback to Telegram.ChatBot behavior (#157)
- change: Add optional get_chat callback to Telegram.ChatBot (#177)
- change: Added feature to config gun adapter (#131)
- change: Bot behaviours
- change: Bump dialyxir from 0.5.1 to 1.0.0 (#66)
- change: Bump ex_doc from 0.18.2 to 0.18.3 (#7)
- change: Bump ex_doc from 0.23.0 to 0.24.1 (#104)
- change: Bump excoveralls from 0.12.2 to 0.12.3 (#68)
- change: Bump excoveralls from 0.8.1 to 0.8.2 (#9)
- change: Bump tesla from 1.3.2 to 1.3.3 (#70)
- change: CI cache dialyzer
- …and 136 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
visciang/telegram was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 18 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 6dca11fff18c41fafffb92bb82082350ff1df217 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.