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.5.0.tar.gz (33.5 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.5.0-cp311-abi3-win_amd64.whl (173.5 kB view details)

Uploaded CPython 3.11+Windows x86-64

goygram-0.5.0-cp311-abi3-manylinux_2_34_x86_64.whl (257.5 kB view details)

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

goygram-0.5.0-cp311-abi3-macosx_11_0_arm64.whl (239.7 kB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for goygram-0.5.0.tar.gz
Algorithm Hash digest
SHA256 186185c825e9db025d45bde0c04d69b51d19fd3e420ef2dbba73d558ff90b0fa
MD5 a4e605ef9ec9884c2d015b6edfda8823
BLAKE2b-256 4b26e67ffb2bb5b9bf529befe78c4227ffdf5d16d2635ef641310772804a046a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: goygram-0.5.0-cp311-abi3-win_amd64.whl
  • Upload date:
  • Size: 173.5 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.5.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 ba6275be7f4d50052bac9993cb50e48bf3930e27b246d519b370e6f1a3d074bc
MD5 7181f5edc17bfe52db3fdd0169d5966e
BLAKE2b-256 be3778bad6b1c366822e99eeca8671f02554407b326eedf2aff4a35a341b24f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goygram-0.5.0-cp311-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 c6bda7e8c88f450b29cc80b25f6e3ebfe75dd375e8f526e8b699fb2bf054ecdc
MD5 b257277b6dcee0464c76cb8f5a6f0a51
BLAKE2b-256 447aea64f9203640de98b031c9ef3a476ff4bbb573c797d4dee73489d521b131

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goygram-0.5.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2b16d8a998ff042d1f1c18808d690f0b6910d5bebb3acd7d4630d2c0a2627ea8
MD5 8c5c05b954f233e718308cdb419c7c71
BLAKE2b-256 d7c19ce811d88f1d282bc3f64df14c8989ef23457767b9d73dcebe3e9fc1d77b

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