Skip to main content

The fastest library for writing Rubika messenger bots both synchronously and asynchronously ⚡

Project description

Fast Rub

Fast Rub ⚡

سریع‌ترین کتابخانهٔ ساخت ربات روبیکا برای پایتون

PyPI Python License


✨ ویژگی‌های کلیدی

  • سرعت بالا — استفاده از 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")

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

    await bot.start()
    
    @bot.on_button()
    async def button_click(msg: UpdateButton):
        await msg.send_text(f"دکمهٔ {msg.button_id} فشرده شد")
    
    await bot.run()

asyncio.run(main())

🧠 مدیریت هوشمند ترافیک (WaitManager)

یکی از قدرتمندترین بخش‌های فست روب WaitManager است. این ماژول با ردیابی تعداد درخواست‌های شما در کانال‌های جداگانه (ارسال، بن، فوروارد، آپلود و...) و در بازه‌های زمانی مشخص، به‌صورت خودکار فاصلهٔ زمانی مورد نیاز قبل از هر درخواست را محاسبه می‌کند تا ربات شما بدون برخورد با محدودیت نرخ روبیکا، با حداکثر سرعت ایمن کار کند.

یک مثال ساده

from fast_rub 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/         # یوزر بات (fork از کتابخانهٔ pyrubi)
├── types/          # تایپ‌های Update، Message، Button و...
├── utils/          # WaitManager، فیلترها، کش، لاگر و...
├── db/             # رابط پایگاه داده
├── button/         # ابزار ساخت کیبورد
└── network/        # تنظیمات شبکه و HTTP

📚 مستندات کامل

· مستندات رسمی - سایت اصلی · مستندات رسمی - گیتهاب

· گیت‌هاب

· صفحهٔ PyPI


⚠️ نکته

بخش pyrubi در این کتابخانه، فورکی از پروژهٔ AliGanji1/pyrubi است که برای قسمت یوزر بات این پروژه استفاده شده


ساخته‌شده با ❤️ توسط سید محمد حسین موسوی رجا - OandONE

Project details


Release history Release notifications | RSS feed

This version

5.0.8

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastrub-5.0.8.tar.gz (110.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastrub-5.0.8-py3-none-any.whl (127.3 kB view details)

Uploaded Python 3

File details

Details for the file fastrub-5.0.8.tar.gz.

File metadata

  • Download URL: fastrub-5.0.8.tar.gz
  • Upload date:
  • Size: 110.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for fastrub-5.0.8.tar.gz
Algorithm Hash digest
SHA256 85af7a4c94bfe218aa8743164a7927e2fdc3a34ec6d252d4bce4ffa7069ca4f5
MD5 f4941d40b382054aced56590de26377b
BLAKE2b-256 4be5fbe1e9bbda580c9e0a2fb2e6a183cd76643c68020573abd8e51f733bd3fb

See more details on using hashes here.

File details

Details for the file fastrub-5.0.8-py3-none-any.whl.

File metadata

  • Download URL: fastrub-5.0.8-py3-none-any.whl
  • Upload date:
  • Size: 127.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for fastrub-5.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 8c81b73d8d05344a605521fda6bba2e877ccbf6727f9ef14fa197b40d41c7ba1
MD5 21563ef0bac42d69c135b3e117ccc794
BLAKE2b-256 469da55aa2220489ca7405b70ada7e5a2aa2f53bdd55f3cca49e77a32fc3b60a

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