Skip to main content

ferogram-py

PyPI Python Downloads License Telegram

A modern, elegant, asynchronous MTProto framework for building Telegram clients and bots in Python.

Powered by a high-performance Rust core that takes care of networking, encryption, TL parsing, and session management so you can focus on writing clean, idiomatic Python.


Why ferogram-py?

Most of the heavy lifting in an MTProto client happens behind the scenes; networking, encryption, TL parsing, and keeping up with updates. ferogram-py lets a Rust core handle all of that, while exposing a clean, Pythonic API.

For most applications, the high-level API is all you'll need. But if you want to use a brand-new Telegram feature or need something more advanced, you can always drop down to the raw MTProto API and invoke requests directly.

The goal is to stay out of your way: simple things should be simple, and advanced things should still be possible.

Quick API reference: FEATURES.md


Install

pip install ferogram
Building from source
make dev      # editable install into .venv (builds the Rust extension)
make build    # release wheel for this machine
make codegen  # regenerate TL code without a Rust rebuild
make test     # run tests
make clean    # wipe .venv, target, dist, generated/

On Termux: pkg install rust clang python first. Rust-only change, don't want to wait on codegen: FEROGRAM_SKIP_CODEGEN=1 maturin develop


Quick start

Bot:

from ferogram import Client, filters

app = Client("mybot", api_id=0, api_hash="", bot_token="123:TOKEN")

@app.on_message(filters.command("start"))
async def start(client, message):
    await message.reply("Hello!")

app.run()

User:

import asyncio
from ferogram import Client

app = Client("myaccount", api_id=0, api_hash="", phone="+1234567890")

async def main():
    async with app as client:
        await client.send_message("me", "logged in")

asyncio.run(main())

Credentials also work from env vars: API_ID, API_HASH, BOT_TOKEN.

Logging

import ferogram.logging as fero_log

fero_log.setup()           # INFO to stderr
fero_log.setup(level=10)   # DEBUG

Architecture

architecture

The compiled extension (_ferogram.so) stays deliberately small: networking, encryption, session storage, and MTProto internals live in Rust. Everything you touch day to day, the client, handlers, filters, is plain Python and can change without a recompile.

Prebuilt Wheels for your platform

Wheels ship prebuilt for Linux (x86_64, aarch64), macOS (x86_64, arm64), Windows (x86_64), and Android/Termux (aarch64, x86_64). pip install ferogram grabs the right one on its own.


License

This project is dual-licensed under:

  • MIT License
  • Apache License 2.0

You may choose either license.

You are free to use, modify, and distribute this software, including for commercial use, provided the original license and copyright notice are included.

See LICENSE-MIT and LICENSE-APACHE for full details.


Developer

Developed by Ankit Chaubey

Don't forget to explore the Rust engine powering ferogram-py: ferogram. Thanks for being part of the journey.

Join the ferogram community! Questions, discussions, bugs report and feedback are always welcome. As the project grows, we'll eventually split Python and Rust discussions into dedicated spaces.

Metadata

Release files for ferogram 0.5.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ferogram 0.5.4
File Size Uploaded Provenance
ferogram-0.5.4.tar.gz 669.8 kB Without provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for ferogram 0.5.4
File
ferogram-0.5.4-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
ferogram-0.5.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-64 Details
ferogram-0.5.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.9 abi3 Linux glibc 2.17+ ARM64 Details
ferogram-0.5.4-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details
ferogram-0.5.4-cp39-abi3-macosx_10_12_x86_64.whl CPython 3.9 abi3 macOS 10.12+ x86-64 Details
ferogram-0.5.4-cp39-abi3-android_24_x86_64.whl CPython 3.9 abi3 Android API level 24+ x86-64 Details
ferogram-0.5.4-cp39-abi3-android_24_x86.whl CPython 3.9 abi3 Android API level 24+ x86-32 Details
ferogram-0.5.4-cp39-abi3-android_24_armeabi_v7a.whl CPython 3.9 abi3 Android API level 24+ ARM EABI v7a Details
ferogram-0.5.4-cp39-abi3-android_24_arm64_v8a.whl CPython 3.9 abi3 Android API level 24+ ARM64 v8a Details

Total release size: 34.2 MB

Release files / ferogram-0.5.4.tar.gz

Download URL ferogram-0.5.4.tar.gz
Size 669.8 kB
Tags Source
SHA-256 checksum
How to use checksums
841a92c47d7b8f1baa589a3bd1892bb2a555e6e41eeca2576bf3173a4ee388c7
BLAKE2b-256 checksum
How to use checksums
80e8983c997e024e3bf556c6fe3530afe9cb46636380118170f9b6f46d60f784
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / ferogram-0.5.4-cp39-abi3-win_amd64.whl

