Skip to content

About

Smart Telegram Bot & Native Mini App (WebApp / PWA) for Islamic Azad University Odd & Even Academic Weeks | ربات و مینی‌اپ تقویم زوج و فرد دانشگاه آزاد

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

41 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


English Documentation

Overview

AzadWeek (@AzadWeekBot) is a full-featured academic calendar platform engineered for students and faculty of Islamic Azad University. It pairs a high-performance Telegram Bot backend (AzadWeekBot/) with a native Telegram Mini App & Progressive Web App (AzadWeek/) to monitor Odd (فرد) and Even (زوج) semester weeks, midterms, finals, official holidays, and personal class schedules on the Persian (Jalali) calendar.


Official Links & Channels

Resource Link
 AzadWeek Telegram Bot t.me/AzadWeekBot
 Official Website (Arian Pashae) arianpashae.com
 Arian Pashae Telegram Channel t.me/ArianPashaeChannel
 Computer Engineering Channel t.me/ComputerAzadKsh
 Developer Direct Contact t.me/ArianPashae

Key Features & Capabilities

1. Native Telegram Mini App & PWA (AzadWeek/)

  • Live Odd/Even Week Dashboard: Real-time indicator for the active semester week (هفته فرد / هفته زوج), current week index, remaining weeks, and an animated semester progress bar.
  • 17-Week Interactive Semester Timeline & Date Converter: Browse all academic weeks with badges for add/drop periods, midterms, finals, and official holidays, or query any Jalali date (1405/MM/DD).
  • Weekly University Class Planner: Organize university courses by Odd, Even, or Every week with day, time slot, instructor name, room, and campus building — synced locally and across your Telegram profile.
  • Story & Status Card Visual Generator: Generates high-resolution 1080×1920 visual status cards and semester wrapped summaries with one-tap Share to Telegram Story, Send to Bot Chat, and Direct Download.
  • Universal .ics Calendar Export: Export all Odd/Even term weeks into Google Calendar, Apple Calendar, and Outlook, or request the file directly in the Telegram chat.
  • Personalized Weekly Reminders: Configure automated notifications for Friday or Saturday at your preferred hour (08:00, 14:00, 20:00, 22:00) with instant test delivery.
  • Telegram WebApp 8.0+ Integration: Automatic mobile fullscreen mode, tactile haptic feedback, home-screen shortcut installation, biometric lock support, and automatic dark/light theme matching.

2. Telegram Bot Backend (AzadWeekBot/)

  • Private, Group & Inline Queries: Check the current week, next week, or any custom Shamsi date, with full Inline Mode (@AzadWeekBot) enabled in any conversation.
  • Multi-Channel Membership Gate: Enforces subscription to mandatory channels (REQUIRED_CHANNELS) with an in-memory TTL cache to maximize response speed.
  • Smart Group Mode with Auto-Delete: Answers academic week inquiries in university student groups and automatically removes temporary responses after a configurable delay (GROUP_STATUS_AUTODELETE_SECONDS).
  • Unified Background Cron Worker (cron_sender.php):
    • Saturday 07:00 Broadcast: Automatically sends the new week's Odd/Even status to all subscribers every Saturday morning.
    • Custom User Reminders: Dispatches scheduled notifications matching each user's customized day and hour.
    • Rate-Limited Broadcast Queue: Delivers administrative announcements (text, media, audio, or forwarded posts) in safe batches (40 users/minute).
    • Group Message Purge: Automatically cleans up expired temporary responses in groups.
  • Admin Control Dashboard: Real-time user statistics, growth trends, queued broadcasts, and one-click global recall (deletion) of the latest broadcast.

Repository Structure

