یک ربات تلگرام حرفهای با پنل وب ادمین، تماماً روی Cloudflare. شامل: ارسال پیام زمانبندیشده، تولید محتوا با AI، دانلود از یوتیوب/اسپاتیفای/گیتهاب، نظرسنجی، تحلیل آمار.
- این پروژه چیست؟
- چه امکاناتی دارد؟
- ترکیب تکنولوژی
- معماری پروژه
- پیشنیازها
- راهاندازی گامبهگام
- ساختار پوشهها
- دستورات پرکاربرد
- تنظیم دامنه اختصاصی
- سوالات متداول (FAQ)
- عیبیابی
- امنیت
- مستندات بیشتر
- مجوز
این پروژه شامل دو بخش است که با هم کار میکنند:
| بخش | توضیح ساده |
|---|---|
| 🤖 ربات تلگرام | یک ربات تلگرام که کاربرها باهاش حرف میزنن. میتونه محتوا با AI بسازه، از یوتیوب/گیتهاب دانلود کنه، نظرسنجی بگیره، آمار بده. |
| 🌐 پنل ادمین | یک سایت وب که شما (بهعنوان مدیر ربات) بازش میکنید تا پیامهای زمانبندیشده بسازید، کانال مدیریت کنید، آمار ببینید. |
نکته جذاب: پنل ادمین رو میتونید از داخل خود تلگرام باز کنید (بهصورت یک Mini App) — نیازی نیست URL جداگانهای در مرورگر باز کنید!
هر دو بخش روی Cloudflare اجرا میشن — یعنی:
- ⚡ سریع (سرورهای خود Cloudflare در سراسر دنیا)
- 💰 رایگان (برای استفادههای معمولی کافیه)
- 🔒 امن (HTTPS خودکار، محیط ایزوله)
| امکان | توضیح |
|---|---|
| 📝 Markdown و HTML | پیامهای زیبا با فرمتبندی کامل |
| 🤖 AI Content Generation | تولید محتوا با OpenAI/Claude/Gemini/Groq |
| 📅 Scheduled Messages | زمانبندی ارسال (هر ۵ دقیقه بررسی) |
| 📊 Analytics | آمار کانال، رشد، نرخ موفقیت |
| 📋 Polls & Quizzes | نظرسنجی و تحلیل نتایج |
| 📥 Media Downloader | دانلود از YouTube/Spotify/Instagram/TikTok |
| 🐙 GitHub Downloader | دانلود فایل/Release/Repository |
| ⚡ Inline Mode | جستجو مستقیم در چت |
| 🌐 WebApp Menu | دکمه باز کردن پنل |
| 🌍 Bilingual | فارسی/انگلیسی |
| امکان | توضیح |
|---|---|
| 📊 Dashboard | نمای کلی وضعیت و آمار |
| 📅 Scheduled Messages | ساخت/ویرایش پیامهای تکراری |
| 📢 Broadcast | ارسال آنی به کانال |
| 📝 Templates | ذخیره و استفاده مجدد |
| 📺 Channel Manager | مدیریت کانالها |
| 👥 Admin Manager | مدیریت دسترسی |
| 📈 Analytics | نمودار و تحلیل عمیق |
| 📜 Activity Log | تاریخچه تمام تغییرات |
| 🔐 2FA | ورود دو مرحلهای |
| 🌗 Dark Mode | تطبیق با تم |
TypeScript: 83.3% (اصلیترین زبان)
JavaScript: 14.6% (کانفیگها و ابزارها)
CSS: 2.1% (استایلها)
| بخش | تکنولوژی |
|---|---|
| Frontend | Next.js 16, React, TypeScript, Tailwind CSS |
| Backend | Cloudflare Workers, D1, KV |
| Database | SQLite (D1), Redis-like (KV) |
| ORM | Prisma |
| UI Components | shadcn/ui |
| CLI | Wrangler, Bun |
┌──────────────────────────────────────────────────────────────┐
│ کاربران تلگرام + کانالهای شما │
└──────────────┬────────────────────────────────┬──────────────┘
│ │
│ ۱) Webhook Messages │ ۹) WebApp Button
▼ ▼
┌──────────────────────────────────┐ ┌──────────────────────────┐
│ 🤖 Cloudflare Worker │ │ 🌐 Cloudflare Pages │
│ (ربات تلگرام) │ │ (پنل ادمین) │
│ │ │ │
│ • پردازش پیامها │◄─│ • Dashboard + Analytics │
│ • تولید محتوا با AI │ │ • Scheduled Messages │
│ • دانلود مدیا │ │ • Broadcast │
│ • نظرسنجی │ │ • Channel Manager │
│ • Cron (هر ۵ دقیقه) │ │ • Admin Manager + 2FA │
│ │ │ │
│ 💾 KV Database │ │ 💾 D1 (SQLite) │
└──────────────┬────────────────────┘ └────────────┬────────────┘
│ │
│ ۲) Telegram Bot API │ ۳) Telegram API
└────────────────────────────────────┘
- به @BotFather برید و
/newbotبفرستید - Bot Token بگیرید (بعداً در Secrets ذخیره میکنید)
- به @userinfobot پیام بدید
- آیدی عددی یادداشت کنید
# Node.js 20+
brew install node # macOS
# یا: https://nodejs.org/
# Bun (پیشنهادی)
curl -fsSL https://bun.sh/install | bash
# Wrangler
npm install -g wrangler- ثبتنام رایگان: dash.cloudflare.com
git clone https://github.com/Arefmtl/arefera_admin_panel.git
cd arefera_admin_panel
# نصب پکیجها
bun install
# یا: npm installwrangler login
# یه مرورگر باز میشه — دکمه Allow رو بزنید# D1 (پنل)
wrangler d1 create telegram-bot-panel
# کپی `database_id` و در wrangler.pages.toml بگذارید
# KV (ربات)
wrangler kv:namespace create BOT_DB
# کپی `id` و در wrangler.toml بگذارید# Bot Token (از @BotFather)
wrangler secret put BOT_TOKEN
# Owner ID (Telegram User ID شما)
wrangler secret put OWNER_ID
# پسورد پنل (رمز قوی بسازید)
wrangler secret put PANEL_PASSWORD --config wrangler.pages.toml
# Session Secret (برای encryption cookies)
openssl rand -hex 32 | wrangler secret put PANEL_SESSION_SECRET --config wrangler.pages.toml
# Webhook Secret (برای تأیید درخواستهای Telegram)
openssl rand -hex 32 | wrangler secret put WEBHOOK_SECRET
# [اختیاری] AI API Key
wrangler secret put AI_API_KEY
# [اختیاری] Web App URL
wrangler secret put WEB_APP_URL# پنل
bun run pages:deploy
# ربات
wrangler deploy
# Setup Webhook
curl "https://your-worker-name.workers.dev/setup-webhook"- تلگرام رو باز کنید
- رباتتون رو سرچ کنید و
/startبفرستید - دکمه 🌐 Panel رو بزنید
🎉 تبریک!
.
├── 📁 src/ # کد پنل (Next.js + TypeScript)
│ ├── 📁 app/ # صفحات و API
│ ├── 📁 components/ # React Components
│ ├── 📁 lib/ # Utilities
│ └── 📁 hooks/ # Custom Hooks
│
├── 📁 prisma/ # Database Schema
│ ├── schema.prisma # Prisma Schema
│ └── migrations/ # SQL Migrations
│
├── 📁 public/ # Static Files
│
├── worker.js # 🤖 Telegram Bot (Worker)
├── wrangler.toml # Worker Config
├── wrangler.pages.toml # Pages Config
│
├── package.json
├── tsconfig.json
├── tailwind.config.ts
├── next.config.ts
│
└── README.md # این فایل
| کار | دستور |
|---|---|
| 🏃 Dev Server | bun run dev |
| 🔍 Lint | bun run lint |
| 🌐 Build Panel | bun run pages:build |
| 🚀 Deploy Panel | bun run pages:deploy |
| ��� Deploy Bot | wrangler deploy |
| 📊 Migrate DB | bun run d1:migrate:prod |
| 📜 View Logs | wrangler tail |
| 🔍 Query DB | wrangler d1 execute telegram-bot-panel --remote --command "SELECT * FROM Admin" |
| ⚙️ Setup Webhook | curl https://your-worker-name.workers.dev/setup-webhook |
| 🏥 Health Check | curl https://your-worker-name.workers.dev/health |
آیا واقعاً رایگانه؟
بله! پلن رایگان Cloudflare:
- Workers: ۱۰۰,۰۰۰ درخواست/روز
- Pages: bandwidth نامحدود
- D1: ۵GB ذخیرهسازی
- KV: ۱۰۰,۰۰۰ خواندن/روز
برای ربات شخصی کاملاً کافیه.
چطور Schema عوض کنم؟
# ویرایش: prisma/schema.prisma
# سپس:
bunx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > prisma/migrations/init.sql
# اعمال:
bun run d1:migrate:prodاگه Bot Token لو رفت؟
۱. /revoke در @BotFather
۲. توکن جدید ست کنید:
wrangler secret put BOT_TOKEN
wrangler secret put BOT_TOKEN --config wrangler.pages.toml۳. دوباره دیپلوی کنید
چطور Backup بگیرم؟
wrangler d1 export telegram-bot-panel --remote --output=backup.sqlwrangler d1 execute telegram-bot-panel --remote --command "SELECT name FROM sqlite_master WHERE type='table'"
# اگه خالی بود:
bun run d1:migrate:prod# چک کنید:
curl https://your-worker-name.workers.dev/health
# Setup مجدد:
curl https://your-worker-name.workers.dev/setup-webhook
# لاگها:
wrangler tailBOT_TOKENست شده؟- Cron فعال؟ (
crons = ["*/5 * * * *"]در wrangler.toml) - Status پیام
pending؟ - لاگها:
wrangler tail
- 🔒 HTTPS اجباری
- 🔑 Bot Token بهصورت Secret (هرگز در کد نیست)
- 🧂 Password Hash (SHA-256 + salt)
- 🍪 Secure Cookies
- 🛡️ 2FA (TOTP)
- ⏱️ Rate Limiting
- 📝 Audit Log
- 🔐 Webhook Secret
- پسورد را یک رمز قوی انتخاب کنید
- 2FA فعال کنید
-
.env.localیا.envرو به.gitignoreاضافه کنید - Bot Token رو با کسی نشریید
- Secrets رو هرگز در GitHub نگذارید
| منبع | لینک |
|---|---|
| Telegram Bot API | https://core.telegram.org/bots/api |
| Cloudflare Workers | https://developers.cloudflare.com/workers/ |
| Cloudflare D1 | https://developers.cloudflare.com/d1/ |
| Next.js | https://nextjs.org/docs |
| Prisma | https://www.prisma.io/docs/ |
Open Source — آزادانه استفاده، تغییر و توزیع کنید.
اگه دوست داشتید، یه ⭐ بدید! 🌟
مشکل دارید؟
ساخته شده با ❤️ برای جامعه فارسیزبان