The fastest library for writing Rubika messenger bots both synchronously and asynchronously ⚡
Project description
Fast Rub ⚡
سریعترین کتابخانهٔ ساخت ربات روبیکا برای پایتون
✨ ویژگیهای کلیدی
- ⚡ سرعت بالا — استفاده از
httpxبا HTTP/2 و معماری غیرهمزمان (async) - 🧠 WaitManager — مدیریت هوشمند ترافیک برای جلوگیری از برخورد با محدودیت نرخ روبیکا
- 🔍 بیش از ۲۰۰ فیلتر — آماده برای پیام، دکمه، فرستنده، نوع چت و...
- 💬 مکالمهٔ چندمرحلهای — بدون درگیری با منطق پیچیده
- 🪶 فوقالعاده سبک — کاملا بهینه شده
- 🔌 Middleware و افزونهپذیری — معماری قابل توسعه
📥 نصب
pip install fastrub
در صورت قطع شدن میرور اصلی PyPI:
pip install -i https://mirror-pypi.runflare.com/simple fastrub
🚀 شروع سریع
دریافت پیامها - پولینگ
import asyncio
from fast_rub import Client, filters
from fast_rub.types import Update
async def main():
bot = Client("my_bot", run_start=False)
await bot.start()
@bot.on_message(filters.text("سلام"))
async def say_hello(msg: Update):
await msg.reply("**سلام** از طرف فست روب ⚡")
await bot.run()
asyncio.run(main())
کلیک روی دکمههای inline
import asyncio
from fast_rub import Client
from fast_rub.types import UpdateButton
async def main():
bot = Client("my_bot")
@bot.on_button()
async def button_click(msg: UpdateButton):
await msg.send_text(f"دکمهٔ {msg.button_id} فشرده شد")
await bot.start()
await bot.run()
asyncio.run(main())
🧠 مدیریت هوشمند ترافیک (WaitManager)
یکی از قدرتمندترین بخشهای فست روب WaitManager است. این ماژول با ردیابی تعداد درخواستهای شما در کانالهای جداگانه (ارسال، بن، فوروارد، آپلود و...) و در بازههای زمانی مشخص، بهصورت خودکار فاصلهٔ زمانی مورد نیاز قبل از هر درخواست را محاسبه میکند تا ربات شما بدون برخورد با محدودیت نرخ روبیکا، با حداکثر سرعت ایمن کار کند.
یک مثال ساده
from fast_rub.utils import WaitManager
# تنظیم پارامترهای ترافیک
wm = WaitManager(
low_traffic=60, # ترافیک کم: تا ۶۰ درخواست در هر پنجرهٔ زمانی
medium_traffic=100, # ترافیک متوسط: ۶۰ تا ۱۰۰ درخواست
low_wait=0.0, # بدون تأخیر در ترافیک کم
medium_wait=1.0, # یک ثانیه تأخیر در ترافیک متوسط
high_wait=3.0, # سه ثانیه تأخیر در ترافیک بالا
time_window=60.0, # اندازهٔ پنجرهٔ زمانی (ثانیه)
per_chat=True, # محاسبه بهازای هر چت
)
# قبل از ارسال پیام، تأخیر لازم را بگیرید
delay = wm.get_time(channel="sending", chat_id=chat_id)
await asyncio.sleep(delay)
# پس از ارسال، ترافیک را ثبت کنید
wm.add_traffic(channel="sending", chat_id=chat_id)
کانالهای قابل ردیابی
میتوانید برای هر نوع عملیات یک کانال جداگانه تعریف کنید:
· sending (ارسال پیام) · banning (اخراج) · forwarding (بازنشر) · uploading (آپلود) · editing (ویرایش) · deleting (حذف)
⌨️ ساختن کیبورد
کیبورد معمولی (Reply)
from fast_rub.button import KeyPad
keypad = KeyPad()
keypad.append(keypad.simple("btn_1", "دکمه یک"))
keypad.append(keypad.simple("btn_2", "دکمه دو"), keypad.simple("btn_3", "دکمه سه"))
await msg.reply("لطفاً انتخاب کنید:", keypad=keypad.build())
کیبورد شیشهای (Inline)
keypad.append(keypad.simple("callback_1", "کلیک کن"))
await msg.reply("انتخاب کنید:", inline_keypad=keypad.build())
🔍 فیلترها
فست روب با بیش از ۲۰۰ فیلتر آماده ارائه میشود:
from fast_rub import filters
@bot.on_message(filters.text("تست"))
async def handler(msg: Update):
...
ترکیب فیلترها:
· filters.and_filter(f1, f2) — هر دو شرط برقرار باشد · filters.or_filter(f1, f2) — حداقل یکی برقرار باشد · filters.not_filter(f1) — شرط برقرار نباشد
فیلتر سفارشی
class MyFilter(filters.Filter):
def __call__(self, update: Update) -> bool:
return "خاص" in update.text
@bot.on_message(MyFilter())
async def handler(msg: Update):
...
📁 ساختار پروژه
fast_rub/
├── core/ # هستهٔ فریمورک (کلاینت، میدلور، پلاگینها و...)
├── pyrubi/ # لایهٔ ارتباط با API روبیکا (fork از کتابخانهٔ pyrubi)
├── types/ # تایپهای Update، Message، Button و...
├── utils/ # WaitManager، فیلترها، کش، لاگر و...
├── db/ # رابط پایگاه داده
├── button/ # ابزار ساخت کیبورد
└── network/ # تنظیمات شبکه و HTTP
📚 مستندات کامل
· مستندات رسمی · گیتهاب · صفحهٔ PyPI
⚠️ نکته
بخش pyrubi در این کتابخانه، فورکی از پروژهٔ AliGanji1/pyrubi است. فست روب لایهٔ فریمورکی (WaitManager، فیلترها، مکالمه، میدلور و...) را به آن اضافه کرده است.
ساختهشده با ❤️ توسط سید محمد حسین موسوی
```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 fastrub-5.0.0.tar.gz.
File metadata
- Download URL: fastrub-5.0.0.tar.gz
- Upload date:
- Size: 109.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a204e4c133756a594cf36b58af39130dab9101d664b46bc1fe45a81680392b22
|
|
| MD5 |
4c96c1f37cf59f2f73f21f15949a8e90
|
|
| BLAKE2b-256 |
28711da8735d84ad3efe3909bfc0558e8286a40dbfec36c6304c7fa13bf5818d
|
File details
Details for the file fastrub-5.0.0-py3-none-any.whl.
File metadata
- Download URL: fastrub-5.0.0-py3-none-any.whl
- Upload date:
- Size: 127.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
add399bba28bb658feb5341555c925c3d6cca4cfb8e250574872d27c7fba5d91
|
|
| MD5 |
35bc23e319d18866245664380fc36d89
|
|
| BLAKE2b-256 |
b6a4652f326e7a1739a84ca989df6908f6502f1534926eab0f27ce2668c687c5
|