AzadWeekBot/
├── AzadWeek/                         # Telegram Mini App (WebApp) & PWA
│   ├── index.html                    # Mini App UI and responsive styles
│   ├── aw_native.js                  # WebApp controller, planner, canvas & cloud sync
│   ├── connect.php                   # Mini App REST API (sync, reminders, cards, .ics)
│   ├── card.php                      # Server-side GD WebP status card generator
│   ├── manifest.webmanifest          # PWA Web App Manifest
│   ├── sw.js                         # Offline Service Worker
│   └── assets/                       # Icons, fonts (Vazirmatn, Aviny), templates & SDK
│
├── AzadWeekBot/                      # Telegram Bot Backend Core
│   ├── bot.php                       # Main Telegram Webhook entry point
│   ├── config.php                    # Central configuration (Token, Channels, Admins, Weeks)
│   ├── cron_sender.php               # Unified Cron worker (Broadcasts, Reminders, Auto-Delete)
│   ├── jdf.php                       # Persian (Jalali) calendar conversion library
│   ├── lib/
│   │   ├── api.php                   # Telegram Bot API client & Custom Emoji renderer
│   │   ├── database.php              # Atomic JSON storage engine
│   │   └── utils.php                 # Academic week calculation & string utilities
│   ├── assets/                       # WebP visual banners for bot commands
│   └── storage_backups/              # Protected directory for locks, caches & pending deletes
│
├── docs/icons/                       # Bespoke Premium SVG Vector Icons & Hero Banner
├── LICENSE                           # MIT License
└── README.md                         # Bilingual Documentation (EN / FA)

Installation & Deployment Guide

Prerequisites

  • PHP 8.0 or higher with curl, mbstring, json, and gd (with WebP & FreeType support) enabled.
  • A valid SSL-enabled domain (HTTPS) required by Telegram for Webhooks and Mini Apps.
  • A Telegram Bot Token obtained from @BotFather.

Step 1: Clone & Upload Files

Clone the repository and upload AzadWeekBot/ and AzadWeek/ to your web server:

git clone https://github.com/ArianPashae/AzadWeekBot.git

AzadWeek/connect.php automatically resolves AzadWeekBot/config.php when placed in adjacent folders (../AzadWeekBot) or via the AZAD_WEEK_BOT_ROOT environment variable.

Step 2: Configure AzadWeekBot/config.php

Open AzadWeekBot/config.php and fill in your environment settings:

define('BOT_TOKEN', 'YOUR_BOT_TOKEN_HERE');
define('BOT_USERNAME', 'AzadWeekBot');
define('BASE_URL', 'https://example.com/AzadWeekBot/');
define('MINIAPP_URL', 'https://example.com/AzadWeek/?action=app&v=17');
define('ADMIN_IDS', ['YOUR_ADMIN_TELEGRAM_ID']);
define('CRON_SECRET_KEY', 'YOUR_CRON_SECRET_KEY');
  • Add your channel usernames to REQUIRED_CHANNELS (ensure the bot is an administrator in each).
  • Update the $weeks_config array at the bottom with the Jalali start and end dates (YYYY/MM/DD) of your academic semester.

Step 3: Register the Webhook

Open this URL in your web browser after replacing <YOUR_BOT_TOKEN> and your server domain:

https://api.telegram.org/bot<YOUR_BOT_TOKEN>/setWebhook?url=https://example.com/AzadWeekBot/bot.php

On the first incoming message, the bot automatically registers commands and configures the Open App menu button.

Step 4: Configure the Cron Job

Set up a single Cron Job running every 1 minute (* * * * *) via cPanel, DirectAdmin, crontab, or cron-job.org:

https://example.com/AzadWeekBot/cron_sender.php?secret=YOUR_CRON_SECRET_KEY

مستندات و راهنمای فارسی

معرفی پروژه

آزادویک (AzadWeek) یک سامانهٔ جامع شامل ربات هوشمند تلگرام و مینی‌اپ اختصاصی (Telegram Mini App / PWA) برای دانشجویان و اساتید دانشگاه آزاد اسلامی است. با این سامانه در هر لحظه وضعیت هفتهٔ زوج یا فرد، شمارهٔ هفتهٔ جاری، تقویم ۱۷ هفته‌ای ترم، روزشمار امتحانات میان‌ترم و پایان‌ترم، تعطیلات رسمی و برنامهٔ هفتگی کلاس‌ها با سرعتی بالا در دسترس شماست.


لینک‌های رسمی و راه‌های ارتباطی

عنوان لینک دسترسی
 ربات تلگرام آزادویک t.me/AzadWeekBot
 وب‌سایت رسمی (آرین پاشایی) arianpashae.com
 کانال تلگرام آرین پاشایی t.me/ArianPashaeChannel
 کانال مهندسی کامپیوتر t.me/ComputerAzadKsh
 ارتباط مستقیم با توسعه‌دهنده t.me/ArianPashae

