راهنمای کامل، قدم به قدم و بهروز
پلاگینها به شما اجازه میدهند بدون دست زدن به کد اصلی کتابخانه Rubka، قابلیتهای جدید اضافه کنید. مثلاً:
مزیت بزرگ: هر توسعهدهنده میتواند پلاگین خودش را بسازد و در PyPI منتشر کند تا هزاران نفر دیگر بدون نیاز به کپی-پیست کد، فقط با یک pip install از آن استفاده کنند.
پوشه پروژه شما باید حداقل این شکل باشد:
rubka-awesome-plugin/ # نام دلخواه
├── pyproject.toml
└── rubka_awesome_plugin/ # نام پکیج باید با rubka_ شروع شود (بهتر دیده شود)
├── __init__.py # میتواند خالی باشد
└── plugin.py # مهمترین فایل — اینجا منطق پلاگین نوشته میشود
اینجا قلب پلاگین شماست. میتوانید handlerهای پیام، فیلترها، state و هر چیز دیگری اضافه کنید.
# rubka_awesome_plugin/plugin.py
from rubka import Router, filters
router = Router(prefix="!") # همه دستورات با ! شروع میشوند (اختیاری)
@router.message(filters.command("hello"))
async def cmd_hello(bot, update):
"""دستور ساده !hello"""
user = update.get("from_user", {}).get("first_name", "دوست عزیز")
await bot.send_message(
chat_id=update["chat_id"],
text=f"سلام {user} جان! پلاگین من داره کار میکنه 🚀",
reply_to_message_id=update.get("message_id")
)
@router.message(filters.regex(r"(?i)خوب|عالی|خوبه"))
async def react_positive(bot, update):
await bot.send_message(
chat_id=update["chat_id"],
text="مرسی که خوب هستی 😊",
reply_to_message_id=update.get("message_id")
)
def register(bot):
"""این تابع توسط کتابخانه Rubka فراخوانی میشود"""
bot.router.include_router(router)
# اگر میخواهید پیام خوشآمدگویی یا لاگ بزنید:
# print("پلاگین Awesome Plugin لود شد!")
این فایل به pip و PyPI میگوید پروژه شما چیست و چگونه ثبت شود.
[project]
name = "rubka-awesome-plugin"
version = "0.1.0"
description = "پلاگین سلام و واکنش مثبت برای باتهای Rubka"
readme = "README.md"
requires-python = ">=3.8"
dependencies = [
"rubka>=7.5.0",
]
[project.entry-points."rubka.plugins"]
"awesome-plugin" = "rubka_awesome_plugin.plugin:register"
این دستورات را در ترمینال (داخل پوشه پروژه) اجرا کنید:
# نصب ابزارهای لازم (فقط یک بار)
pip install --upgrade build twine
# ساخت فایلهای توزیع
python -m build
# آپلود به PyPI (اولین بار باید توکن بگیرید)
twine upload dist/*
# نصب پلاگین دلخواه
pip install rubka-awesome-plugin
# یا اگر هنوز در PyPI نیست و در گیتهاب است
pip install git+https://github.com/username/rubka-awesome-plugin.git
دو روش اصلی وجود دارد:
from rubka import Robot
bot = Robot(token="u0YourBotTokenHere...")
# روش ۱ — توصیهشده — لود خودکار همه پلاگینهای نصبشده
bot.auto_load_plugins()
# روش ۲ — لود دستی (اگر فقط یک یا دو پلاگین میخواهید)
# bot.load_plugin("rubka-awesome-plugin")
# حالا بات را اجرا کنید
bot.run()
auto_load_plugins() استفاده کنید، هر پلاگینی که با گروه rubka.plugins در PyPI منتشر شده باشد، خودکار شناسایی و لود میشود.
اگر پلاگین بالا را نصب کرده باشید، حالا میتوانید در چت این دستورات را امتحان کنید:
!hello → جواب سلام میدهد۱. مطمئن شوید نام پکیج درست وارد شده
۲. چک کنید که پکیج واقعاً نصب شده (pip show rubka-awesome-plugin)
۳. مطمئن شوید تابع register در plugin.py وجود دارد
بله، کاملاً! میتوانید دهها پلاگین نصب کنید و همه با auto_load_plugins() لود شوند.
اگر دو پلاگین روی یک دستور یا regex کار کنند، اولی که لود شده اولویت دارد. بهتر است از prefix متفاوت استفاده کنید (مثلاً ! و # یا / و .)