Hydrogram vs Pyrogram

Introduction

This is a non-exhaustive list of differences between Hydrogram and Pyrogram. It is updated periodically.

Key changes

  • Support for the latest MTProto API layer with all new Telegram features

  • Support for threads and topics in Telegram groups

  • Support for multiple usernames.

  • More active development

  • Completely refactored, optimized and modernized codebase (utilizing Ruff)

  • Open-source documentation

  • Adopt modern packaging technologies and standards, such as pyproject.toml

  • Use aiosqlite instead of sqlite3 for storage handling.

  • Added the property full_name for User and Chat objects.

  • Added the possibility to define a custom storage class

More technical changes

  • Declared the special variable __all__ in all files so now we have a better IDE support.

  • Specify optional parameters in methods as keyword-only to prevent potential breakage in the future when introducing new parameters.

  • Migrated from setuptools to hatchling with uv.

  • Transitioned from using os.path to utilizing Pathlib.

  • Start utilizing towncrier to generate changelogs.

Fixes

  • Add FloodWait exception to media download

  • Fixed a bug that would treat 0, False or None as an empty message

  • Fixed minor code issues