ساخت ربات روبیکا از مسیر رسمی بات @BotFather آغاز می شود. ابتدا یک بات ایجاد کرده و توکن دسترسی آن را دریافت می کنید؛ سپس با استفاده از API رسمی روبیکا، منطق ربات، دستورها، پیام های خودکار و نحوه پاسخ به کاربران را برنامه نویسی خواهید کرد. برای شروع می توانید از زبان پایتون و متد getUpdates استفاده کنید و در صورت نیاز به اجرای دائمی، ربات را روی یک سرور یا سرویس همیشه روشن مستقر کنید.
BotFather فقط حساب بات، نام کاربری و توکن را ایجاد میکند و بهتنهایی ربات پاسخگو یا پنل مدیریت نمیسازد. برای راهاندازی کامل ربات باید توکن را با متد getMe آزمایش کنید، پیامها را از طریق getUpdates یا Webhook دریافت کرده و پاسخها را با متدهایی مانند sendMessage ارسال کنید.
مشورت، مالک، نماینده یا پشتیبان رسمی روبیکا نیست. ایجاد بات، دریافت توکن و استفاده از Bot API باید بر اساس مستندات و سرویس های رسمی روبیکا انجام شود و منابع رسمی، مرجع نهایی این فرایند هستند.
انتخاب روش ساخت ربات روبیکا
ساخت ربات روبیکا به دو روش اصلی انجام میشود: استفاده از رباتسازهای بدون کدنویسی یا برنامهنویسی مستقیم با Bot API رسمی روبیکا. انتخاب روش مناسب به امکانات موردنیاز، دانش فنی، بودجه و میزان کنترلی بستگی دارد که میخواهید روی پیامهای خودکار، دستورهای ربات، اطلاعات کاربران و پنل مدیریت داشته باشید.
| روش ساخت ربات | مناسب برای | نیاز اصلی | محدودیت |
|---|---|---|---|
| رباتساز بدون برنامهنویسی | منوی ساده، پیام خوشآمدگویی و پاسخ خودکار | ساخت بات و دریافت توکن از BotFather | وابستگی به پنل شخص ثالث و محدودیت در شخصیسازی |
| برنامهنویسی با Bot API | ربات اختصاصی، اتصال به پایگاه داده و اجرای منطق سفارشی | دانش برنامهنویسی، توکن ربات و محیط اجرای دائمی | نیاز به توسعه، آزمایش و نگهداری فنی |
اگر فقط به پاسخهای آماده، منوی ساده و چند دستور محدود نیاز دارید، رباتساز میتواند مسیر سریعتری باشد. برای اتصال به پایگاه داده، اجرای دستورهای اختصاصی، پردازش اطلاعات یا طراحی پنل مدیریت مستقل، ساخت ربات روبیکا با پایتون و Bot API انتخاب مناسبتری است. در هر دو روش، اولین اقدام ایجاد بات در BotFather و دریافت توکن محرمانه آن است.
اگر قصد دارید وضعیت ربات، پیامها یا عملکرد حساب را از طریق مرورگر بررسی کنید، استفاده از روبیکا وب میتواند مسیر مکملی در کنار نسخه موبایل باشد.
ساخت ربات روبیکا و دریافت توکن از BotFather
ساخت حساب ربات روبیکا و دریافت توکن از طریق BotFather رسمی این پیامرسان انجام میشود. در این مرحله فقط حساب بات، نام کاربری و توکن دسترسی ایجاد میشوند؛ پاسخهای خودکار، دستورها، منوها و سایر قابلیتهای ربات باید در مرحله بعد با برنامهنویسی Bot API یا یک رباتساز سازگار پیادهسازی شوند.
برای جلوگیری از ورود به حسابهای مشابه، بهتر است BotFather را از مسیر رسمی مدیریت باتهای روبیکا باز کنید و فقط مطابق گزینههایی که همان بات نمایش میدهد پیش بروید.
- مرحله اول: وارد BotFather رسمی روبیکا شوید و دکمه شروع را انتخاب کنید.

- مرحله دوم: گزینه مربوط به ایجاد بات جدید را از فهرست مدیریت باتها انتخاب کنید.

- مرحله سوم: نام نمایشی ربات را وارد کنید. این نام در پروفایل بات به کاربران نشان داده میشود.

- مرحله چهارم: نام کاربری موردنظر را مطابق الگوی نمایشدادهشده در BotFather ثبت کنید. اگر نام قبلاً استفاده شده یا معتبر نباشد، باید نام دیگری انتخاب کنید.

- مرحله پنجم: پس از ایجاد بات، توکن اختصاصی نمایشدادهشده را کپی و در محل امن ذخیره کنید.

- مرحله ششم: پیش از نوشتن منطق ربات، توکن را با متد
getMeآزمایش کنید تا از ایجاد صحیح بات و اتصال به Bot API مطمئن شوید.

