Skip to main content

Rubigram

Python library for rubika API

PyPI Documentation

Rubigram

Rubigram is a powerful asynchronous Python framework for building advanced bots on Rubika, offering features like concurrent message handling, advanced filtering, and support for both webhooks and polling.

Features

  • Asynchronous and fast: handle multiple messages concurrently.
  • Advanced filters for private chats, commands, and text messages.
  • Easy message and media sending (text, images, videos, files).
  • Support for both webhooks and polling.
  • Interactive keyboards and buttons for better user engagement.
  • Flexible integration with databases for storing settings and data.

Start

from rubigram import Client, filters
from rubigram.types import Update

client = Client("bot_token")

@client.on_message(filters.command("start"))
async def start(client: Client, update: Update):
    await update.reply("||Hello|| __from__ **Rubigram!**")    
    
client.run()

Button and Keypad

from rubigram import Client, filters
from rubigram.enums import ChatKeypadType
from rubigram.types import Update, Keypad, Button, KeypadRow

client = Client("bot_token")


@client.on_message(filters.photo)
async def start(client: Client, update: Update):
    button_1 = Button("send", "send Photo")
    button_2 = Button("save", "Save Photo")
    row = KeypadRow([button_1, button_2])
    keypad = Keypad([row])
    await update.reply(
        "Select your action:",
        chat_keypad=keypad,
        chat_keypad_type=ChatKeypadType.NEW
    )

client.run()

Use webhook and Get inline button data

from rubigram import Client, Server, filters
from rubigram.types import (
    Update,
    Button,
    Keypad,
    KeypadRow,
    InlineMessage
)


client = Client(token="bot_token")
server = Server(client, "webhook_url")


@client.on_message(filters.photo)
async def start(client: Client, update: Update):
    button_1 = Button("send", "send Photo")
    button_2 = Button("save", "Save Photo")
    row = KeypadRow([button_1, button_2])
    keypad = Keypad([row])
    await update.reply("Select your action:", inline_keypad=keypad)


@client.on_inline_message(filters.button(["send", "save"]))
async def inline_message(client: Client, message: InlineMessage):
    button_id = message.aux_data.button_id
    if button_id == "send":
        await message.answer("You clicked the send button")
    else:
        await message.answer("You clicked the save button")


@client.on_start()
async def start(client):
    print("Start bot ....")


@client.on_stop()
async def stop(client):
    print("Stop bot")


server.run_server()

Auto state and save tmp data in cache

from rubigram import Client, Storage, filters
from rubigram.types import Update


storage = Storage(ttl=120)
client = Client("bot_token", storage=storage) # You can leave the `storage` parametr empty


@client.on_message(filters.command("start") & filters.private)
async def start(client: Client, update: Update):
    state = client.state(update.chat_id)
    await state.set("name")
    await update.reply("Send your name:")


@client.on_message(filters.state("name") & filters.text & filters.private)
async def save_name(client: Client, update: Update):
    state = client.state(update.chat_id)
    await state.set("email", name=update.text)
    await update.reply("Send your Email:")


@client.on_message(filters.state("email") & filters.text & filters.private)
async def save_email(client: Client, update: Update):
    state = client.state(update.chat_id)
    data = await state.get()
    print(data)
    await state.delete()


client.run()

Implementation of multiple programs

from rubigram import Client
import asyncio

tokens = ["TOKEN_1", "TOKEN_2"]

async def main():
    for token in tokens:
        async with Client(token) as client:
            info = await client.get_me()
            print(info)

asyncio.run(main())

Rubino

from rubigram.rubino import Rubino
import asyncio


async def main():
    async with Rubino(auth="auth_account") as client:
        info = await client.get_my_profile_info()
        print(info)

asyncio.run(main())

Metadata

Release files for rubigramclient 1.7.43

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rubigramclient 1.7.43
File Size Uploaded Provenance Actions
rubigramclient-1.7.43.tar.gz 82.3 kB Without provenance Details for rubigramclient-1.7.43.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for rubigramclient 1.7.43
File Interpreter ABI Platform Actions
rubigramclient-1.7.43-py3-none-any.whl Python 3 none any Details for rubigramclient-1.7.43-py3-none-any.whl

Total release size: 265.7 kB

Release files / rubigramclient-1.7.43.tar.gz

Download URL rubigramclient-1.7.43.tar.gz
Size 82.3 kB
Tags Source
SHA-256 checksum
How to use checksums
3550e274c7ae1c7507aca6bf9553742a48760965aa25ce16838e69fadb6723c9
BLAKE2b-256 checksum
How to use checksums
a0f1b7459ee478613cf03d393cb70e1d138e120906df2545f3c10166c94af0e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / rubigramclient-1.7.43-py3-none-any.whl

Download URL rubigramclient-1.7.43-py3-none-any.whl
Size 183.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dd7072819948de22ed884e29a8bca3429c797517a339176fdeea4d23a3abbe61
BLAKE2b-256 checksum
How to use checksums
e823f91c659f3d065688797f3a777cd1f6e1c09ef9e98b6ec7e0404a005a2b37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Security for rubigramclient 1.7.43

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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.7.43 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page