Download URL ferogram-0.5.4-cp39-abi3-win_amd64.whl
Size 4.0 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
9dab02667e37aea075ce2932ba1ddab8ac3be176c275b5d825b479004aba6e39
BLAKE2b-256 checksum
How to use checksums
8ff24a20fcc3798a7b2450e68d20ce7847182b635ed6e63ce3b9c01fa6e741bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / ferogram-0.5.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ferogram-0.5.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.9 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
3f99442c654adbba08c282f2468f91b9484c55d5c3d65047e19ff44aaa29c473
BLAKE2b-256 checksum
How to use checksums
cd2830f74b719150bb2a859f4ac57750e6896c69d742a5fee9eb434de5fd7152
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / ferogram-0.5.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL ferogram-0.5.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 3.6 MB
Tags CPython 3.9 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
a4015937dd98534b8f51f612d088d5487322cda3b42931cd96458223c3ac534a
BLAKE2b-256 checksum
How to use checksums
70a1e9c7dfdde9581ddf8410a8113a2bc4aeafb1717b4d86de4fa28b336acfcf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / ferogram-0.5.4-cp39-abi3-macosx_11_0_arm64.whl

Download URL ferogram-0.5.4-cp39-abi3-macosx_11_0_arm64.whl
Size 3.5 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d1b6a0ab68cfe42627a5733031b16a3db4216220c36fd42e6dbb5f02adb3d8f1
BLAKE2b-256 checksum
How to use checksums
7b7886392aceef55f5d0ba9d6d55f2b66d9d7cda56a07650f8b5cc99d70b05bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / ferogram-0.5.4-cp39-abi3-macosx_10_12_x86_64.whl

Download URL ferogram-0.5.4-cp39-abi3-macosx_10_12_x86_64.whl
Size 3.7 MB
Tags CPython 3.9 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c71fc3b1adaff4e6dd7f2449686343dcb51655e57a47ad85587b740bfd7fed30
BLAKE2b-256 checksum
How to use checksums
2450970233129448c87a71e9591884748c5401096d9ebdc7d51b84db391f2dfe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / ferogram-0.5.4-cp39-abi3-android_24_x86_64.whl

Download URL ferogram-0.5.4-cp39-abi3-android_24_x86_64.whl
Size 3.8 MB
Tags Android API level 24+ x86-64 CPython 3.9 abi3
SHA-256 checksum
How to use checksums
d7a655625481731a86f64a1be526a64c015abaf3ce95452e239027dce8cbab60
BLAKE2b-256 checksum
How to use checksums
d4cc24cdde81fba260c818f873b06b9672ee810ba38f8bac09cf957c01876b2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / ferogram-0.5.4-cp39-abi3-android_24_x86.whl

Download URL ferogram-0.5.4-cp39-abi3-android_24_x86.whl
Size 3.8 MB
Tags Android API level 24+ x86-32 CPython 3.9 abi3
SHA-256 checksum
How to use checksums
7a7b4e887240ad7a28fb024bcf8c6d5df1ba1fb10e0f2687c95081d1b8604f9b
BLAKE2b-256 checksum
How to use checksums
a96f7551d3b25671bce5ea66923f10e9bbfe468e433745a1f3c4e82099364895
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / ferogram-0.5.4-cp39-abi3-android_24_armeabi_v7a.whl

Download URL ferogram-0.5.4-cp39-abi3-android_24_armeabi_v7a.whl
Size 3.5 MB
Tags Android API level 24+ ARM EABI v7a CPython 3.9 abi3
SHA-256 checksum
How to use checksums
b2eaa7cb20a7896049479c4f507ecba2cacac32aeac90d5452fc0481537eb0f3
BLAKE2b-256 checksum
How to use checksums
b989b3791e64eb0d2431343087d944493954ccb412bdfd4cfb661d323ed8faef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / ferogram-0.5.4-cp39-abi3-android_24_arm64_v8a.whl

Download URL ferogram-0.5.4-cp39-abi3-android_24_arm64_v8a.whl
Size 3.6 MB
Tags Android API level 24+ ARM64 v8a CPython 3.9 abi3
SHA-256 checksum
How to use checksums
52340f39a7039f9216b8706217b1a7a3624ee15d9d4f23751b98365e82c4c227
BLAKE2b-256 checksum
How to use checksums
f84790f134ca739c5c539ec7283be3b9f48b1cbc268ec0e349171e012e8724f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Security for ferogram 0.5.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.5.4 This release

10 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page