توکن در تمام درخواستهای Bot API برای شناسایی ربات استفاده میشود. قالب پایه آدرس درخواستها به شکل زیر است و باید مقدار {token} و {method} با توکن و نام متد موردنظر جایگزین شوند:
https://botapi.rubika.ir/v3/{token}/{method}هشدار: توکن نقش کلید دسترسی ربات را دارد. آن را داخل تصاویر آموزشی، پیامهای عمومی، کانال، گروه یا کدهای منتشرشده قرار ندهید.
آزمایش توکن ربات روبیکا با getMe
متد getMe برای آزمایش توکن و دریافت اطلاعات پایه ربات استفاده میشود. این متد ورودی جداگانهای ندارد و فقط کافی است توکن را در آدرس درخواست قرار دهید. اگر پاسخ معتبر شامل اطلاعات بات برگردانده شود، توکن و مسیر اتصال به API درست هستند.
در دستور زیر، عبارت YOUR_BOT_TOKEN را با توکن واقعی ربات جایگزین کنید:
curl -X POST "https://botapi.rubika.ir/v3/YOUR_BOT_TOKEN/getMe"در صورت موفقیت درخواست، پاسخ متد شامل اطلاعاتی مانند شناسه ربات، عنوان، نام کاربری، توضیحات یا لینک اشتراکگذاری آن خواهد بود. این نتیجه فقط صحت توکن و اتصال اولیه را نشان میدهد و به معنی فعال شدن پاسخهای خودکار ربات نیست.
| نتیجه آزمایش | مورد قابل بررسی |
|---|---|
| اطلاعات بات نمایش داده میشود | توکن و آدرس درخواست معتبر هستند |
| خطای دسترسی یا توکن دریافت میشود | توکن ناقص، اشتباه یا دارای فاصله اضافی است |
| پاسخی از API دریافت نمیشود | اتصال اینترنت، آدرس نسخه v3 و دسترسی شبکه بررسی شود |
| صفحه یا پاسخ نامرتبط نمایش داده میشود | نام متد باید دقیقاً به شکل getMe نوشته شود |
bot_id، bot_title یا username نمایش داده شود، میتوانید وارد مرحله دریافت پیامها شوید.پیدا کردن chat_id ربات روبیکا با getUpdates

برای ارسال پاسخ با متد sendMessage باید شناسه گفتوگوی مقصد یا همان chat_id را داشته باشید. این شناسه بعد از ارسال یک پیام به ربات، از خروجی متد getUpdates قابل دریافت است.
ابتدا وارد صفحه ربات شوید، دکمه شروع را بزنید یا پیامی مانند «سلام» برای آن بفرستید. سپس درخواست زیر را اجرا کنید:
curl --location --request POST "https://botapi.rubika.ir/v3/YOUR_BOT_TOKEN/getUpdates" \--header "Content-Type: application/json" \--data-raw '{ "limit": 10}'پس از دریافت پاسخ، آرایه
updates را بررسی کنید. در رویداد مربوط به پیام جدید، مقدار chat_id در سطح اصلی Update قرار دارد و اطلاعات پیام ارسالشده نیز در فیلد new_message نمایش داده میشود.
- یک پیام آزمایشی برای ربات ارسال کنید.
- متد
getUpdatesرا با توکن همان ربات اجرا کنید. - در آرایه
updatesرویداد مربوط به پیام جدید را پیدا کنید. - مقدار مقابل فیلد
chat_idرا کپی کنید. - این شناسه را برای ارسال پاسخ آزمایشی در متد
sendMessageاستفاده کنید.
برای اینکه رویدادهای قبلی دوباره دریافت و پردازش نشوند، مقدار next_offset_id پاسخ را در درخواست بعدی داخل فیلد offset_id قرار دهید:
curl --location --request POST "https://botapi.rubika.ir/v3/YOUR_BOT_TOKEN/getUpdates" \--header "Content-Type: application/json" \--data-raw '{ "limit": 10, "offset_id": "NEXT_OFFSET_ID"}'getUpdates، عبارت offset_id است. مقدار next_offset_id پاسخ قبلی باید در همین فیلد درخواست بعدی قرار بگیرد.شناسه گفتوگوی خصوصی، گروه و کانال یکسان نیست. برای ارسال پیام در هر فضای جدید باید
chat_idمربوط به همان گفتوگو را از رویدادهای ربات دریافت کنید.
نگهداری امن توکن ربات روبیکا
توکن، درخواستهای برنامه را به حساب ربات متصل میکند؛ بنابراین نباید مانند یک شناسه عمومی با آن رفتار شود. شخص یا سرویسی که به توکن دسترسی داشته باشد، ممکن است بتواند از طرف ربات به Bot API درخواست ارسال کند.
برای کاهش خطر دسترسی غیرمجاز، این موارد را رعایت کنید:
- توکن را داخل فایلهای عمومی، کانال، گروه یا تصاویر آموزشی منتشر نکنید.
- در نمونه کدهای مقاله و آموزش، همیشه از مقدارهایی مانند
YOUR_BOT_TOKENاستفاده کنید. - توکن واقعی را در مخزن عمومی GitHub یا فایل قابل دانلود قرار ندهید.
- در پروژههای پایتون، توکن را داخل متغیر محیطی نگهداری کنید و مستقیماً در فایل اصلی کد ننویسید.
- توکن را فقط در رباتساز یا پنلی وارد کنید که مالک، شرایط استفاده و شیوه نگهداری اطلاعات آن را بررسی کردهاید.
- فایلهای گزارش خطا را کنترل کنید تا آدرس کامل API و توکن در آنها ثبت نشود.
- دسترسی به سرور، پایگاه داده و پنل مدیریت ربات را از دسترسی توکن جدا نگه دارید.
نمونه مناسب برای خواندن توکن از متغیر محیطی در پایتون:
import osTOKEN = os.getenv("RUBIKA_BOT_TOKEN")if not TOKEN: raise RuntimeError( "متغیر محیطی RUBIKA_BOT_TOKEN تنظیم نشده است." )اگر توکن افشا شد: آن را از کد، مخزن عمومی، تصویر یا پنل شخص ثالث حذف کنید و از طریق BotFather رسمی، وضعیت توکن و امکان صدور توکن جدید را بررسی کنید. تا پیش از ایمنسازی مجدد، توکن افشاشده را محرمانه و قابل اعتماد فرض نکنید.
آموزش ربات سازی روبیکا بدون برنامهنویسی
ساخت ربات روبیکا بدون برنامهنویسی زمانی امکانپذیر است که پس از ایجاد بات و دریافت توکن از BotFather، آن را به یک پنل رباتساز سازگار متصل کنید. در این روش نیازی به نوشتن کد پایتون یا کار مستقیم با متدهای API ندارید و تنظیماتی مانند منوی دکمهای، پیام خوشآمدگویی، پاسخ خودکار و دستورهای ساده از داخل پنل انجام میشوند.
رباتسازها سرویسهای شخص ثالث هستند و نباید آنها را با BotFather رسمی روبیکا یکسان دانست. BotFather فقط حساب بات، نام کاربری و توکن را در اختیار شما قرار میدهد؛ اما منطق پاسخگویی، منوها، فرمها و پنل مدیریت باید در رباتساز یا کد اختصاصی پیادهسازی شوند.
هشدار امنیتی: توکن ربات مانند رمز دسترسی است. وارد کردن آن در یک رباتساز به آن سرویس اجازه میدهد از طرف بات به Bot API درخواست ارسال کند؛ بنابراین فقط از پنلی استفاده کنید که مالک، شرایط استفاده، نحوه نگهداری توکن و امکان قطع دسترسی آن مشخص باشد.
مراحل اتصال بات روبیکا به رباتساز:
- مرحله اول: پس از ساخت بات در BotFather، توکن اختصاصی آن را کپی و در محل امن ذخیره کنید.

