انتقل إلى المحتوى

كيفية استخدام Discord API مع Python: دليل متعمق

توفر Discord API عددًا لا يحصى من الفرص للمطورين للتكامل مع Discord، وبناء الروبوتات، وأتمتة الخوادم، وتعزيز المجتمعات باستخدام Python. في هذا الدليل الشامل الذي يزيد عن 2000 كلمة، سنتعمق في إمكانيات Discord API والمتطلبات الأساسية والمصادقة ونقاط النهاية والمكتبات ونماذج المشروعات والتقنيات المتقدمة - ونزودك بكل ما تحتاج إلى معرفته للبدء.

لماذا نستخدم Discord API مع Python؟

قبل أن نتعمق في الكود، من المفيد تسليط الضوء على بعض الأشياء الرائعة التي أنشأها المطورون باستخدام Python Discord API:

  • مي 6 - أحد أشهر روبوتات Discord مع أكثر من 250 مليون مستخدم. يوفر الاعتدال والتسوية والموسيقى وTwitch وReddit وعمليات التكامل الأخرى.

  • YAGPDB - روبوت مليء بالميزات مع أكثر من 100 أمر للإشراف والتسجيل وإدارة الأدوار والتذكيرات والمزيد. يُستخدم على أكثر من 600,000 خادم Discord.

  • الخلاف - مكتبة مجمعة API بارزة مكنت العديد من روبوتات Discord الأقدم في Python. يقدم تجريدات سهلة للروبوتات وعمليات التكامل.

  • غير متصل - روبوت بث الموسيقى مع قائمة انتظار التشغيل، ودعم YouTube/Twitch، ومرشحات الصوت مثل تعزيز الجهير.

  • discordbot.py - يستفيد الروبوت من التعلم الآلي للإشراف الآلي على المحتوى السام والبريد العشوائي. يعرض تكاملات الذكاء الاصطناعي.

  • ردود فعل الخلاف - روبوت ملاحظات العملاء الذي يسمح للمستخدمين بإرسال التقييمات والتقييمات والتعليقات عبر Discord DMs بسهولة.

وهذه مجرد أمثلة قليلة - قام المطورون بدمج Discord بطرق إبداعية مع منصات تتراوح من Reddit وGitHub إلى تطبيقات مثل Spotify باستخدام مرونة Python.

المتطلبات الأساسية لاستخدام Discord API

قبل الغوص في أي عملية ترميز، ستحتاج إلى تغطية هذه الخطوات الأساسية:

قم بإنشاء حساب Discord

  • من الواضح أنك بحاجة إلى حساب Discord – قم بالتسجيل مجانًا على لا توافق إذا لم يكن لديك واحدة.

إنشاء خادم ديسكورد

  • قم بإنشاء خادم في Discord للاختبار. يمنحك هذا الوصول الإداري الكامل بدلاً من الاعتماد على خادم آخر.

  • بالنسبة إلى الروبوتات العامة/الإنتاجية، ستحتاج لاحقًا إلى إنشاء روابط دعوة لإضافتها إلى خوادم أخرى.

تمكين وضع المطور

  • في Discord، انتقل إلى إعدادات المستخدم > خيارات متقدمة > وضع المطور لفتح الخيارات الإضافية.

تثبيت بايثون

  • قم بتثبيت Python وجاهز للبرمجة. تدعم Discord API إصدار Python 3.8 أو أعلى.

  • اختياريًا، قم بإعداد بيئة افتراضية لعزل التبعيات.

الحصول على بيانات اعتماد Discord API

لإجراء استدعاءات API، نحتاج إلى إنشاء بيانات الاعتماد:

إنشاء تطبيق ديسكورد

  • في مجلة بوابة مطور Discord، إنشاء تطبيق جديد.

  • يؤدي هذا إلى تسجيل التطبيق وتوفير خيارات التكوين.

إنشاء حساب بوت

  • ضمن علامة تبويب الروبوت في تطبيقك، قم بإضافة حساب روبوت جديد.

  • يمكنك تخصيص اسم المستخدم والصورة الرمزية وما إلى ذلك.

انسخ الرمز المميز

  • اكشف عن الرمز المميز للروبوت وانسخه ضمن علامة التبويب Bot - يُستخدم هذا لمصادقة طلبات واجهة برمجة التطبيقات.

  • احتفظ بهذا آمنًا مثل كلمة المرور. يمكن لأي شخص لديه الرمز المميز التحكم في الروبوت الخاص بك.

الحصول على معرفات القناة

  • ضمن خادم Discord الخاص بك، انقر بزر الماوس الأيمن على القناة وحدد "نسخ المعرف" للحصول على معرف القناة.

  • سنستخدم معرفات القناة لتحديد مكان إرسال الرسائل.

المصادقة باستخدام Discord API

باستخدام الرمز المميز ومعرفات القناة، يمكننا الآن المصادقة. هناك نهجان:

