wztest is a drop-in replacement for Pyrogram, with access to the latest Telegram features including Gifts, Stories, Topics, Business Accounts, and more. Import wzgram; from pyrogram import ... still resolves to the same module rather than a second copy of it, so an existing Pyrogram codebase runs unchanged.
from wzgram import Client, filters
app = Client("my_account")
@app.on_message(filters.private)
async def hello(client, message):
await message.reply("Hello from wzgram!")
app.run()
wztest is a modern, elegant and asynchronous MTProto API framework. It enables you to easily interact with the main Telegram API through a user account (custom client) or a bot identity (bot API alternative) using Python.
Key Features
- Drop-in Replacement — New code says
from wzgram import ...; existingfrom pyrogram import ...codebases migrate with zero changes, since both names are one module. - Up-to-Date — Supports Gifts, Stories, Topics, Business Accounts, Giveaways, and the latest Telegram layer.
- Async Natively — Fully
async/awaitthroughout. Also usable synchronously viaapp.run()for convenience. - Type-hinted — Every type and method is annotated for excellent editor support.
- Fast — Boosted by WarpCrypto, a high-performance cryptography library written in Rust.
- Powerful — Full access to Telegram's API for any official client action and more.
Example with Inline Keyboard
from wzgram import Client, filters
from wzgram.types import InlineKeyboardMarkup, InlineKeyboardButton
app = Client("my_bot")
@app.on_message(filters.command("start"))
async def start(client, message):
await message.reply(
"Choose an option:",
reply_markup=InlineKeyboardMarkup([
[
InlineKeyboardButton("Website", url="https://example.com"),
InlineKeyboardButton("Help", callback_data="help"),
],
[InlineKeyboardButton("About", callback_data="about")],
])
)
app.run()
Installing
pip install wzgram
Requires Python 3.10+. On Linux and macOS, wzgram[fast] also pulls in
uvloop; call uvloop.install() yourself to use it
(see the Speedups guide):
pip install wzgram[fast]
Development
# Clone the repo
git clone https://github.com/rjriajul/wzgram.git
cd wzgram
# Install uv (if not already)
pip install uv
# Create virtual environment with dev dependencies
uv sync --frozen --extra dev
# Generate TL API types
uv run poe api
# Run tests
uv run poe test
Documentation
Full documentation at https://wzgram.com
Resources
Metadata
Release files for wztest 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| wztest-1.0.1.tar.gz | 1.0 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wztest-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 7.0 MB
Release files / wztest-1.0.1.tar.gz
| Download URL | wztest-1.0.1.tar.gz |
|---|---|
| Size | 1.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ce9561ff0debae2ee29834b2d16ff7bd6a048c4422c65b1ee5077b7d11372526
|
|
BLAKE2b-256 checksum How to use checksums |
be226589a99200c79ae924be0a7de59b93ccf182961f8f6ba8d972244d1a23b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / wztest-1.0.1-py3-none-any.whl
| Download URL | wztest-1.0.1-py3-none-any.whl |
|---|---|
| Size | 6.0 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0d5d0028061662b2f040a801cbe34694116fc0bd95550f14e27592053bf21833
|
|
BLAKE2b-256 checksum How to use checksums |
eb5495943196e7923b4653cffd3bf713a9a552088f6571016bc7c651bbff29c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for wztest 1.0.1
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.