- مرحله دوم: یک پنل رباتساز سازگار با Bot API روبیکا انتخاب کنید. پیش از ثبتنام، امکانات پنل، هزینهها، محدودیت تعداد پیام و شرایط نگهداری اطلاعات را بررسی کنید.

- مرحله سوم: در پنل رباتساز حساب کاربری ایجاد کرده و گزینه افزودن یا اتصال ربات جدید را انتخاب کنید.

- مرحله چهارم: توکن دریافتی از BotFather را در کادر مربوط وارد کنید. توکن را در بخش توضیحات، نام ربات یا قسمتهای عمومی پنل قرار ندهید.

- مرحله پنجم: منوی اصلی، پیام خوشآمدگویی، پاسخ کلمات کلیدی و دستورهای موردنیاز را از طریق پنل تنظیم کنید.

- مرحله ششم: ربات را در یک گفتوگوی آزمایشی اجرا کنید و عملکرد دکمهها، دستورها و پیامهای خودکار را بررسی کنید.

قابلیتهای معمول رباتسازهای روبیکا
بسته به پنل انتخابشده، ممکن است امکانات زیر در دسترس باشند:
- ارسال پیام خوشآمدگویی بعد از شروع ربات
- ساخت منوی دکمهای و زیرمنو
- تعریف پاسخ خودکار برای کلمات یا دستورهای مشخص
- دریافت نام، شماره تماس یا اطلاعات اولیه کاربر
- ارسال پیام همگانی به کاربران ربات
- مشاهده تعداد کاربران یا گزارشهای ساده
- تغییر متن پیامها از طریق پنل مدیریت
امکانات همه رباتسازها یکسان نیست. ممکن است قابلیتهایی مانند پیام همگانی، فرم پیشرفته، اتصال به درگاه پرداخت، خروجی اطلاعات یا مدیریت چند ربات فقط در نسخه پولی ارائه شوند. پیش از وارد کردن توکن، مطمئن شوید پنل واقعاً از Bot API رسمی روبیکا پشتیبانی میکند و برای اتصال، شماره همراه، رمز حساب شخصی یا اطلاعات نشست روبیکا را درخواست نمیکند.
رباتساز برای راهاندازی سریع یک ربات ساده مناسب است؛ اما کنترل شما به امکانات و محدودیتهای همان سرویس وابسته خواهد بود. اگر ربات باید اطلاعات را در پایگاه داده ذخیره کند، به سامانه دیگری متصل شود، دستورات اختصاصی اجرا کند یا منطق متفاوتی برای هر کاربر داشته باشد، ساخت ربات روبیکا با پایتون و Bot API مسیر کاملتری است.
اگر فقط به قابلیتهای آماده برای مدیریت گروه نیاز دارید و قصد ساخت بات اختصاصی ندارید، امکانات ربات توکان روبیکا میتواند مسیر متفاوتی باشد. توکان یک ربات آماده مدیریت گروه است و با ساخت ربات اختصاصی و دریافت توکن Bot API یکسان نیست.
در صورت قطع همکاری با رباتساز: ابتدا اتصال ربات را در پنل حذف کنید و سپس از طریق BotFather رسمی، وضعیت توکن و امکان صدور توکن جدید را بررسی کنید. حذف حساب پنل لزوماً به معنی بیاعتبار شدن توکنی نیست که قبلاً در اختیار آن سرویس قرار گرفته است.
ساخت ربات روبیکا با پایتون و API رسمی
ساخت ربات روبیکا با پایتون به این صورت انجام میشود که برنامه، پیامها و رویدادهای جدید را با متد getUpdates دریافت میکند و پاسخ موردنظر را با متد sendMessage به همان chat_id میفرستد. این روش برای رباتهایی مناسب است که باید دستورهای اختصاصی، پاسخ خودکار، اتصال به پایگاه داده یا منطق متفاوت برای هر کاربر داشته باشند.
برنامهنویسی مستقیم برای رباتهایی مناسبتر است که باید منطق اختصاصی داشته باشند یا اطلاعات کاربران و عملیات ربات را بهصورت مستقل مدیریت کنند. در مقابل، اجرای دائمی آن به یک سرور یا سیستم همیشه روشن و رسیدگی به خطاهای فنی نیاز دارد.
نمونه این بخش از روش Long Polling استفاده میکند؛ یعنی برنامه در فاصلههای زمانی مشخص، API روبیکا را برای دریافت پیام جدید بررسی میکند. برای اجرای دائمی نیز فایل پایتون باید روی یک سرور یا سیستم همیشه روشن فعال بماند.
ابزارهای لازم برای اجرای ربات
پیش از اجرای کد، این موارد را آماده کنید:
- Python 3 روی کامپیوتر یا سرور نصب شده باشد.
- توکن ربات را از BotFather رسمی دریافت کرده باشید.
- کتابخانه
requestsبرای ارسال درخواستهای HTTP نصب شده باشد. - اتصال اینترنت هنگام اجرای ربات برقرار باشد.
- برای فعالیت دائمی، سرور یا سیستم همیشه روشن در دسترس باشد.
برای بررسی نصب بودن پایتون، دستور زیر را در Terminal، PowerShell یا Command Prompt اجرا کنید:
python --versionاگر در سیستم شما دستور
python شناخته نشد، این دستور را آزمایش کنید:python3 --versionسپس کتابخانه
requests را نصب کنید:pip install requestsدر بعضی سیستمها لازم است از این دستور استفاده شود:
pip3 install requestsساخت فایل ربات روبیکا با پایتون
یک فایل جدید با نام bot.py ایجاد کنید و کد زیر را داخل آن قرار دهید. این ربات به دستورهای /start و /help و همچنین پیام «سلام» پاسخ میدهد.
import osimport timeimport requestsTOKEN = os.getenv("RUBIKA_BOT_TOKEN")if not TOKEN: raise RuntimeError( "متغیر محیطی RUBIKA_BOT_TOKEN تنظیم نشده است." )BASE_URL = f"https://botapi.rubika.ir/v3/{TOKEN}"session = requests.Session()def call_api(method, payload=None): """ارسال درخواست به Bot API روبیکا.""" response = session.post( f"{BASE_URL}/{method}", json=payload or {}, timeout=30, ) response.raise_for_status() body = response.json() # پشتیبانی از پاسخ مستقیم یا پاسخ دارای فیلد data if isinstance(body, dict): data = body.get("data") if isinstance(data, dict): return data return body raise ValueError("ساختار پاسخ دریافتی از API معتبر نیست.")def send_message(chat_id, text): """ارسال پیام متنی به کاربر.""" call_api( "sendMessage", { "chat_id": str(chat_id), "text": text, }, )def create_reply(event_type, text): """تعیین پاسخ متناسب با رویداد یا پیام کاربر.""" text = text.strip() if event_type == "StartedBot" or text == "/start": return ( "سلام! ربات با موفقیت فعال شد.\n" "برای مشاهده راهنما، دستور /help را ارسال کنید." ) if text == "/help": return ( "دستورهای قابل استفاده:\n" "/start شروع کار با ربات\n" "/help نمایش راهنمای ربات" ) if text == "سلام": return "سلام! پیام شما دریافت شد." if text: return f"پیام شما دریافت شد: {text}" return Nonedef run_bot(): """دریافت مداوم پیامها با روش Long Polling.""" offset_id = None print("ربات در حال اجراست...") while True: try: payload = { "limit": 10, } if offset_id: payload["offset_id"] = offset_id result = call_api("getUpdates", payload) updates = result.get("updates", []) if not isinstance(updates, list): raise ValueError( "فیلد updates در پاسخ API معتبر نیست." ) for update in updates: if not isinstance(update, dict): continue event_type = update.get("type", "") chat_id = update.get("chat_id") message = update.get("new_message") or {} if not isinstance(message, dict): message = {} # جلوگیری از پاسخ دادن ربات به پیام خودش if message.get("sender_type") == "Bot": continue text = message.get("text") or "" if not chat_id: continue reply = create_reply(event_type, text) if reply: send_message(chat_id, reply) next_offset_id = result.get("next_offset_id") if next_offset_id: offset_id = str(next_offset_id) time.sleep(2) except requests.RequestException as error: print(f"خطای ارتباط با Bot API: {error}") time.sleep(5) except (TypeError, ValueError) as error: print(f"خطا در پردازش پاسخ API: {error}") time.sleep(5)if __name__ == "__main__": run_bot()این کد چهار کار اصلی انجام میدهد:
- توکن ربات را از متغیر محیطی دریافت میکند.
- پیامهای جدید را با متد
getUpdatesمیخواند. - نوع رویداد، متن پیام و
chat_idرا از هر Update استخراج میکند. - پاسخ مناسب را با متد
sendMessageبه همان گفتوگو میفرستد.
next_offset_id پاسخ قبلی در درخواست بعدی داخل فیلد offset_id قرار میگیرد. این کار مانع دریافت و پردازش دوباره پیامهای قبلی میشود.قرار دادن توکن ربات در متغیر محیطی
توکن واقعی را مستقیماً داخل فایل bot.py ننویسید. نگهداری توکن در متغیر محیطی، خطر انتشار ناخواسته آن همراه با فایل کد یا مخزن عمومی را کاهش میدهد.
در PowerShell ویندوز، توکن را با دستور زیر تنظیم کنید:
$env:RUBIKA_BOT_TOKEN="YOUR_BOT_TOKEN"سپس فایل ربات را اجرا کنید:
python bot.pyدر لینوکس یا macOS از این دستورات استفاده کنید:
export RUBIKA_BOT_TOKEN="YOUR_BOT_TOKEN"python3 bot.pyعبارت
YOUR_BOT_TOKEN را با توکن واقعی دریافتی از BotFather جایگزین کنید. هنگام وارد کردن توکن، ابتدا یا انتهای آن نباید فاصله اضافی وجود داشته باشد.
هشدار امنیتی: توکن واقعی را در تصویر آموزشی، کانال، گروه، مخزن عمومی GitHub یا فایل قابل دانلود قرار ندهید. هر شخص یا سرویسی که توکن را در اختیار داشته باشد، ممکن است بتواند از طرف ربات درخواست API ارسال کند.
آزمایش عملکرد ربات پایتون
پس از اجرای فایل، پیام ربات در حال اجراست... باید در محیط ترمینال نمایش داده شود. سپس وارد صفحه ربات در روبیکا شوید و یکی از پیامهای زیر را ارسال کنید:
| پیام ارسالی | پاسخ مورد انتظار ربات |
|---|---|
/start |
نمایش پیام شروع و معرفی دستور راهنما |
/help |
نمایش فهرست دستورهای ربات |
| سلام | نمایش پیام «سلام! پیام شما دریافت شد.» |
| هر متن دیگر | تکرار متن همراه با پیام تأیید دریافت |
getUpdates و ارسال پاسخ با sendMessage بهدرستی انجام شده است.اگر اطلاعات ربات با getMe نمایش داده میشود اما ربات پاسخ نمیدهد، این موارد را بررسی کنید:
- فایل
bot.pyهمچنان در حال اجرا باشد. - توکن صحیح در متغیر محیطی تنظیم شده باشد.
- اتصال اینترنت سیستم یا سرور قطع نشده باشد.
- پیام جدید بعد از شروع اجرای برنامه ارسال شده باشد.
- خطایی در خروجی Terminal یا PowerShell نمایش داده نشده باشد.
- مقدار
next_offset_idدر درخواست بعدی استفاده شود.
فعال نگه داشتن دائمی ربات روبیکا
ربات در روش Long Polling فقط تا زمانی پاسخ میدهد که فایل پایتون در حال اجرا باشد. با بستن ترمینال، خاموش شدن کامپیوتر یا قطع اجرای برنامه، دریافت پیامهای جدید متوقف میشود.
برای اجرای دائمی میتوانید برنامه را روی یک سرور همیشه روشن مستقر کنید. در محیط عملیاتی باید علاوه بر فعال نگه داشتن فرایند، ثبت خطا، راهاندازی مجدد خودکار، محدودیت درخواست و کنترل مصرف منابع نیز در نظر گرفته شود.
| محل اجرا | کاربرد مناسب | محدودیت |
|---|---|---|
| کامپیوتر شخصی | آموزش و آزمایش اولیه | با خاموش شدن سیستم، ربات متوقف میشود |
| سرور مجازی | اجرای دائمی Long Polling | نیازمند تنظیم و نگهداری سرور است |
| هاست یا سرویس اجرای پایتون | پروژههای کوچک و متوسط | ممکن است محدودیت زمان اجرا یا منابع داشته باشد |
| سرور Webhook | پروژههای پایدار و عملیاتی | به دامنه عمومی و HTTPS معتبر نیاز دارد |
نکته: این نمونه برای آموزش ساخت یک ربات پاسخگوی پایه طراحی شده است. برای استفاده حرفهای باید مدیریت کاربران، پایگاه داده، ثبت گزارش خطا، محدودیت تعداد درخواست، کنترل دسترسی مدیران و مدیریت امن اطلاعات نیز متناسب با کاربرد ربات پیادهسازی شوند.
تعریف دستورهای ربات روبیکا با setCommands
متد setCommands فهرست دستورهای پیشنهادی ربات را ثبت میکند تا کاربران بتوانند قابلیتهای اصلی آن را سریعتر پیدا کنند. نام دستور در درخواست API بدون علامت / نوشته میشود؛ برای مثال start و help.
{ "bot_commands": [ { "command": "start", "description": "شروع کار با ربات" }, { "command": "help", "description": "نمایش راهنمای ربات" }, { "command": "contact", "description": "راه ارتباطی" } ]}ثبت دستور در
setCommands بهتنهایی باعث اجرای آن نمیشود. برنامه باید متن پیام کاربر را بررسی کند و برای هر دستور، پاسخ یا عملیات مشخصی داشته باشد.
/startمیتواند پیام خوشآمدگویی و منوی اصلی را نمایش دهد./helpمیتواند راهنمای استفاده از ربات را ارسال کند./contactمیتواند اطلاعات ارتباطی کسبوکار را نشان دهد.
setCommands فقط فهرست فرمانها را در رابط ربات ثبت میکند. منطق پاسخگویی به هر فرمان باید داخل کد برنامه نوشته شود.ساخت پیام خودکار در ربات روبیکا
پیام خودکار زمانی ارسال میشود که برنامه یک رویداد یا پیام مشخص را تشخیص دهد؛ مانند شروع ربات، دریافت دستور /start، ارسال یک کلمه خاص یا انتخاب دکمه. شرط تشخیص رویداد و متن پاسخ باید در منطق برنامه نوشته شود.
| قابلیت | محل پیادهسازی | نمونه کاربرد |
|---|---|---|
| پیام خوشآمدگویی | رویداد StartedBot یا دستور /start |
نمایش معرفی و منوی اصلی |
| پاسخ به کلمه مشخص | شرط داخل کد | پاسخ به قیمت، آدرس یا ساعت کاری |
| دستور ربات | setCommands و منطق برنامه |
/start، /help و /status |
| ذخیره اطلاعات | پایگاه داده | کاربران، سفارشها و تاریخچه درخواستها |
| پنل مدیریت | وباپ یا نرمافزار اختصاصی | ویرایش پاسخها و مشاهده گزارشها |
پنل مدیریت برای فعال شدن ربات ضروری نیست. در پروژههای ساده میتوان پاسخها را مستقیماً داخل کد تعریف کرد؛ اما اگر مدیر ربات باید بدون ویرایش کد، پیامها، کاربران یا گزارشها را مدیریت کند، به پنل و پایگاه داده جداگانه نیاز خواهد بود.
دریافت پیام ربات روبیکا با Long Polling یا Webhook
دریافت پیامها و رویدادهای ربات روبیکا به دو روش Long Polling و Webhook انجام میشود. در Long Polling، برنامه متد getUpdates را بهصورت دورهای فراخوانی میکند؛ اما در Webhook، روبیکا پس از وقوع رویداد، اطلاعات آن را با یک درخواست POST به آدرس سرور شما میفرستد.
این دو، روش جداگانهای برای ساخت حساب ربات نیستند؛ بلکه مشخص میکنند برنامه پس از دریافت توکن، پیامها و رویدادهای کاربران را چگونه دریافت کند. Long Polling برای آموزش و آزمایش سادهتر است و Webhook بیشتر برای اجرای دائمی ربات روی سرور استفاده میشود.
تفاوت Long Polling و Webhook ربات روبیکا
| ویژگی | Long Polling | Webhook |
|---|---|---|
| روش دریافت رویداد | فراخوانی دورهای getUpdates |
ارسال رویداد از روبیکا به سرور |
| نیاز به دامنه عمومی | ندارد | دارد |
| نیاز به HTTPS معتبر | ندارد | دارد |
| پیچیدگی راهاندازی | کمتر | بیشتر |
| کاربرد مناسب | آموزش، آزمایش و پروژه کوچک | ربات دائمی و محیط عملیاتی |
| نحوه ادامه دریافت پیامها | استفاده از next_offset_id در درخواست بعدی |
دریافت هر رویداد در Endpoint ثبتشده |
در نمونه پایتون این مقاله از Long Polling استفاده شده است. برنامه متد getUpdates را اجرا میکند، آرایه updates را میخواند و مقدار next_offset_id را در درخواست بعدی داخل فیلد offset_id قرار میدهد تا پیامهای قبلی دوباره پردازش نشوند.
اگر ربات در مرحله آموزش یا آزمایش قرار دارد، Long Polling انتخاب سادهتری است. برای رباتی که باید بهصورت دائمی روی سرور اجرا شود و رویدادها را بدون فراخوانی دورهای دریافت کند، میتوان Webhook را تنظیم کرد.
ثبت Webhook ربات روبیکا با updateBotEndpoints
برای دریافت پیامها و رویدادهای معمول ربات از طریق Webhook، باید آدرس عمومی سرور را با متد updateBotEndpoints و نوع ReceiveUpdate ثبت کنید.
در نمونه زیر، توکن از متغیر محیطی خوانده میشود و آدرس Webhook برای دریافت Updateهای ربات ثبت خواهد شد:
import osimport requeststoken = os.getenv("RUBIKA_BOT_TOKEN")if not token: raise RuntimeError( "متغیر محیطی RUBIKA_BOT_TOKEN تنظیم نشده است." )webhook_url = "https://example.com/rubika/update"api_url = ( f"https://botapi.rubika.ir/v3/" f"{token}/updateBotEndpoints")response = requests.post( api_url, json={ "url": webhook_url, "type": "ReceiveUpdate", }, timeout=20,)response.raise_for_status()print(response.json())آدرس
https://example.com/rubika/update را با نشانی واقعی Endpoint خود جایگزین کنید. این آدرس باید از اینترنت در دسترس باشد و گواهی معتبر HTTPS داشته باشد.
updateBotEndpoints باید بدون خطای توکن، آدرس یا نوع Endpoint پاسخ معتبر برگرداند. پس از آن، با ارسال یک پیام جدید به ربات باید درخواست POST در مسیر ثبتشده سرور دریافت شود.افزودن ربات روبیکا به گروه یا کانال
برای استفاده از ربات در گروه یا کانال، ابتدا باید بات را با نام کاربری آن به فضای موردنظر اضافه کنید و سپس فقط مجوزهایی را فعال کنید که برای عملکرد ربات لازم هستند. اضافه شدن بات بهتنهایی برای حذف پیام، ارسال محتوا یا مدیریت اعضا کافی نیست و سطح دسترسی آن باید توسط مدیر گروه یا کانال تنظیم شود.
اگر هنوز گروه موردنظر را ایجاد نکردهاید، ابتدا مراحل ساخت گروه در روبیکا را انجام دهید و پس از مشخص شدن مدیران، ربات را به آن اضافه کنید.
مراحل افزودن ربات به گروه یا کانال روبیکا