رموز الروبوت

  • يستخدم لحسابات الروبوت للمصادقة بالأذونات الكاملة.

  • قم بتمرير الرمز المميز في Authorization العنوان:

headers = {
    ‘Authorization‘: ‘Bot ‘ + bot_token
}

رموز المستخدم

  • يمكن استخدامه لحسابات المستخدمين ولكن لديه أذونات محدودة.

  • تم إنشاؤه ضمن علامة التبويب OAuth2 في تطبيق Discord dev الخاص بك.

  • المصادقة بالمثل:

headers = {
    ‘Authorization‘: ‘Bearer ‘ + user_token
} 

تعد رموز الروبوت أكثر شيوعًا للوصول الكامل إلى واجهة برمجة التطبيقات. تسمح رموز المستخدم بالتفاعل نيابة عن المستخدم.

نقاط نهاية واجهة برمجة تطبيقات Discord الشائعة

تعرض Discord API عددًا من نقاط النهاية لكيانات مختلفة مثل القنوات والرسائل والمستخدمين وما إلى ذلك.

تتضمن بعض نقاط النهاية الشائعة ما يلي:

  • القنوات - /channels/{channel.id}
  • الرسائل - /channels/{channel.id}/messages
  • ردود الأفعال - /channels/{channel.id}/messages/{message.id}/reactions
  • النقابات - /guilds/{guild.id}
  • الأعضاء - /guilds/{guild.id}/members

نقوم بتنفيذ عمليات مثل إرسال الرسائل عن طريق تقديم طلبات إلى نقاط النهاية هذه.

مكتبات غلاف واجهة برمجة تطبيقات Discord

بينما يمكننا استدعاء واجهة برمجة التطبيقات الأولية مباشرة، يمكن لمكتبات بايثون المجمعة تبسيط الأمور:

  • الخلاف - المكتبة الأكثر شعبية ذات التصميم البديهي الموجه للكائنات.
  • com.disnake - تم تحديث شوكة discord.py لأحدث تغييرات واجهة برمجة التطبيقات.
  • هيكاري – غلاف يركز على الأداء ويركز على السرعة.
  • com.nextcord – غلاف API غير متزامن مصمم لـ Python 3.10+.

توفر هذه تجريدات سهلة للروبوتات والأوامر والأحداث وما إلى ذلك، مما يوفر وقت التطوير مقابل الطلبات الأولية.

إرسال الرسائل

دعونا نرى بعض التعليمات البرمجية لإرسال رسالة باستخدام /channels/{channel.id}/messages نقطة النهاية:

import requests

url = "https://discord.com/api/v9/channels/1234567890/messages" 

data = {"content": "Hello world!"}

headers = {
    "Authorization": "Bot OTI..." 
}

response = requests.post(url, headers=headers, json=data)

نحن نستخدم طلب POST مع content حمولة الجسم لإرسال رسالتنا.

استرجاع الرسائل

لاسترداد الرسائل، نستخدم GET من نفس نقطة النهاية ونحلل الاستجابة:

response = requests.get(url, headers=headers)

json_data = response.json()

for message in json_data:
   print(message[‘content‘])

تحتوي الاستجابة على مجموعة من كائنات الرسائل التي يمكننا التكرار من خلالها.

تحرير الرسائل

لتحرير رسالة، نحتاج إلى message.id قيمة واستخدام طلب التصحيح:

message_id = "876543234567891234"

url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}"

data = {"content": "New message contents!"}

response = requests.patch(url, headers=headers, json=data)

الرد على الرسائل

يمكننا الرد باستخدام /reactions/{emoji}/@me نقطة النهاية:

url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}/reactions/👍/@me"

response = requests.put(url, headers=headers)

يؤدي هذا إلى إضافة رد فعل ممتاز على الرسالة الواردة من الروبوت.

حذف الرسائل

أخيرًا، يمكننا الحذف بطلب الحذف:

url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}"

response = requests.delete(url, headers=headers) 

يجب أن يوفر لك ما ورد أعلاه نظرة عامة جيدة على عمليات المراسلة الشائعة. الآن دعونا نناقش العمل مع WebSocket API.

الاستفادة من WebSocket API

توفر واجهة Discord API خيارين للاتصال:

REST API – يستخدم في معظم العمليات مثل إرسال الرسائل.

واجهة برمجة تطبيقات WebSocket - للاستماع إلى الأحداث في الوقت الحقيقي مثل الرسائل.

تسمح WebSockets بإنشاء روبوتات تعتمد على الأحداث وتتفاعل مع الأحداث المباشرة مقابل استطلاع REST API.

على سبيل المثال، إليك معالج الأحداث on_message البسيط:

import discord

class MyBot(discord.Client):

    async def on_ready(self):
       print(‘Logged in as {0}!‘.format(self.user))

    async def on_message(self, message):
        print(‘Message from {0.author}: {0.content}‘.format(message))

bot = MyBot()
bot.run(‘token‘)

يستجيب هذا للرسائل على الفور بدلاً من انتظار عودة استدعاء API.

