Skip to content
hosseinMshPublic

About

ربات هوشمند و کامل تلگرام جهت اتوماسیون امور تغذیه، رزرو غذا و مدیریت اعتبار در سامانه یکپارچه صمد دانشگاه صنعتی شریف و سایر دانشگاه‌ها.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🍽 FoodBot - سامانه هوشمند اتوماسیون تغذیه صمد

License: MIT Python Cloudflare Workers Telegram Bale

ربات چندسکویی اتوماسیون تغذیه، رزرو هوشمند غذا، مدیریت اعتبار و تولید بارکد تحویل برای سامانه یکپارچه صمد (دانشگاه صنعتی شریف و سایر دانشگاه‌ها) با دو پیاده‌سازی مستقل و پشتیبانی همزمان از تلگرام (Telegram) و بله (Bale).


🧭 ساختار پروژه

این مخزن شامل دو پیاده‌سازی مستقل و کامل متناسب با نیازهای مختلف است:

FoodBot/
├── miniapp/                 # 📱 مینی‌اپ اختصاصی تلگرام (نسخه مستقل Static SPA)
│   └── index.html           # کلاینت وب سبک، بهینه و بدون وابستگی سنگین
│
├── python/                  # 🐍 نسخه پایتون (Long-polling / سرور یا داکر)
│   ├── handlers/            # هندلرهای دستورات و گفتگوهای تلگرام و بله
│   ├── bot.py               # نقطه ورود اصلی ربات پایتون
│   ├── config.py            # تنظیمات و متغیرهای محیطی
│   ├── database.py          # مدیریت پایگاه‌داده SQLite
│   ├── date_helper.py       # تبدیل تقویم شمسی/میلادی و کار با روزها
│   ├── samad_client.py      # کلاینت ارتباط با وب‌سرویس صمد
│   ├── requirements.txt     # وابستگی‌های پایتون
│   ├── Dockerfile           # ایمیج داکر برای استقرار کانتینری
│   ├── docker-compose.yml   # فایل استقرار آسان با داکر کامپوز
│   ├── foodbot.service      # سرویس systemd برای لینوکس/VPS
│   ├── .env.example         # الگوی متغیرهای محیطی
│   └── README.md            # راهنمای کامل نسخه پایتون
│
├── cloudflare/              # ☁️ نسخه کلادفلر (Serverless / رایگان ۲۴ ساعته)
│   ├── src/                 # کدهای TypeScript ربات با grammY
│   │   ├── bot.ts           # منطق ربات و پیام‌ها
│   │   ├── index.ts         # نقطه ورود ورکر کلادفلر، مینی‌اپ و API
│   │   ├── miniapp.ts       # رندر مینی‌اپ تلگرام با بارگذاری آنی
│   │   ├── samad.ts         # کلاینت صمد در محیط ورکر
│   │   ├── db.ts            # ارتباط با Cloudflare D1
│   │   ├── kv.ts            # ارتباط با Cloudflare KV
│   │   ├── qr.ts            # تولید تصویر QR Code در Edge
│   │   ├── date.ts          # مدیریت تاریخ‌های شمسی
│   │   └── types.ts         # تعاریف داده و تایپ‌ها
│   ├── wrangler.toml        # تنظیمات ورکر، بایندینگ دیتابیس D1 و KV
│   ├── schema.sql           # ساختار جدول دیتابیس D1
│   ├── .dev.vars.example    # الگوی متغیرهای محیطی توسعه محلی
│   └── README.md            # راهنمای استقرار نسخه کلادفلر
│
├── .gitignore               # نادیده‌گرفتن فایل‌های حساس، توکن‌ها و دیتابیس‌ها
├── LICENSE                  # لایسنس MIT
└── README.md                # راهنمای جامع پروژه

⚖️ مقایسه دو نسخه (کدام را انتخاب کنم؟)