- وارد گروه یا کانال موردنظر شوید و بخش اطلاعات یا تنظیمات آن را باز کنید.
- گزینه افزودن عضو را انتخاب کنید و نام کاربری ربات را در کادر جستوجو بنویسید.
- حساب بات را از نتایج انتخاب و به گروه یا کانال اضافه کنید.
- وارد فهرست اعضا یا مدیران شوید و بات را پیدا کنید.
- در صورت نیاز، ربات را به مدیر ارتقا دهید و فقط مجوزهای متناسب با وظیفه آن را فعال کنید.
- یک پیام، دستور یا عملیات آزمایشی اجرا کنید تا مشخص شود ربات پیامهای فضای موردنظر را دریافت میکند و پاسخ میدهد.
چرا ربات در گروه یا کانال کار نمیکند؟
| مشکل | علت قابل بررسی | اقدام درست |
|---|---|---|
| ربات هیچ پیامی دریافت نمیکند | بات به گروه اضافه نشده یا دریافت پیامهای گروه غیرفعال است | عضویت بات و تنظیم دریافت پیامها در BotFather را بررسی کنید |
| ربات پیام را میبیند اما پاسخ نمیدهد | برنامه اجرا نیست یا منطق پاسخ برای آن رویداد نوشته نشده است | خروجی برنامه و شرط پردازش NewMessage را کنترل کنید |
| ارسال پیام با خطای دسترسی متوقف میشود | بات اجازه ارسال پیام در گروه یا کانال را ندارد | سطح دسترسی ربات را از تنظیمات مدیران اصلاح کنید |
| ربات در گفتوگوی خصوصی کار میکند اما در گروه نه | chat_id گروه با گفتوگوی خصوصی متفاوت است |
شناسه همان گروه را از رویدادهای جدید دریافت کنید |
| ربات نمیتواند پیام یا عضو را مدیریت کند | مجوز مدیریتی لازم فعال نشده است | فقط دسترسی مرتبط با همان عملیات را به بات بدهید |
ربات در هر گروه و کانال یک chat_id جداگانه دارد؛ بنابراین شناسه گفتوگوی خصوصی را نمیتوان برای ارسال پیام به گروه یا کانال استفاده کرد. بعد از اضافه کردن بات، شناسه همان فضا را از رویدادهای getUpdates یا Webhook استخراج و در درخواستهای بعدی استفاده کنید.
جمع بندی
ساخت ربات روبیکا با ایجاد حساب بات و دریافت توکن از BotFather رسمی شروع میشود. پس از دریافت توکن، میتوانید ربات را به یک رباتساز سازگار متصل کنید یا قابلیتهای اختصاصی آن را با پایتون و Bot API پیادهسازی کنید. BotFather فقط حساب بات و توکن را ایجاد میکند و بهتنهایی مسئول ساخت منو، پاسخ خودکار یا پنل مدیریت نیست.
برای اطمینان از صحت توکن، ابتدا متد getMe را آزمایش کنید. سپس پیامهای کاربران را با getUpdates یا Webhook دریافت کرده و پاسخها را با sendMessage ارسال کنید. Long Polling برای آموزش و پروژههای ساده مناسبتر است؛ اما رباتی که باید بهصورت دائمی فعال بماند، به سرور همیشه روشن یا Webhook با آدرس عمومی و HTTPS معتبر نیاز دارد.
در صورت افزودن ربات به گروه یا کانال، فقط مجوزهایی را فعال کنید که برای وظیفه آن ضروری هستند. همچنین توکن را در تصاویر، مخزن عمومی کد، گروه یا پنل ناشناس قرار ندهید؛ زیرا هر شخص یا سرویسی که به آن دسترسی داشته باشد، ممکن است بتواند از طرف ربات درخواست API ارسال کند.
اگر به منوی ساده و چند پاسخ آماده نیاز دارید، رباتساز مسیر سریعتری است. برای اتصال به پایگاه داده، اجرای دستورهای اختصاصی، پردازش اطلاعات یا ساخت پنل مدیریت مستقل، برنامهنویسی مستقیم ربات روبیکا با Bot API انتخاب کاملتری خواهد بود. در صورتی نیاز به راهنمایی می توانید از طریق تلفن ثابت و بدون گرفتن پیش شماره یا عدد ۰ با شماره ۹۰۹۹۰۷۵۳۰۸، با مشاوران ما در تماس باشید.
سوالات متداول
توکن ربات روبیکا را از کجا بگیریم؟
توکن بعد از ساخت بات جدید در حساب رسمی @BotFather روبیکا صادر می شود. آن را در محل امن ذخیره کنید و فقط در کد یا پنلی که به آن اعتماد دارید وارد کنید.
چرا ربات بعد از دریافت توکن پاسخ نمی دهد؟
توکن فقط مجوز اتصال به API است. برای پاسخگویی باید کد Long Polling یا Webhook در حال اجرا باشد یا توکن به یک پنل ربات ساز متصل شود.
ساخت ربات روبیکا بدون کدنویسی امکان دارد؟
بله، بعضی پنل های ربات ساز امکان تعریف پیام خودکار و دستورها را بدون کدنویسی فراهم می کنند؛ اما این سرویس ها رسمی نیستند مگر روبیکا صریحا آن ها را معرفی کرده باشد. قبل از وارد کردن توکن، امنیت و اعتبار پنل را بررسی کنید.
chat_id ربات روبیکا را چگونه پیدا کنیم؟
بعد از ارسال یک پیام به ربات، متد getUpdates را اجرا کنید. شناسه مقصد در فیلد chat_id هر Update قرار دارد و برای sendMessage استفاده می شود.
فرق Long Polling و Webhook چیست؟
در Long Polling برنامه به صورت دوره ای پیام های جدید را از getUpdates می گیرد. در Webhook روبیکا رویداد را مستقیما به Endpoint عمومی و امن سرور شما ارسال می کند.
چگونه دستورهای ربات را نمایش دهیم؟
با متد setCommands می توانید نام و توضیح دستورها را ثبت کنید. اجرای واقعی دستور به شرط و پاسخ تعریف شده در کد یا پنل مدیریت وابسته است.
آیا ربات روبیکا را می توان به گروه و کانال اضافه کرد؟
بله. ادمین باید نام کاربری ربات را در بخش افزودن عضو جستجو کند، آن را دستی اضافه کند و در صورت نیاز دسترسی ادمین بدهد. افزودن بات از طریق لینک دعوت انجام نمی شود.
چرا ربات همه پیام های گروه را نمی بیند؟
دسترسی پیش فرض ربات محدود به پیام های مرتبط، منشن ها و دستورهای دارای علامت / است. برای دریافت همه پیام ها باید تنظیم مربوط در BotFather فعال و مجوز لازم در گروه داده شود.
پنل مدیریت ربات روبیکا با BotFather چه تفاوتی دارد؟
BotFather برای ساخت و مدیریت هویت بات و دریافت توکن است. پنل مدیریت محیطی جدا برای تنظیم پاسخ ها، کاربران، آمار و دستورهاست و باید توسط سازنده یا یک سرویس ربات ساز فراهم شود.

دیدگاه ها