معالجة أخطاء واجهة برمجة التطبيقات

عند استدعاء واجهة برمجة التطبيقات (API)، يجب علينا التعامل مع الأخطاء بأمان:

try:
    response = requests.post(url, headers=headers, json=data)
    response.raise_for_status()
except requests.exceptions.HTTPError as err:
    print(err)
    print(response.text)

تتضمن بعض الأخطاء الشائعة ما يلي:

  • 50001 - فقدان الوصول إلى الموارد
  • 50035 - نص الطلب غير صالح
  • 429 - سعر محدود

رؤية مستندات للحصول على تفاصيل حول الأخطاء.

بناء روبوت Discord في بايثون

دعنا نستعرض نموذجًا لروبوت لعرض القدرات الأساسية:

ميزات البوت:

  • إرسال تحية عند بدء التشغيل
  • الرد على الرسائل التي تحتوي على "مساعدة"
  • حذف الرسائل التي تحتوي على كلمات محظورة
  • إضافة ردود الفعل الرموز التعبيرية
  • الرد بالصور/الرموز التعبيرية
# Imports and initialization

import os
import discord
from dotenv import load_dotenv

load_dotenv()
TOKEN = os.getenv(‘DISCORD_TOKEN‘)

intents = discord.Intents.default()
intents.message_content = True 
client = discord.Client(intents=intents)

# Event handlers

@client.event
async def on_ready():
   channel = client.get_channel(1234567890)  
   await channel.send("I‘m alive!")

@client.event
async def on_message(message):

   if "help" in message.content:
      await message.channel.send("Contact our support team for assistance!")

   elif check_for_banned_words(message.content):
      await message.delete()

   # Reactions   
   emojis = ["👍", "❤️"]

   for emoji in emojis: 
       await message.add_reaction(emoji)

# Run bot             
client.run(TOKEN)

يعرض هذا روبوت Discord بسيط ولكنه عملي في Python يستجيب للأحداث والأوامر.

النصائح والحيل المتقدمة لـ Discord API

دعنا نختتم هذا الدليل ببعض النصائح الاحترافية:

  • استخدام تجريف الأعضاء مع LISTENER ينوي الحصول على تواريخ الانضمام وتعزيز الحالة وما إلى ذلك والتي ليست في البيانات الافتراضية.

  • استفد من معالجة اللغة الطبيعية والذكاء الاصطناعي مثل TensorFlow للإشراف الآلي بناءً على دلالات الرسائل مقابل الكلمات الرئيسية.

  • قم بجدولة الإعلانات والإعلانات المربحة وما إلى ذلك باستخدام وظائف cron أو برامج الجدولة مثل APScheduler للحصول على التوقيت الأمثل.

  • قم بتنفيذ منطق مخصص لحماية الروبوت الخاص بك من إساءة الاستخدام مثل تحديد المعدل للمستخدمين الفرديين.

  • أنشئ لوحة تحكم ويب باستخدام Flask أو FastAPI للتحكم في الروبوت الخاص بك عبر HTTP مقابل Discord فقط.

  • استخدم مؤشرات الترابط المتعددة لموازاة المهام الحسابية المكثفة مثل إنشاء تقارير التحليلات.

  • قم بإنشاء وظائف وتجريدات مساعدة حول استدعاءات واجهة برمجة التطبيقات (API) التي تستخدمها غالبًا.

يمكن أن يؤدي اختراق بعض هذه الإمكانات الأكثر تقدمًا إلى فصل الروبوت الخاص بك عن الآخرين.

الأفكار النهائية حول Discord API

توفر Discord API فرصًا رائعة لإنشاء برامج الروبوت والأدوات التي تعمل على تحسين تجربة Discord للمجتمعات والخوادم. إلى جانب تعدد استخدامات لغة Python، يتمتع المطورون بأساس مذهل لجلب عمليات التكامل الإبداعية والأتمتة لأكثر من 100 مليون مستخدم على Discord.

آمل أن يزودك هذا البحث العميق الذي يزيد عن 2000 كلمة بالمتطلبات الأساسية والمصادقة ومعرفة نقطة النهاية والأمثلة والتقنيات اللازمة لبدء الاستفادة من Discord API في مشاريعك الخاصة. سوف تشكرك المجتمعات التي تستخدم إبداعاتك!

بعض الموارد النهائية التي تستحق الاستكشاف أثناء مواصلة رحلتك:

  • بوابة مطور Discord – الوثائق المرجعية الرسمية لواجهة برمجة التطبيقات (API).
  • الخلاف - مكتبة غلاف بايثون التي يحتفظ بها المجتمع
  • Top.gg - دليل قائمة الروبوتات للترويج لإبداعاتك

الآن – انطلق وقم بصياغة شيء رائع! لا يستطيع مجتمع Python Discord الانتظار لرؤية ما تقوم ببنائه.

الانضمام إلى محادثة

لن يتم نشر عنوان بريدك الإلكتروني. الحقول المشار إليها إلزامية *