<p align="center">
<a href="https://github.com/shayanheidari01/rubika">
<img src="https://raw.githubusercontent.com/shayanheidari01/rubika/master/icon.png" width="128" alt="Rubpy Logo" />
</a>
<br><br>
<strong><font size="+2">Rubpy</font></strong><br>
<em>Asynchronous & elegant Python framework for the Rubika API</em>
<br><br>
<a href="https://github.com/shayanheidari01/rubika">🏠 Homepage</a> •
<a href="https://github.com/shayanheidari01/rubika/tree/master/docs">📘 Documentation</a> •
<a href="https://pypi.org/project/rubpy/#history">📦 Releases</a> •
<a href="https://t.me/rubikapy">🗞 News</a>
</p>
---
## 🌟 Rubpy
> **Modern. Elegant. Asynchronous.**
> A clean Pythonic interface to interact with Rubika's API — for both **users** and **bots**.
---
### 🚀 Async Example
```python
from rubpy import BotClient
from rubpy.bot import filters
app = BotClient("bot_token")
@app.on_message(filters.private)
async def hello(client, message):
await message.reply("Hello from Rubpy!")
app.run()
```
### 🚀 Async Example
```python
from rubpy import Client, filters
from rubpy.types import Update
bot = Client(name='rubpy')
@bot.on_message_updates(filters.text)
async def updates(update: Update):
print(update)
await update.reply('`hello` __from__ **rubpy**')
bot.run()
```
**Minimal Async:**
```python
from rubpy import Client
import asyncio
async def main():
async with Client(name='rubpy') as bot:
result = await bot.send_message('me', '`hello` __from__ **rubpy**')
print(result)
asyncio.run(main())
```
---
### ⚡ Sync Example
```python
from rubpy import Client
bot = Client('rubpy')
@bot.on_message_updates()
def updates(message):
message.reply('`hello` __from__ **rubpy**')
bot.run()
```
**Minimal Sync:**
```python
from rubpy import Client
with Client(name='rubpy') as client:
result = client.send_message('me', '`hello` __from__ **rubpy**')
print(result)
```
---
### ✨ Why Rubpy?
- 📦 **Ready** — Install with pip and start instantly
- 🧠 **Easy** — Clean, intuitive, and beginner-friendly
- 💅 **Elegant** — Beautifully abstracted low-level details
- 🚀 **Fast** — Powered by high-performance `pycryptodome`
- 🔁 **Async First** — Full async design, with sync support
- 💪 **Powerful** — Everything the official client can do — and more
---
### 📦 Installation
```bash
pip install -U rubpy
```
---
### 📣 Stay Connected
- [Telegram Channel](https://t.me/rubikapy)
- [Project Homepage](https://github.com/shayanheidari01/rubika)
Raw data
{
"_id": null,
"home_page": "https://github.com/shayanheidari01/rubika",
"name": "rubpy",
"maintainer": null,
"docs_url": null,
"requires_python": "~=3.7",
"maintainer_email": null,
"keywords": "rubika, rubpy, chat, bot, robot, asyncio",
"author": "Shayan Heidari",
"author_email": "contact@shayanheidari.info",
"download_url": "https://files.pythonhosted.org/packages/36/93/8165c1e1939d523bfa4af9ad3890cd328d67328a2a251441abc13239370b/rubpy-7.1.13.tar.gz",
"platform": null,
"description": "<p align=\"center\">\r\n <a href=\"https://github.com/shayanheidari01/rubika\">\r\n <img src=\"https://raw.githubusercontent.com/shayanheidari01/rubika/master/icon.png\" width=\"128\" alt=\"Rubpy Logo\" />\r\n </a>\r\n <br><br>\r\n <strong><font size=\"+2\">Rubpy</font></strong><br>\r\n <em>Asynchronous & elegant Python framework for the Rubika API</em>\r\n <br><br>\r\n <a href=\"https://github.com/shayanheidari01/rubika\">\ud83c\udfe0 Homepage</a> \u2022\r\n <a href=\"https://github.com/shayanheidari01/rubika/tree/master/docs\">\ud83d\udcd8 Documentation</a> \u2022\r\n <a href=\"https://pypi.org/project/rubpy/#history\">\ud83d\udce6 Releases</a> \u2022\r\n <a href=\"https://t.me/rubikapy\">\ud83d\uddde News</a>\r\n</p>\r\n\r\n---\r\n\r\n## \ud83c\udf1f Rubpy\r\n\r\n> **Modern. Elegant. Asynchronous.** \r\n> A clean Pythonic interface to interact with Rubika's API \u2014 for both **users** and **bots**.\r\n\r\n---\r\n\r\n### \ud83d\ude80 Async Example\r\n```python\r\nfrom rubpy import BotClient\r\nfrom rubpy.bot import filters\r\n\r\napp = BotClient(\"bot_token\")\r\n\r\n\r\n@app.on_message(filters.private)\r\nasync def hello(client, message):\r\n await message.reply(\"Hello from Rubpy!\")\r\n\r\n\r\napp.run()\r\n```\r\n\r\n### \ud83d\ude80 Async Example\r\n```python\r\nfrom rubpy import Client, filters\r\nfrom rubpy.types import Update\r\n\r\nbot = Client(name='rubpy')\r\n\r\n@bot.on_message_updates(filters.text)\r\nasync def updates(update: Update):\r\n print(update)\r\n await update.reply('`hello` __from__ **rubpy**')\r\n \r\n\r\nbot.run()\r\n```\r\n\r\n**Minimal Async:**\r\n```python\r\nfrom rubpy import Client\r\nimport asyncio\r\n\r\nasync def main():\r\n async with Client(name='rubpy') as bot:\r\n result = await bot.send_message('me', '`hello` __from__ **rubpy**')\r\n print(result)\r\n\r\nasyncio.run(main())\r\n```\r\n\r\n---\r\n\r\n### \u26a1 Sync Example\r\n```python\r\nfrom rubpy import Client\r\n\r\nbot = Client('rubpy')\r\n\r\n@bot.on_message_updates()\r\ndef updates(message):\r\n message.reply('`hello` __from__ **rubpy**')\r\n\r\nbot.run()\r\n```\r\n\r\n**Minimal Sync:**\r\n```python\r\nfrom rubpy import Client\r\n\r\nwith Client(name='rubpy') as client:\r\n result = client.send_message('me', '`hello` __from__ **rubpy**')\r\n print(result)\r\n```\r\n\r\n---\r\n\r\n### \u2728 Why Rubpy?\r\n\r\n- \ud83d\udce6 **Ready** \u2014 Install with pip and start instantly\r\n- \ud83e\udde0 **Easy** \u2014 Clean, intuitive, and beginner-friendly\r\n- \ud83d\udc85 **Elegant** \u2014 Beautifully abstracted low-level details\r\n- \ud83d\ude80 **Fast** \u2014 Powered by high-performance `pycryptodome`\r\n- \ud83d\udd01 **Async First** \u2014 Full async design, with sync support\r\n- \ud83d\udcaa **Powerful** \u2014 Everything the official client can do \u2014 and more\r\n\r\n---\r\n\r\n### \ud83d\udce6 Installation\r\n\r\n```bash\r\npip install -U rubpy\r\n```\r\n\r\n---\r\n\r\n### \ud83d\udce3 Stay Connected\r\n\r\n- [Telegram Channel](https://t.me/rubikapy)\r\n- [Project Homepage](https://github.com/shayanheidari01/rubika)\r\n",
"bugtrack_url": null,
"license": null,
"summary": "A powerful, fast and optimal library for making robots in Rubika with sync and async support.",
"version": "7.1.13",
"project_urls": {
"Homepage": "https://github.com/shayanheidari01/rubika"
},
"split_keywords": [
"rubika",
" rubpy",
" chat",
" bot",
" robot",
" asyncio"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "3699e462a0bedf1c2169be98153141d3ed95fd7bfd5848236e2719a9a7165cfb",
"md5": "42c7747c3f9c944857ef0abefbf3100c",
"sha256": "9c828909affff2b30957dc2fb86114e73184771ab1ec8fd25522ba76a37151c1"
},
"downloads": -1,
"filename": "rubpy-7.1.13-py3-none-any.whl",
"has_sig": false,
"md5_digest": "42c7747c3f9c944857ef0abefbf3100c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "~=3.7",
"size": 163177,
"upload_time": "2025-07-27T13:35:38",
"upload_time_iso_8601": "2025-07-27T13:35:38.991747Z",
"url": "https://files.pythonhosted.org/packages/36/99/e462a0bedf1c2169be98153141d3ed95fd7bfd5848236e2719a9a7165cfb/rubpy-7.1.13-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "36938165c1e1939d523bfa4af9ad3890cd328d67328a2a251441abc13239370b",
"md5": "6e8da1b5e8f5620e5e48f00276ac8c8d",
"sha256": "b5517b6a70d5cc24ae3fb041be68bd68dd1662a58b46d919ded1316e76191c00"
},
"downloads": -1,
"filename": "rubpy-7.1.13.tar.gz",
"has_sig": false,
"md5_digest": "6e8da1b5e8f5620e5e48f00276ac8c8d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "~=3.7",
"size": 89285,
"upload_time": "2025-07-27T13:35:40",
"upload_time_iso_8601": "2025-07-27T13:35:40.429879Z",
"url": "https://files.pythonhosted.org/packages/36/93/8165c1e1939d523bfa4af9ad3890cd328d67328a2a251441abc13239370b/rubpy-7.1.13.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-27 13:35:40",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "shayanheidari01",
"github_project": "rubika",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "rubpy"
}