Skip to main content

Goygram: unified Telegram runtime on Python and Rust

Project description

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

GoyGram

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())

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")

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.1.tar.gz (27.2 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.1-cp311-abi3-win_amd64.whl (167.1 kB view details)

Uploaded CPython 3.11+Windows x86-64

goygram-0.4.1-cp311-abi3-manylinux_2_34_x86_64.whl (251.0 kB view details)

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

goygram-0.4.1-cp311-abi3-macosx_11_0_arm64.whl (233.3 kB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for goygram-0.4.1.tar.gz
Algorithm Hash digest
SHA256 3b410398cb77bf6f1f8d70b52fc953673cafbe5d4ff9f1f5d521e6cd31270c5c
MD5 da7d91ca23254f0ee91f1842ed529b95
BLAKE2b-256 98b787d43633b37e909096eac1d348701d66ada6b5e0922663603ff7a9cf3b1b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: goygram-0.4.1-cp311-abi3-win_amd64.whl
  • Upload date:
  • Size: 167.1 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.1-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 ab2fc838e54353298e5792deb4d0eb90686b929c1e14490b5af1194f39008d7e
MD5 5043c951ee4e09063da981e2c646c748
BLAKE2b-256 d75cc43ab0cef6b712dc2d22d26359a5d605b1c16e42d815e6abe0deddf7925e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goygram-0.4.1-cp311-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 e230059f5851bc1394edf043a08e4b0a0fd4aca1d438360a863fe5e268d38d22
MD5 f6c5b0cd58f5011c63f778f8e13d4ed4
BLAKE2b-256 1f1cba9fa035f45fbc6e02f50283a26bd4ec701ff4ba5d8e9965db470e721d0a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for goygram-0.4.1-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d2827f6cbc3803a947623ab67ecefcf2fd2c9e77ed7df86766d8b4f4956074d6
MD5 0d99f3d5dfad9a69be667aadade078bb
BLAKE2b-256 327ee68e79606bfc780ebc09d22df9726a2e729a86880ab425c28dfd4bc5871f

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