A simple and flexible Python library for building advanced Rubika bots with powerful message handling, inline buttons, and custom filters.
Project description
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.
Installation
From pypi:
pip install RubigramClient
From github:
git clone https://github.com/DevJavad/Rubigram.git
cd Rubigram
Quick Example
from rubigram import Client
from rubigram.types import Update
client = Client(token="...")
@client.on_message()
async def start(client: Client, update: Update):
await update.reply(text="Hi, rubigram user!")
client.run()
Reply and Edit message
from rubigram import Client
from rubigram.types import Update
client = Client(token="...")
@client.on_message()
async def echo(client: Client, update: Update):
message = await update.reply(text=f"Hi, {update.new_message.text}")
await message.edit_text(text="message was edited")
client.run()
Send Message & Get receiveInlineMessage
from rubigram import Client, filters
from rubigram.types import Update, Button, Keypad, KeypadRow, InlineMessage
client = Client(token="...", webhook_url="...")
@client.on_message(filters.command("start"))
async def start(client: Client, update: Update):
inline = Keypad(
rows=[
KeypadRow(
buttons=[
Button(id="1", button_text="Button 1"),
Button(id="2", button_text="Button 2")
]
)
]
)
await update.reply("The inline message", inline_keypad=inline)
@client.on_inline_message(filters.button(["1", "2"]))
async def button(client: Client, update: InlineMessage):
if update.aux_data.button_id == "1":
await client.send_message(chat_id=update.chat_id, text="You Click Button 1")
elif update.aux_data.button_id == "2":
await client.send_message(chat_id=update.chat_id, text="You Click Button 2")
client.run()
Filters
from rubigram import Client, filters
from rubigram.types import Update
client = Client(token="...")
@client.on_message(filters.text)
async def text(client: Client, update: Update):
await update.reply(text="message is text")
@client.on_message(filters.contact)
async def contact(client: Client, update: Update):
await update.reply(text="message is contact")
@client.on_message(filters.edited)
async def edited(client: Client, update: Update):
await update.reply(text="message is edited")
@client.on_message(filters.file)
async def file(client: Client, update: Update):
await update.reply(text="message is efiledited")
client.run()
Handlers
from rubigram import Client
client = Client(token="...")
@client.on_message()
async def new_message():
...
@client.on_inline_message()
async def inline_message():
...
@client.on_update_message()
async def update_message():
...
@client.on_remove_message()
async def remove_message():
...
@client.on_started_bot()
async def start_bot():
...
@client.on_stopped_bot()
async def stop_bot():
...
@client.on_start()
async def start():
...
@client.on_stop()
async def stop():
...
Contex Manager
from rubigram import Client
import asyncio
async def main():
async with Client(token="...") as client:
data = await client.get_me()
print(data.bot_id)
asyncio.run(main())
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=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="...") as client:
info = await client.get_my_profile_info()
print(info)
asyncio.run(main())
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rubigramclient-1.7.6.tar.gz.
File metadata
- Download URL: rubigramclient-1.7.6.tar.gz
- Upload date:
- Size: 53.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8905022c623687e97c281087a1a28a8f55f458f1eb3768473a05401b24133121
|
|
| MD5 |
658c4362942f61c8a36ff3abc0c5ae69
|
|
| BLAKE2b-256 |
b0f19e9db9d76a301c1254300179498721f41eeaafc6956ba179fa95fe49eba0
|
File details
Details for the file rubigramclient-1.7.6-py3-none-any.whl.
File metadata
- Download URL: rubigramclient-1.7.6-py3-none-any.whl
- Upload date:
- Size: 110.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99342dea139466a140e281e69dfa7d448fab0157565753120c8c9eaff28bb590
|
|
| MD5 |
c578f41623ad0b9c099c7f840eb20a2c
|
|
| BLAKE2b-256 |
cac00d4e40496e9c37f30e3e9e748f3de8789818ea4f2f7662a23dec88a55a8c
|