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.1.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.1-cp311-abi3-win_amd64.whl (173.6 kB view details)

Uploaded CPython 3.11+Windows x86-64

goygram-0.5.1-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.1-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.1.tar.gz.

File metadata

  • Download URL: goygram-0.5.1.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.1.tar.gz
Algorithm Hash digest
SHA256 518dac01a72083039d18681c2014c8e03913006f66704aed163283569211d2a2
MD5 e663ebd7617d5fd0d5f199b523922a45
BLAKE2b-256 4b5195df892604360ca9062a2f5e5726f8fb28da47a7b4592ae9da1cbb201162

See more details on using hashes here.

File details

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

File metadata

  • Download URL: goygram-0.5.1-cp311-abi3-win_amd64.whl
  • Upload date:
  • Size: 173.6 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.1-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 e6f70923eef3120e32b470366315bca7155104551e5be1e7599721386734f129
MD5 fb83477f36f769c6e226a9f4b81b7532
BLAKE2b-256 717a32fc037e8453c2aed403c286255860fdc93bfb79aaaeb892c4fd21af0a50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goygram-0.5.1-cp311-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 be089880c587c46a0f8fc371a19ebf574617d9a3c575e901ce77c3ac5e876e5a
MD5 39243e251fab5a141996172c14ff6d03
BLAKE2b-256 1ca7c3cfedb4479e6e1e0eb866ee8dc12dc0294ce964d2957d792d95e2b92953

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goygram-0.5.1-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6a3127ee9b062e076bc2c4db427ece9d6dc16b775f30128742d63d1e2128a064
MD5 ea2c602e69cf2b3af6a350c46d4a8e7b
BLAKE2b-256 30e3ef37bb1da10e971131eed4755f8a97f90e57f4a51835db003d0d479f5bc4

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