قابلیت‌ها و امکانات کلیدی

۱. مینی‌اپ اختصاصی تلگرام و وب‌اپلیکیشن (AzadWeek/)

 داشبورد زندهٔ وضعیت هفته: نمایش لحظه‌ای وضعیت هفتهٔ جاری (فرد یا زوج)، شمارهٔ هفتهٔ ترم، تعداد هفته‌های باقی‌مانده، شمارش معکوس زنده تا پایان هفته و نوار پیشرفت ترم.

 تقویم تعاملی ۱۷ هفته‌ای و استعلام تاریخ: مشاهدهٔ کامل هفته‌های ترم با برچسب تعطیلات رسمی، حذف و اضافه، میان‌ترم و امتحانات پایان‌ترم به همراه جست‌وجوی تاریخ شمسی دلخواه.

 برنامه‌ریز هوشمند کلاس‌های دانشگاهی: ثبت دروس بر اساس «هردو هفته»، «فقط هفته‌های فرد» و «فقط هفته‌های زوج» همراه با نام استاد، ساعت، شمارهٔ کلاس و دانشکده با ذخیره‌سازی ابری روی اکانت تلگرام.

 مولد کارت استوری و کارنامهٔ ترم (Story & Wrapped Card): ساخت تصاویر گرافیکی باکیفیت با فونت وزیرمتن و آوینی، با امکان اشتراک‌گذاری مستقیم در استوری تلگرام، ارسال آنی تصویر به چت ربات و دانلود مستقیم روی دستگاه.

 خروجی استاندارد تقویم (.ics): دانلود مستقیم یا ارسال فایل تقویم کل ترم به چت تلگرام برای افزودن یک‌جای هفته‌های زوج و فرد به Google Calendar، Apple Calendar و Outlook.

 سیستم یادآور هفتگی اختصاصی: تنظیم دریافت اعلان خودکار در تلگرام برای روز دلخواه (جمعه یا شنبه) و ساعت انتخابی (08:00، 14:00، 20:00 یا 22:00) به همراه دکمهٔ تست آنی یادآور از داخل مینی‌اپ.

 تجربهٔ بومی با Telegram WebApp: حالت تمام‌صفحه (Fullscreen) خودکار در موبایل، بازخورد لرزشی (Haptic Feedback)، افزودن میان‌بر به صفحهٔ اصلی گوشی (Home Screen)، قفل بیومتریک و پشتیبانی از تم تیره و روشن.


۲. هستهٔ ربات تلگرام (AzadWeekBot/)

 پاسخ‌گویی در چت خصوصی، گروه و حالت درون‌خطی (Inline): استعلام وضعیت هفتهٔ فعلی، هفتهٔ آینده، تقویم کامل ترم و تبدیل تاریخ شمسی، همراه با امکان استفادهٔ اینلاین با تایپ @AzadWeekBot در تمامی چت‌ها.

 قفل عضویت اجباری چندکاناله: بررسی عضویت کاربران در کانال‌های تعیین‌شده (REQUIRED_CHANNELS) با سیستم کش هوشمند برای پاسخ‌گویی بدون تأخیر.

 مدیریت هوشمند در گروه‌ها و حذف خودکار: پاسخ به پرسش‌های وضعیت هفته در گروه‌ها و حذف خودکار پیام‌های موقت پس از ۲۰ ثانیه جهت حفظ نظم گروه.

 موتور کرون‌جاب یکپارچه (cron_sender.php):

 اعلان خودکار شنبه‌ها ساعت ۰۷:۰۰ صبح: ارسال وضعیت هفتهٔ جدید به تمام کاربران در ابتدای هر هفته.

 ارسال یادآورهای اختصاصی مینی‌اپ: ارسال پیام یادآور هفتگی بر اساس زمان‌بندی انتخابی هر دانشجو.

 صف ارسال همگانی ایمن: ارسال دسته‌ای پیام‌ها و فورواردهای همگانی (۴۰ کاربر در هر دقیقه) بدون محدودیت تلگرام.

 پاک‌سازی پیام‌های گروه: حذف خودکار پیام‌های منقضی‌شدهٔ ربات در گروه‌های دانشجویی.

 پنل مدیریت پیشرفتهٔ ادمین: مشاهدهٔ آمار دقیق اعضا، رشد روزانه و هفتگی، صف ارسال همگانی و امکان حذف یک‌کلیکی آخرین پیام همگانی از چت تمامی کاربران.