ویژگی 🐍 نسخه پایتون (python/) ☁️ نسخه سرورلس کلادفلر (cloudflare/)
هزینه میزبانی نیازمند VPS یا سیستم همیشه روشن ۱۰۰٪ رایگان (از پلن رایگان Cloudflare Workers)
روش دریافت پیام Long-polling (یا وب‌هوک اختیاری) Webhook در لبه شبکه جهانی کلادفلر
دیتابیس SQLite محلی (storage.db) دیتابیس ابری سرورلس Cloudflare D1
کش و سشن فایل / حافظه رم حافظه کلید-مقدار ابری Cloudflare KV
پیام‌رسان‌های هدف تلگرام و بله (با آرگومان --platform) تلگرام و بله (با متغیر PLATFORM یا وب‌هوک مجزا)
پروکسی در ایران پشتیبانی داخلی از PROXY_URL (Socks5/HTTP) بی‌نیاز از پروکسی (میزبانی مستقیم روی زیرساخت Cloudflare)
سادگی راه‌اندازی نیازمند نصب Python و داکر/VPS استقرار در ۵ دقیقه با wrangler deploy

🌟 قابلیت‌ها و دستورات ربات

دستور / دکمه توضیح و عملکرد
📱 مینی‌اپ صمد (/app) اجرای مینی‌اپ اختصاصی وب تلگرام (TMA) با رابط گرافیکی سریع، منوی هفتگی، رزرو و بارکد تحویل
🍽 غذای امروز (/today) نمایش غذای رزرو شده امروز، نام سلف، وضعیت تحویل و تولید خودکار کد QR / بارکد تحویل
📅 برنامه هفته بعد (/nextweek) منوی کامل هفته آینده با امکان مقایسه همزمان همه سلف‌ها به تفکیک هر روز
📋 غذاهای رزرو مانده (/remaining) مشاهده لیست غذاهای رزرو شده تا پایان هفته با قابلیت لغو و دریافت بارکد
💰 مانده اعتبار (/credit) نمایش موجودی کیف پول تغذیه (ریال و تومان) و ریز تراکنش‌های اخیر
💳 افزایش اعتبار (/charge) اتصال مستقیم به سامانه متمرکز پرداخت شریف (pay.sharif.ir) و لینک ورود سریع با توکن
🛒 رزرو و خرید غذا (/buy) خرید تعاملی از منوی هفته آینده با دکمه‌های اینلاین و خرید از فروش روزانه
⚙️ انتخاب سلف (/self) تغییر سالن غذاخوری پیش‌فرض کاربر (مرکزی، خوابگاه، خلدبرین و...)
👤 حساب کاربری (/profile) مشخصات دانشجو، رشته، شماره دانشجویی و سلف فعال
🔐 ورود و خروج (/login, /logout) ورود امن چندکاربره با تفکیک نشست و رمزهای عبور

🚀 شروع سریع

۱. راه‌اندازی نسخه پایتون (Python)

cd python

# ایجاد محیط مجازی و نصب وابستگی‌ها
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# تنظیم فایل پیکربندی
cp .env.example .env
# مقادیر BOT_TOKEN و پلتفرم را در فایل .env تنظیم کنید

# اجرا برای تلگرام
python bot.py --platform telegram

# اجرا برای پیام‌رسان بله
python bot.py --platform bale

👉 جزئیات بیشتر، داکر و سرویس systemd در راهنمای نسخه پایتون.


۲. راه‌اندازی نسخه کلادفلر (Cloudflare Workers)

cd cloudflare

# نصب وابستگی‌ها
npm install

# ساخت دیتابیس D1 و سطل KV
npx wrangler d1 create foodbot-db
npx wrangler d1 execute foodbot-db --remote --file=./schema.sql
npx wrangler kv namespace create foodbot-kv

# ثبت ایمن توکن ربات
npx wrangler secret put BOT_TOKEN

# استقرار روی شبکه کلادفلر
npx wrangler deploy

پس از استقرار، کافی است لینک زیر را در مرورگر باز کنید تا وب‌هوک در تلگرام یا بله ثبت شود:

  • برای تلگرام: https://<your-worker>.workers.dev/set-webhook?platform=telegram
  • برای بله: https://<your-worker>.workers.dev/set-webhook?platform=bale

