پرش به مطلب اصلی

بالا آوردن وب‌سایت و ربات به‌صورت هم‌زمان با RubJS

· خواندن 2 دقیقه
Hadi Rostami
Front End Engineer

در این مقاله یاد می‌گیریم چطور با استفاده از RubJS هم‌زمان یک ربات و یک وب‌سایت (مثلاً برای مدیریت یا مستندات) روی یک پروژه Node.js راه‌اندازی کنیم. این رویکرد مناسب پروژه‌هایی‌ست که نیاز به پنل مدیریت، مستندات یا رابط کاربری در کنار ربات دارند.

مقدمه

در پروژه‌هایی که از ربات‌های پیام‌رسان استفاده می‌کنند، معمولاً نیاز به یک رابط گرافیکی (GUI) یا وب‌سایت هم احساس می‌شود. ممکن است بخواهید برای ربات‌تان:

  • یک پنل مدیریت بسازید،

  • مستندات (docs) ارائه دهید،

  • یا فقط صفحه‌ای ساده برای معرفی ربات داشته باشید.

RubJS این امکان را می‌دهد که بدون جداسازی پروژه، همزمان ربات و وب‌سایت را در یک سرور Node.js اجرا کنید.

راه‌اندازی پروژه: ربات + وب‌سایت

قدم اول: ساخت پروژه با RubJS

mkdir mybot-site
cd mybot-site
npm init -y
npm install rubjs @fastify/static

قدم دوم: ساخت ربات

یک فایل با اسم bot.js بسازید و محتوای زیر را درون ان بگزارید.

const path = require("path");
const { Bot } = require("rubjs");
const fastifyStatic = require("@fastify/static");

const bot = new Bot("YOUR_TOKEN");

bot.on("message", async (ctx) => {
console.log(ctx);
});

// راه اندازی سایت
bot.server.register(fastifyStatic, {
root: path.join(__dirname, "public"),
prefix: "/site/",
});

bot.run();

قدم سوم: ساخت فایل‌های وب‌سایت

در کنار کد بالا، یه پوشه به اسم public بساز (در کنار فایل اصلی سرور) و داخلش یه فایل index.html یا هر محتوایی که برای نمایش مدنظرته قرار بده.

ساختار فایل‌ها مثلاً این شکلی می‌شه:

mybot-site/
├── node_modules/
├── public/
│ └── index.html
├── package.json
└── bot.js

محتوای ساده برای public/index.html:

<!DOCTYPE html>
<html>
<head>
<title>ربات من</title>
<meta charset="UTF-8" />
</head>
<body>
<h1>به ربات من خوش آمدید</h1>
<p>مستندات در این صفحه ارائه می‌شود.</p>
</body>
</html>

اجرای پروژه

برای اجرای پروژه:

node index.js

اگر همه‌چیز درست باشه:

  • ربات در روبیکا فعال می‌شه
  • و سایت از طریق مسیر /site/ قابل دسترسی خواهد بود:
http://localhost:3000/site/

نکته‌ها

  • دقت کن که bot.server همون نمونه Fastify داخلی RubJS هست و می‌تونی روش هر پلاگین یا مسیر دلخواهی سوار کنی.
  • می‌تونی مسیرهای REST API یا فرم‌های مدیریت هم از طریق همین سرور پیاده‌سازی کنی.

نتیجه‌گیری

با RubJS به‌سادگی می‌تونیم در کنار ساخت ربات، یک وب‌سایت کامل برای مدیریت، مستندات یا معرفی ربات راه‌اندازی کنیم؛ بدون نیاز به اجرای جداگانه‌ی دو سرور یا سرویس. این کار باعث ساده‌تر شدن دیپلوی و نگه‌داری پروژه می‌شه.