Skip to main content

Goygram: unified Telegram runtime on Python and Rust

Project description

GoyGram

GoyGram Logo

Python 3.14+ Rust Core License: AGPL v3 Telegram API Security Docs & Wiki

What is this?

Ultimate split-brain Telegram framework (Python + Rust core) built for production-grade speed, control, and maximum OpSec.

Key Features

  • Split-brain architecture: ergonomic Python layer + blazing-fast Rust extension.
  • Session Eater: aggressive in-memory cleanup (zeroize strategy).
  • Vault AES-GCM: encrypted local session bootstrap.
  • TUI auth flow: terminal-first authorization workflow.
  • Proxy support: route traffic through your required network topology.
  • Dual transport: Bot API + MTProto (with API ID/API Hash) in one app runtime.
  • Dynamic DC Routing: MTProto nodes are fetched at startup from Telegram public config (no baked-in DC IP list).

Installation

pip install goygram

Quick Start

1) Bot API (token)

import asyncio
from goygram import GoyGram, filters

app = GoyGram(bot_token="123456:ABC_TOKEN")

@app.on_msg(filt=filters.text)
async def echo(msg):
    await msg.reply("Hello from Bot API")

asyncio.run(app.run())

2) MTProto (no bot token, requires API ID + API Hash)

import asyncio
from goygram import GoyGram

app = GoyGram(api_id=123456, api_hash="0123456789abcdef0123456789abcdef")  # auto-fetches Telegram DC endpoint at startup

@app.on_cmd("ping")
async def ping(msg):
    await msg.reply("pong from MTProto (api_id/api_hash)")

asyncio.run(app.run())

3) Named MTProto sessions (multi-session in one folder)

import asyncio
from goygram import GoyGram

app = GoyGram(
    api_id=123456,
    api_hash="0123456789abcdef0123456789abcdef",
    session_name="farm_worker_1",
)

asyncio.run(app.run())
  • By default, session data is stored in default.vault.
  • With session_name="farm_worker_1", session data is stored in farm_worker_1.vault.
  • If farm_worker_1.session exists, it is migrated to farm_worker_1.vault during bootstrap.

Dynamic API & Methods

GoyGram now supports all Telegram methods out of the box with dynamic dispatch:

  • Call Bot API methods directly even if they are not explicitly hardcoded:
    • await app.sendDocument(chat_id=..., document=...)
    • await app.getChat(chat_id=...)
    • await app.getUpdates(timeout=30)
  • Snake-case also works and is converted to Bot API method names:
    • await app.send_document(chat_id=..., document=...) -> sendDocument
  • MTProto actions (authorized with API ID/API Hash) are available with mt_ prefix:
    • await app.mt_get_dialogs(limit=50)
    • await app.mt_get_chat_full(chat_id=...)

This behavior is implemented through dynamic method resolution in the client core (__getattr__) and transport-aware request routing.

Developer Tools (Help)

Use built-in introspection tools:

app.help()            # pretty DX overview in console
print(dir(app))       # inspect available shortcuts + dynamic entries

or:

from goygram.utils import print_methods
print_methods(app)

With type hints on key event objects (MsgObj, CbObj, MemberObj, PollObj) and filter primitives, modern IDE autocomplete works much better out of the box.

Filters

goygram.filters supports composable boolean operators:

from goygram import filters

smart_filter = filters.text & ~filters.me
another = filters.text | filters.me

@app.on_msg(filt=smart_filter)
async def handler(msg):
    await msg.reply("Filtered")

Wiki

📚 Looking for guides, API references, or multi-session farming? > 👉 Check out the Official GoyGram Wiki!

License

See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

goygram-0.4.9.tar.gz (33.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

goygram-0.4.9-cp311-abi3-win_amd64.whl (173.4 kB view details)

Uploaded CPython 3.11+Windows x86-64

goygram-0.4.9-cp311-abi3-manylinux_2_34_x86_64.whl (257.3 kB view details)

Uploaded CPython 3.11+manylinux: glibc 2.34+ x86-64

goygram-0.4.9-cp311-abi3-macosx_11_0_arm64.whl (239.6 kB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

File details

Details for the file goygram-0.4.9.tar.gz.

File metadata

  • Download URL: goygram-0.4.9.tar.gz
  • Upload date:
  • Size: 33.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.13.3

File hashes

Hashes for goygram-0.4.9.tar.gz
Algorithm Hash digest
SHA256 1e216c00e75f1876ae8daf26ed8db78bf5db63d57ceb2d7655ac095107d6f432
MD5 f3a98f7adafe62fd53cd4728ac4635dd
BLAKE2b-256 c8e0d172c81eab70915f42ad551d1a69fb5a71ff51ddc76a525e9285754c2587

See more details on using hashes here.

File details

Details for the file goygram-0.4.9-cp311-abi3-win_amd64.whl.

File metadata

  • Download URL: goygram-0.4.9-cp311-abi3-win_amd64.whl
  • Upload date:
  • Size: 173.4 kB
  • Tags: CPython 3.11+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.13.3

File hashes

Hashes for goygram-0.4.9-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 7c48680778855338e6d6f1b0400b3b42343e909c17e0c4a1fb31c802dedf1039
MD5 2d866028ce07f4475689618a490feaa4
BLAKE2b-256 4752b242a078d0ea2f0dfd17571dca9db2cda72210ff5344208421c8f2e72093

See more details on using hashes here.

File details

Details for the file goygram-0.4.9-cp311-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for goygram-0.4.9-cp311-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 2817211d432ab8476366211c6b5a2de05a48637316556555c9411130df6aadc4
MD5 64ee77f89678a6135be6eb636402ebea
BLAKE2b-256 ee55babf8f4ce3eddf42c36ff74d8875a1d59f7372b43abbe21ca98bd3e771f9

See more details on using hashes here.

File details

Details for the file goygram-0.4.9-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for goygram-0.4.9-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1447cd050c84bc0c7117ad4439b909a8cb2230fbbc33edf6f895535a68c7c9e8
MD5 d6eb30f0e521e44630f7c2fce516f9c2
BLAKE2b-256 306a401b6590678c26eda322153a1415c7ec96034c4c8fac591c8161ba1d7c08

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page