Search the Community
Showing results for tags 'ديسكورد'.
-
:جدول المُحتويات مقدمة تحليلية: كيف تُربط MTA:SA مع Discord باستخدام Webhook؟ المفهوم العام (اللوجيك الأساسي) تحليل الكود خطوة بخطوة خلاصة المنطق كاملًا ملاحظات إضافية للمطور مصادر مهمة مقدمة تحليلية: كيف تُربط MTA:SA مع Discord باستخدام Webhook؟ السلام عليكم ورحمة الله وبركاته في هذا المشروع، نريد تمكين اللاعب من إرسال رسالة من داخل اللعبة إلى قناة في Discord. لتحقيق هذا سنستخدم: - أمر داخل اللعبة (command) - كود Lua في سيرفر MTA - خدمة Webhook من Discord - دالة `fetchRemote` في MTA لإرسال البيانات إلى Discord المفهوم العام (اللوجيك الأساسي): 1. اللاعب يكتب أمر داخل اللعبة مثل `/discord مرحباً`. 2. السكربت يقرأ هذا الأمر ويستخرج الرسالة. 3. السكربت يُنشئ رسالة منسّقة (باستخدام JSON). 4. يتم إرسال هذه الرسالة إلى Discord عبر رابط Webhook. 5. Discord يعرض الرسالة داخل القناة المحددة. تحليل الكود خطوة بخطوة: رابط الويب هوك local discordWebhook = "https://discord.com/api/webhooks/...." - هذا هو الرابط الأساسي. - Discord يوفّره لك لكل قناة تريد استقبال الرسائل فيها. - يتم تخزينه في متغير `discordWebhook` لاستخدامه لاحقًا عند الإرسال. دالة تنفيذ الأمر function sendMessageToDiscord(player, command, ...) - هذه الدالة يتم ربطها بالأمر `/discord`. - يتم تنفيذها تلقائيًا عندما يكتب اللاعب الأمر. - البراميتر `player` هو كائن اللاعب الذي نفّذ الأمر. - البراميتر `...` يمثل كل الكلمات التي كتبها اللاعب بعد الأمر. جمع الرسالة local message = table.concat({...}, " ") - يتم دمج الكلمات التي كتبها اللاعب إلى جملة واحدة. - مثلًا: `/discord السلام عليكم يا شباب` → تصبح `"السلام عليكم يا شباب"`. التحقق من وجود رسالة if message == "" then outputChatBox("اكتب رسالة! مثال: /discord مرحبا", player, 255, 0, 0) return end - إذا لم يكتب اللاعب أي شيء، يتم عرض تنبيه داخل اللعبة. - يتم إيقاف تنفيذ الدالة (باستخدام `return`). تجهيز بيانات الرسالة local playerName = getPlayerName(player) - نحصل على اسم اللاعب الذي كتب الرسالة. إعداد شكل الرسالة (باستخدام `embeds`) local webhookData = { username = "MTA:SA Server", -- اسم البوت في Discord embeds = {{ title = "رسالة من اللاعب", description = message, color = 3447003, -- لون الشريط (أزرق) author = {name = playerName}, footer = {text = "MTA:SA Discord Bot"}, timestamp = os.date("!%Y-%m-%dT%H:%M:%SZ") -- وقت الإرسال بصيغة ISO }} } هذا الجزء هو أهم جزء، لأن Discord يستخدم ما يسمى بـ `embeds` لتنسيق الرسائل، ويتضمن: +----------------+----------------------------------------+ | العنصر | وظيفته | +----------------+----------------------------------------+ | username | اسم البوت في الديسكورد | | title | عنوان الرسالة داخل الـ Embed | | description | نص الرسالة الحقيقي | | color | لون الشريط الجانبي (بالـ Hex) | | author.name | اسم مرسل الرسالة (اللاعب) | | footer.text | تذييل صغير | | timestamp | وقت الإرسال بشكل احترافي | +----------------+----------------------------------------+ إرسال البيانات باستخدام fetchRemote fetchRemote(discordWebhook, { method = "POST", headers = {["Content-Type"] = "application/json"}, postData = toJSON(webhookData):sub(2, -2) }, function(responseData, responseInfo) ... end) ما الذي يحدث هنا بالضبط؟ fetchRemote: دالة من MTA لإرسال طلب HTTP إلى عنوان خارجي (هنا Discord). method = "POST": نوع الطلب الذي نستخدمه لإرسال بيانات إلى الخادم (Discord في هذه الحالة). headers: نقوم بإخبار Discord بأن نوع البيانات التي نرسلها هي JSON. postData: نقوم بتحويل البيانات إلى JSON باستخدام دالة toJSON، ثم نحذف الأقواس الزائدة [] باستخدام :sub(2, -2) لتهيئة البيانات بشكل صحيح. function(responseData, responseInfo): هذه دالة "رد الفعل"، التي تُنفذ عندما يرد Discord على الطلب. التعامل مع النتيجة if responseInfo.success then outputChatBox("تم إرسال رسالتك إلى Discord!", player, 0, 255, 0) - إذا تم إرسال الرسالة بنجاح، يُبلغ اللاعب برسالة نجاح. التعامل مع الأخطاء else local statusCode = responseInfo.statusCode or "غير معروف" outputChatBox("فشل الإرسال! (الكود: " .. statusCode .. ")", player, 255, 0, 0) - إذا فشل الإرسال، يتم طباعة الكود الخطأ، مثل: 400: خطأ في البيانات (ربما الرسالة فارغة أو JSON غير صالح). 401 / 404: رابط Webhook غير صحيح أو تم حذفه. 429: تم إرسال عدد كبير جدًا من الرسائل (تم تجاوز الحد المسموح به). ربط الأمر مع الدالة addCommandHandler("discord", sendMessageToDiscord) - هذا السطر هو الذي يربط `/discord` مع الدالة التي كتبناها. - أي شخص يكتب هذا الأمر يتم تنفيذ الكود أعلاه له. خلاصة المنطق كاملًا: ملاحظات إضافية للمطور: - Webhooks يمكن استخدامها لعدة استخدامات مثل: - إرسال تنبيهات عند دخول أو خروج اللاعبين. - إرسال رسائل النظام. - تتبع الأخطاء في السكربتات. - يمكنك تحسين السكربت بإضافة: - صورة اللاعب. - أزرار تفاعلية (عبر Discord Buttons). - أكثر من Embed في نفس الرسالة. مصادر مهمة: - رابط السكريبت كامل على جيت هب مع الشرح - رابط السكربت على موقع المودات بالتوفيق لكم
-
شرح السكربت: هذا السكربت يقوم بإنشاء بوت على Discord يستخدم مكتبة discord.py للتفاعل مع اللاعبين في خادم MTA:SA (Multi Theft Auto: San Andreas). بالإضافة إلى ذلك، يتم استخدام Flask لإنشاء API لاستقبال الرسائل من خادم MTA وإرسالها إلى قناة على Discord. الوصف العام: البوت يقوم بتنفيذ أوامر مثل !players لعرض قائمة اللاعبين المتصلين، !kick و !ban لطرد اللاعبين أو حظرهم، بالإضافة إلى أوامر أخرى مثل إعطاء المال للاعبين، تحريكهم، تغيير جلدهم، وغيرها. كما يتم استخدام Flask لاستقبال رسائل من خادم MTA عبر HTTP POST وإرسالها إلى قناة محددة على Discord. كيفية استخدام السكربت: 1. إعداد البوت على Discord: يتم إعداد البوت باستخدام discord.py ويجب إضافة البوت إلى الخادم باستخدام التوكن الخاص به. يتم تحديد صلاحيات البوت باستخدام commands.has_role('Admin') للتأكد من أن الأوامر التنفيذية (مثل !kick و !ban) يمكن تنفيذها فقط بواسطة المستخدمين الذين لديهم دور "Admin". 2. استخدام أوامر البوت: !players: لعرض قائمة اللاعبين المتصلين في الخادم. !kick <player_name> <reason>: لطرد لاعب من الخادم مع تحديد السبب. !ban <player_name> <reason>: لحظر لاعب من الخادم مع تحديد السبب. !givemoney <player_name> <money>: لإعطاء لاعب مبلغ معين من المال. !setpos <player_name> <x> <y> <z>: لتحريك لاعب إلى موقع محدد. !getpos <player_name>: لعرض موقع لاعب معين. !setskin <player_name> <skin_id>: لتغيير جلد لاعب. !getskin <player_name>: لعرض جلد لاعب معين. 3. استخدام Flask لاستقبال الرسائل من MTA: يتم إعداد Flask لإنشاء API على العنوان http://127.0.0.1:5000/chat لاستقبال الرسائل من خادم MTA. يتم إرسال الرسائل إلى قناة Discord المحددة عند استلامها من MTA عبر POST. 4. تشغيل البوت والخادم: بعد إعداد الكود، يمكنك تشغيل البوت باستخدام الأمر bot.run('token')، مع استبدال token بالتوكن الخاص بالبوت. في نفس الوقت، يتم تشغيل خادم Flask في خيط منفصل. 5. متطلبات إضافية: pip install discord.py Flask requests حسابي علي ديسكورد ahmedly رابط https://github.com/Ahmed-Ly/botdiscord https://community.multitheftauto.com/index.php?p=resources&s=details&id=18961
-
السلام عليكم ورحمة الله وبركاتة أسعد الله أيامكم بكل خير أحبتي في لله اليوم أطرح لكم موقع جداً جداً ممتاز ويحتاج الدعم الكبير منا وهو عبارة عن دليل عربي للبرنامج الديسكورد ويهتم بنشر المواضيع والفديوهات كأخبار التحديثات وأقسام للمطورين كادروس وإلى آخره لأخذ نظرة عامة أضغططء هنا https://discord-ar.com السيرفر https://discord.gg/7Q56WQq
-
ديسكورد خاص بلعبة Multi Theft Auto: San Andreas اهلاً وسهلاً بكم! https://discord.gg/MtPRmgB