آموزش نصب و راه‌اندازی گام‌به‌گام

پیش‌نیازها

 PHP نسخهٔ ۸.۰ یا بالاتر به همراه افزونه‌های curl، mbstring، json و gd (با پشتیبانی از WebP و FreeType).

 دامنه و هاست مجهز به گواهی SSL (پروتکل HTTPS) جهت ثبت وبهوک و اجرای مینی‌اپ تلگرام.

 توکن ربات تلگرام دریافت‌شده از @BotFather.


گام اول: دریافت سورس و آپلود روی هاست

مخزن پروژه را کلون یا دانلود کنید:

git clone https://github.com/ArianPashae/AzadWeekBot.git

پوشه‌های AzadWeekBot و AzadWeek را روی هاست خود آپلود کنید. فایل AzadWeek/connect.php به‌صورت خودکار پوشهٔ AzadWeekBot را در کنار مینی‌اپ یا از طریق متغیر محیطی AZAD_WEEK_BOT_ROOT شناسایی می‌کند.


گام دوم: پیکربندی فایل AzadWeekBot/config.php

فایل AzadWeekBot/config.php را باز کرده و مقادیر نمونه را با اطلاعات اختصاصی خود جایگزین کنید:

define('BOT_TOKEN', 'YOUR_BOT_TOKEN_HERE');
define('BOT_USERNAME', 'AzadWeekBot');
define('BASE_URL', 'https://example.com/AzadWeekBot/');
define('MINIAPP_URL', 'https://example.com/AzadWeek/?action=app&v=17');
define('ADMIN_IDS', ['YOUR_ADMIN_TELEGRAM_ID']);
define('CRON_SECRET_KEY', 'YOUR_CRON_SECRET_KEY');

 در آرایهٔ REQUIRED_CHANNELS آیدی و لینک کانال‌های موردنظر برای قفل عضویت اجباری را قرار دهید (ربات باید در این کانال‌ها ادمین باشد).

 در آرایهٔ $weeks_config در انتهای فایل config.php، تاریخ شروع و پایان هفته‌های ترم تحصیلی جدید را به شمسی وارد کنید.


گام سوم: ثبت وبهوک (Webhook) تلگرام

آدرس زیر را پس از جایگزینی توکن ربات و دامنهٔ خود در مرورگر باز کنید تا وبهوک ثبت شود:

https://api.telegram.org/bot<YOUR_BOT_TOKEN>/setWebhook?url=https://example.com/AzadWeekBot/bot.php

پس از دریافت اولین پیام، ربات به‌صورت خودکار دستورات منو و دکمهٔ Open App را روی آدرس مینی‌اپ شما تنظیم می‌کند.


گام چهارم: تنظیم کرون‌جاب (Cron Job)

برای فعال‌سازی اعلان شنبه‌ها، یادآورهای هفتگی، صف ارسال همگانی و پاک‌سازی پیام‌های گروه، یک کرون‌جاب با بازهٔ زمانی هر ۱ دقیقه (* * * * *) روی آدرس زیر ایجاد کنید:

https://example.com/AzadWeekBot/cron_sender.php?secret=YOUR_CRON_SECRET_KEY

توسعه‌دهنده و مجوز انتشار

این پروژه توسط آرین پاشایی (Arian Pashae) طراحی و توسعه یافته و تحت مجوز متن‌باز MIT License منتشر شده است.

 وب‌سایت رسمی: arianpashae.com

 کانال تلگرام آرین پاشایی: @ArianPashaeChannel

 کانال مهندسی کامپیوتر: @ComputerAzadKsh

 ربات تلگرام آزادویک: @AzadWeekBot

About

Smart Telegram Bot & Native Mini App (WebApp / PWA) for Islamic Azad University Odd & Even Academic Weeks | ربات و مینی‌اپ تقویم زوج و فرد دانشگاه آزاد

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages