File size: 6,030 Bytes
335f0ee
a950920
 
 
 
 
d6e5fc8
a950920
 
335f0ee
 
 
a950920
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d6e5fc8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
---
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*