Spaces:
No application file
No application file
A newer version of the Gradio SDK is available: 6.12.0
metadata
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 جديد
- اذهب إلى: https://huggingface.co/spaces
- اضغط على "Create new Space"
- اختر الإعدادات التالية:
- Space name:
discord-ticket-bot(أو أي اسم تريده) - License: MIT
- SDK: اختر
DockerأوGradio - Hardware: Free (CPU Basic) - كافٍ تماماً
- Space name:
- اضغط "Create Space"
الخطوة 2 - رفع الملفات
الطريقة الأولى (عبر Git):
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
الطريقة الثانية (عبر واجهة الويب):
- افتح الـ Space الذي أنشأته
- اضغط على تبويب "Files"
- اضغط "Add file" → "Upload files"
- ارفع الملفات:
main.py,app.py,requirements.txt
الخطوة 3 - إضافة TOKEN البوت ⚠️ مهم جداً
هذه أهم خطوة! لا تضع التوكن داخل الكود أبداً.
- اذهب إلى إعدادات الـ Space: Settings → Variables and secrets
- اضغط "New secret"
- أدخل:
- Name:
TOKEN - Value: توكن بوتك من Discord Developer Portal
- Name:
- اضغط "Save"
ملاحظة: الـ Secrets مشفّرة ولا يمكن لأحد رؤيتها، حتى أنت لن تراها بعد حفظها.
الخطوة 4 - إعداد Discord Developer Portal
- اذهب إلى: https://discord.com/developers/applications
- افتح بوتك أو أنشئ جديداً
- من قسم Bot:
- فعّل "Message Content Intent" ✅
- فعّل "Server Members Intent" ✅
- فعّل "Presence Intent" ✅
- من قسم OAuth2 → URL Generator:
- Scopes:
bot,applications.commands - Bot Permissions:
Manage Channels(لإنشاء Threads)Send MessagesManage Messages(لحذف الرسائل المخالفة)Embed LinksAttach FilesRead Message HistoryView ChannelsCreate Public ThreadsCreate Private ThreadsManage ThreadsSend Messages in Threads
- Scopes:
- انسخ الرابط وادع البوت لسيرفرك
الخطوة 5 - ملاحظات مهمة لـ Hugging Face
إذا كنت تستخدم SDK = gradio، يحتاج Hugging Face لـ Gradio interface.
الحل الأسهل: استخدم Docker SDK.
إذا اخترت Docker:
أنشئ ملف 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:
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:
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
- Private Threads تتطلب Server Boost Level 2، وإلا ستستخدم Public Threads تلقائياً
- تأكد أن البوت لديه Administrator أو الصلاحيات المذكورة أعلاه
- يجب أن يكون رتبة البوت أعلى من رتب الموظفين في قائمة الرتب
Built with ❤️ using discord.py | مبني بـ discord.py