Spaces:
No application file
No application file
| title: Discord Ticket Bot | |
| emoji: 🎫 | |
| colorFrom: blue | |
| colorTo: purple | |
| sdk: gradio | |
| sdk_version: 6.10.0 | |
| app_file: app.py | |
| pinned: true | |
| license: mit | |
| # 🎫 Discord Ticket Bot | بوت نظام التذاكر | |
| > نظام تذاكر متكامل ثنائي اللغة (عربي/إنجليزي) - Production Ready | |
| > Full bilingual ticket system (Arabic/English) - Built with discord.py | |
| --- | |
| ## 📦 الملفات | Files | |
| ``` | |
| discord-ticket-bot/ | |
| ├── main.py ← الكود الرئيسي للبوت | |
| ├── app.py ← نقطة دخول Hugging Face | |
| ├── requirements.txt ← المتطلبات | |
| └── README.md ← هذا الملف | |
| ``` | |
| --- | |
| ## 🚀 خطوات النشر على Hugging Face | Deployment Steps | |
| ### الخطوة 1 - إنشاء Space جديد | |
| 1. اذهب إلى: https://huggingface.co/spaces | |
| 2. اضغط على **"Create new Space"** | |
| 3. اختر الإعدادات التالية: | |
| - **Space name:** `discord-ticket-bot` (أو أي اسم تريده) | |
| - **License:** MIT | |
| - **SDK:** اختر `Docker` أو `Gradio` | |
| - **Hardware:** Free (CPU Basic) - كافٍ تماماً | |
| 4. اضغط **"Create Space"** | |
| --- | |
| ### الخطوة 2 - رفع الملفات | |
| **الطريقة الأولى (عبر Git):** | |
| ```bash | |
| git clone https://huggingface.co/spaces/USERNAME/discord-ticket-bot | |
| cd discord-ticket-bot | |
| # انسخ ملفاتك هنا | |
| git add . | |
| git commit -m "Add Discord Ticket Bot" | |
| git push | |
| ``` | |
| **الطريقة الثانية (عبر واجهة الويب):** | |
| 1. افتح الـ Space الذي أنشأته | |
| 2. اضغط على تبويب **"Files"** | |
| 3. اضغط **"Add file"** → **"Upload files"** | |
| 4. ارفع الملفات: `main.py`, `app.py`, `requirements.txt` | |
| --- | |
| ### الخطوة 3 - إضافة TOKEN البوت ⚠️ مهم جداً | |
| هذه أهم خطوة! لا تضع التوكن داخل الكود أبداً. | |
| 1. اذهب إلى إعدادات الـ Space: **Settings** → **Variables and secrets** | |
| 2. اضغط **"New secret"** | |
| 3. أدخل: | |
| - **Name:** `TOKEN` | |
| - **Value:** توكن بوتك من Discord Developer Portal | |
| 4. اضغط **"Save"** | |
| > **ملاحظة:** الـ Secrets مشفّرة ولا يمكن لأحد رؤيتها، حتى أنت لن تراها بعد حفظها. | |
| --- | |
| ### الخطوة 4 - إعداد Discord Developer Portal | |
| 1. اذهب إلى: https://discord.com/developers/applications | |
| 2. افتح بوتك أو أنشئ جديداً | |
| 3. من قسم **Bot**: | |
| - فعّل **"Message Content Intent"** ✅ | |
| - فعّل **"Server Members Intent"** ✅ | |
| - فعّل **"Presence Intent"** ✅ | |
| 4. من قسم **OAuth2** → **URL Generator**: | |
| - Scopes: `bot`, `applications.commands` | |
| - Bot Permissions: | |
| - `Manage Channels` (لإنشاء Threads) | |
| - `Send Messages` | |
| - `Manage Messages` (لحذف الرسائل المخالفة) | |
| - `Embed Links` | |
| - `Attach Files` | |
| - `Read Message History` | |
| - `View Channels` | |
| - `Create Public Threads` | |
| - `Create Private Threads` | |
| - `Manage Threads` | |
| - `Send Messages in Threads` | |
| 5. انسخ الرابط وادع البوت لسيرفرك | |
| --- | |
| ### الخطوة 5 - ملاحظات مهمة لـ Hugging Face | |
| إذا كنت تستخدم SDK = `gradio`، يحتاج Hugging Face لـ Gradio interface. | |
| **الحل الأسهل:** استخدم Docker SDK. | |
| #### إذا اخترت Docker: | |
| أنشئ ملف `Dockerfile`: | |
| ```dockerfile | |
| FROM python:3.11-slim | |
| WORKDIR /app | |
| COPY requirements.txt . | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| COPY . . | |
| CMD ["python", "main.py"] | |
| ``` | |
| #### إذا اخترت Gradio (لإبقاء الـ Space حياً): | |
| أضف هذا في بداية `app.py`: | |
| ```python | |
| import threading | |
| import gradio as gr | |
| def run_bot(): | |
| import asyncio | |
| import main as bot_main | |
| asyncio.run(bot_main.main()) | |
| # تشغيل البوت في thread منفصل | |
| bot_thread = threading.Thread(target=run_bot, daemon=True) | |
| bot_thread.start() | |
| # واجهة Gradio بسيطة لإبقاء الـ Space حياً | |
| demo = gr.Interface( | |
| fn=lambda: "🟢 Bot is Running | البوت يعمل", | |
| inputs=[], | |
| outputs="text", | |
| title="Discord Ticket Bot Status" | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |
| ``` | |
| --- | |
| ## ⚙️ الإعدادات القابلة للتعديل | Configuration | |
| افتح `main.py` وعدّل هذه القيم في قسم `CONFIGURATION`: | |
| ```python | |
| OWNER_ID = 1429183440485486679 # ← ID المالك | |
| ERROR_CHANNEL_ID = 1488536752691085552 # ← قناة الأخطاء | |
| TICKET_CHANNEL_ID = 1488536530019549344 # ← قناة التذاكر | |
| LOG_CHANNEL_ID = 1488536921813680218 # ← قناة اللوق | |
| TICKET_SLOWMODE = 10 # ← Slow Mode بالثواني | |
| COOLDOWN_SECONDS = 60 # ← Cooldown بعد الإغلاق | |
| ``` | |
| --- | |
| ## 🎮 أوامر البوت | Bot Commands | |
| | الأمر | الوصف | الصلاحية | | |
| |-------|--------|-----------| | |
| | `/setup-ticket-panel` | إنشاء Panel التذاكر | المالك فقط | | |
| | `/help` | كيفية فتح تذكرة | الجميع | | |
| --- | |
| ## 🛡️ ميزات الحماية | Protection Features | |
| - ✅ منع السبام (رسائل/إيموجي/حروف عشوائية) | |
| - ✅ منع فتح أكثر من تذكرة | |
| - ✅ Cooldown 60 ثانية بعد الإغلاق | |
| - ✅ Slow Mode 10 ثواني | |
| - ✅ حظر الروابط والملفات | |
| - ✅ حظر Voice Messages | |
| - ✅ إعادة تشغيل تلقائية عند الانهيار | |
| - ✅ إرسال الأخطاء للقناة المحددة | |
| --- | |
| ## 📝 ملاحظات مهمة | Important Notes | |
| 1. **Private Threads** تتطلب Server Boost Level 2، وإلا ستستخدم Public Threads تلقائياً | |
| 2. تأكد أن البوت لديه **Administrator** أو الصلاحيات المذكورة أعلاه | |
| 3. يجب أن يكون رتبة البوت **أعلى من رتب الموظفين** في قائمة الرتب | |
| --- | |
| *Built with ❤️ using discord.py | مبني بـ discord.py* |