مجموعهای حرفهای از ۶ ربات کاربردی برای پیامرسان بله، با معماری یکپارچه، دیتابیس مشترک و پنل مدیریت متمرکز
معرفی • معماری • رباتها • نصب و اجرا • ساختار پروژه
HooshCode یک اکوسیستم متشکل از ۶ ربات تلفیقی روی پیامرسان بله است که هرکدام یک نیاز مشخص کاربران فارسیزبان (بهویژه برنامهنویسان) را پاسخ میدهند؛ از تبدیل فایل و OCR گرفته تا ساخت QR Code، تولید پسورد امن، اخبار/قیمت لحظهای بازار و چت با هوش مصنوعی.
نکتهی متمایزکنندهی این پروژه نسبت به مجموعهرباتهای معمول، یکپارچگی معماری است:
- 🗄️ همهی رباتها به یک دیتابیس SQLite مشترک وصلاند (نه ۵ فایل دیتابیس پراکنده)
- 🛠️ یک پنل مدیریت متمرکز در ربات اصلی، مدیریت محتوا/کاربران/تیکتها/نظرسنجی همهی رباتها را در یکجا ممکن میکند
- ♻️ منطق مشترک (بررسی عضویت کانال، نظرسنجی، تیکت پشتیبانی، کلاینت API بله) در ماژولهای قابلاستفادهی مجدد (
utils/) قرار دارد تا کد در ۶ ربات تکرار نشود
| ربات | شرح | قابلیتهای کلیدی |
|---|---|---|
| 🤖 هوش کد (اصلی) | نقطهی ورود مجموعه + پنل مدیریت | دریافت آیدی عددی، راهنمای نصب پکیج پایتون، پنل ادمین یکپارچه |
| 📄 هوش کد | تبدیل | تبدیل فایل | عکس↔PDF، OCR فارسی/انگلیسی محلی، رمزگذاری اختیاری PDF خروجی |
| 🔐 هوش کد | رمز | تولید پسورد | پسورد تصادفی امن، PIN، پسورد WiFi/خوانا، ذخیرهی پسوردهای شخصی |
| 📱 هوش کد | QR | ساخت QR Code | ۳ استایل + ۸ رنگ، QR وایفای/کارتویزیت، سیستم دعوت دوستان |
| 📰 هوش کد | اخبار | اطلاعرسانی در کانال | اخبار ۷ حوزه از RSS، گزارش لحظهای بازار با سنجاق خودکار، نمودار هفتگی روند قیمت |
| 💬 هوش کد | چت | دستیار هوش مصنوعی | مکالمهی روزمره + سوئیچ خودکار به مدل کدنویسی، حافظهی مکالمه پایدار |
تمام رباتها (بهجز ربات اخبار که در کانال فعالیت میکند) این سه قابلیت مشترک را دارند:
بعد از هر عملیات (ارسال سورس کد، تبدیل PDF، ساخت QR، تولید پسورد، پاسخ چت) سه دکمهی «👍 راضی بودم / 😐 معمولی بود / 👎 راضی نبودم» نمایش داده میشود. ادمین در پنل مرکزی، گزارش خلاصه (تعداد و درصد رضایت) به تفکیک هر ربات را میبیند.
کاربر با زدن دکمهی «ارتباط با پشتیبانی»، پیامش مستقیماً بهصورت تیکت در دیتابیس مشترک ثبت و به ادمین اطلاعرسانی میشود. ادمین از همان پنل مرکزی پاسخ میدهد و ربات بهصورت خودکار پاسخ را از همان رباتی که کاربر در آن پیام داده بود برایش ارسال میکند.
بررسی یکپارچهی عضویت کاربر در کانالهای تعیینشده، با کیبورد آمادهی «عضویت + بررسی مجدد».
┌─────────────────────┐
│ فایل .env (محرمانه) │
└──────────┬───────────┘
│
┌──────────▼───────────┐
│ config/settings.py │
└──────────┬───────────┘
│
┌───────────────┬──────────┼──────────┬───────────────┐
│ │ │ │ │
┌────▼────┐ ┌─────▼────┐ ┌───▼───┐ ┌───▼────┐ ┌─────▼─────┐
│main_bot │ │convert_bot│ │pass_bot│ │ qr_bot │ │ chat_bot │
│ + پنل │ │ + OCR │ │ │ │ │ │ + حافظه │
│ ادمین │ │ + رمز PDF│ │ │ │ │ │ + سوئیچ مدل│
└────┬────┘ └─────┬────┘ └───┬────┘ └───┬────┘ └─────┬─────┘
│ │ │ │ │
└────────────────┴──────────┴───────────┴────────────────┘
│
┌──────────▼───────────┐
│ database/db.py │
│ (SQLite مشترک یکپارچه) │
└────────────────────────┘
┌────────────────────────┐
│ news_bot │ (مستقل - پست در کانال)
│ RSS + بازار + نمودار │
└────────────────────────┘
| ویژگی | توضیح |
|---|---|
| دیتابیس مشترک | اطلاعات کاربر یکبار ثبت میشود و در هر ۵ ربات در دسترس است؛ آماری مثل «این کاربر چند ربات را امتحان کرده» بهسادگی قابل استخراج است. |
| پنل ادمین متمرکز | دیگر نیازی به /admin جدا در هر ربات نیست؛ همهچیز از یکجا (ربات اصلی) مدیریت میشود. |
کلاینت API مشترک (utils/bale_client.py) |
فراخوانیهای تکراری به API بله (ارسال پیام، عکس، فایل، بررسی عضویت) یکبار نوشته و در ۶ ربات استفاده میشود. |
پراسسهای مجزا (run_all.py) |
هر ربات در پراسس خودش اجرا میشود؛ کرش یک ربات، بقیه را قطع نمیکند. |
- مدل پیشفرض برای مکالمهی روزمره:
meta-llama/llama-3.3-70b-instruct:free - اگر پیام کاربر شبیه درخواست کدنویسی باشد (کلیدواژههایی مثل «کد بنویس»، نام زبانهای برنامهنویسی، عبارات خطا)، بهصورت خودکار و موقت به مدل
qwen/qwen3-coder:freeسوئیچ میکند. - کاربر همچنین میتواند از منوی «🔄 تغییر مدل» بهصورت دستی مدل دلخواهش (از میان چند مدل رایگان OpenRouter) را انتخاب کند.
- حافظهی مکالمه در دیتابیس مشترک ذخیره میشود (نه فقط در RAM)، یعنی با ریاستارت سرور هم از بین نمیرود. دستور
/clearیا دکمهی «پاک کردن حافظه» برای شروع گفتگوی تازه. - ارتباط با OpenRouter از طریق SDK رسمی
openai، بدون قرار گرفتن هیچ کلید API در کد (همه از.env).
- OCR محلی و رایگان با
easyocrکه از فارسی و انگلیسی بهخوبی پشتیبانی میکند و نیازی به سرویس ابری (و کلید API) ندارد. - هنگام ساخت PDF از عکسها، از کاربر پرسیده میشود که آیا میخواهد روی فایل خروجی رمز بگذارد؛ با ارسال رمز، PDF با
pypdfرمزگذاری میشود یا با دستور/skipاین مرحله رد میشود.
علاوهبر گزارش روزانهی بازار (طلا/ارز/کریپتو) که هر روز ساعت مشخص با سنجاق خودکار در کانال منتشر میشود، این نسخه هر ۷ روز یکبار یک نمودار روند قیمت هفتهی اخیر (دلار، طلا، بیتکوین) با matplotlib رسم و در کانال ارسال میکند.
- Python 3.10 یا بالاتر
- توکن ربات از پنل توسعهدهندگان بله
- کلید API از OpenRouter (برای ربات چت)
git clone https://github.com/yourusername/hooshcode-bot-suite.git
cd hooshcode-bot-suite
python -m venv venv
source venv/bin/activate # ویندوز: venv\Scripts\activate
pip install -r requirements.txtcp .env.example .envسپس فایل .env را باز کرده و مقادیر واقعی (توکنها، آیدی ادمین، کلید OpenRouter و ...) را وارد کنید. این فایل هرگز نباید commit شود (در .gitignore قرار دارد).
python run_all.pyیا اجرای فقط چند ربات خاص:
python run_all.py main convert chatpython -m bots.main_bot.bot
python -m bots.chat_bot.bothooshcode/
├── bots/
│ ├── main_bot/ # ربات اصلی + پنل مدیریت یکپارچه
│ │ ├── bot.py
│ │ ├── admin_panel.py
│ │ ├── bot_clients.py
│ │ └── keyboards.py
│ ├── convert_bot/ # تبدیل عکس↔PDF + OCR + رمزگذاری
│ ├── pass_bot/ # تولید پسورد
│ ├── qr_bot/ # ساخت QR Code
│ ├── news_bot/ # اخبار + گزارش بازار + نمودار هفتگی
│ └── chat_bot/ # چت با هوش مصنوعی + حافظه
├── database/
│ └── db.py # تمام توابع دیتابیس مشترک (SQLite)
├── utils/
│ ├── bale_client.py # کلاینت مشترک API بله
│ ├── membership.py # بررسی عضویت کانال
│ ├── feedback.py # سیستم نظرسنجی
│ ├── support.py # سیستم تیکت پشتیبانی
│ ├── ai_client.py # کلاینت OpenRouter
│ ├── ocr.py # استخراج متن از عکس
│ ├── pdf_tools.py # رمزگذاری PDF
│ └── chart.py # رسم نمودار هفتگی بازار
├── config/
│ └── settings.py # بارگذاری متمرکز تنظیمات از .env
├── run_all.py # اجراکنندهی همهی رباتها
├── requirements.txt
├── .env.example
├── .gitignore
└── README.md
- تمام توکنها، کلیدهای API و آیدیهای حساس فقط از فایل
.envخوانده میشوند و هیچجا در کد hardcode نشدهاند. .gitignoreبهطور صریح فایلهای.env، دیتابیسها و دادههای اجرایی را از ورود به ریپازیتوری مسدود میکند.- رمزگذاری PDF با کتابخانهی استاندارد
pypdfانجام میشود؛ پسورد کاربر در سرور ذخیره نمیشود.
- Docker Compose برای اجرای یکمرحلهای همهی رباتها
- داشبورد وب برای پنل مدیریت (بهجای فقط داخل ربات)
- افزودن صف پیام (Redis/RabbitMQ) برای مقیاسپذیری بیشتر
- تستهای واحد (pytest) برای ماژولهای
utils/وdatabase/
این پروژه تحت مجوز MIT منتشر شده است.
ساختهشده با ❤️ روی پیامرسان بله