👉 راهنمای گام‌به‌گام و مصور در راهنمای نسخه کلادفلر.


📱 مینی‌اپ اختصاصی تلگرام (Telegram Mini App)

پروژه شامل یک مینی‌اپ وب مدرن و فوق‌العاده سبک (کمتر از ۴۰ کیلوبایت) است که به صورت مستقیم در تلگرام اجرا می‌شود:

  • سرعت لودینگ زیر ۱۰۰ میلی‌ثانیه: طراحی شده با HTML5/CSS3/Vanilla JS بدون فریم‌ورک‌های سنگین React/Vue.
  • انطباق تم: سازگاری کامل با تم روشن و تاریک تلگرام بر اساس متغیرهای تم کاربر.
  • ۴ بخش اصلی:
    1. 🍽 امروز: وعده‌های امروز، وضعیت تحویل، و پاپ‌آپ بارکد و QR Code تحویل برای اسکن در گیت سلف.
    2. 📅 رزرو غذا: انتخاب روز، سلف غذاخوری، و رزرو یا لغو آنی غذا با ویبره لمسی (Haptic Feedback).
    3. 💳 کیف پول: نمایش موجودی، دکمه پرداخت مستقیم شریف (pay.sharif.ir) و تاریخچه تراکنش‌ها.
    4. 👤 پروفایل: مشخصات دانشجو، انتخاب سلف پیش‌فرض و خروج امن.
  • دسترسی سریع:
    • دستور /app در چت ربات
    • دکمه شیشه‌ای منوی اصلی
    • منوبار پایین چت تلگرام (Menu Button)

💳 افزایش اعتبار مستقیم در pay.sharif.ir

در هر دو نسخه ربات و مینی‌اپ، گزینه «افزایش اعتبار» مستقیماً به درگاه متمرکز دانشگاه صنعتی شریف متصل است:

  • آدرس درگاه: https://pay.sharif.ir
  • پرداخت مستقیم بدون نیاز به وارد کردن مجدد کلمه عبور صمد
  • به‌روزرسانی آنی اعتبار در ربات و مینی‌اپ بلافاصله پس از پرداخت
  • دکمه جایگزین ورود سریع با توکن (Token Login) به سامانه وب صمد نیز حفظ شده است.

📱 نحوه اتصال به پیام‌رسان بله (Bale)

پیام‌رسان بله از پروتکلی سازگار با تلگرام برای ربات‌ها استفاده می‌کند:

  • آدرس وب‌سرویس ربات‌های بله: https://tapi.bale.ai/bot<TOKEN>/<METHOD>
  • توکن ربات را می‌توانید مستقیماً از @BotFather در پیام‌رسان بله دریافت کنید.
  • برای نسخه پایتون، کافی است مقدار PLATFORM=bale در .env قرار گیرد یا آرگومان --platform bale پاس داده شود.
  • برای نسخه کلادفلر، وب‌هوک با اندپوینت /set-webhook?platform=bale فعال می‌شود.

🔒 امنیت و حریم خصوصی

  • هیچ‌گونه توکن، رمز عبور یا فایل پایگاه‌داده در مخزن گیت ذخیره نمی‌شود.
  • فایل‌های حساس (.env، storage.db، .dev.vars، پوشه venv و node_modules) در .gitignore به دقت فیلتر شده‌اند.
  • پس از دریافت رمز عبور در مرحله لاگین، پیام حاوی پسورد کاربر بلافاصله حذف می‌گردد.

📄 لایسنس

این پروژه تحت مجوز متن‌باز MIT License منتشر شده است.

About

ربات هوشمند و کامل تلگرام جهت اتوماسیون امور تغذیه، رزرو غذا و مدیریت اعتبار در سامانه یکپارچه صمد دانشگاه صنعتی شریف و سایر دانشگاه‌ها.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages