لقد حدث التطوير في فرع التطوير. نحن نعمل على الميزات والتحسينات الجديدة. للوصول إلى أحدث إصدار من المكتبة، يرجى مراجعة فرع التطوير.
Concord هي مكتبة C99 Discord API غير متزامنة مع الحد الأدنى من التبعيات الخارجية، وترجمة منخفضة المستوى لوثائق Discord الرسمية إلى كود C.
فيما يلي أمثلة بسيطة، راجع examples/
للحصول على نظرة عامة أفضل.
ملاحظة: تحتاج إلى استبدال GUILD_ID
بمعرف النقابة الفعلي، وإلا فلن يتم تجميع هذا المثال! يمكنك استخدام ماكرو للقيام بذلك: #define GUILD_ID 1234567898765431
#include <string.h>#include <concord/discord.h>void on_ready(struct discord *client, const struct discord_ready *event) {struct discord_create_guild_application_command params = { .الاسم = "بينغ"، .description = "Ping command!"};discord_create_guild_application_command(client, events->application->id, GUILD_ID, ¶ms, NULL); }void on_interaction(struct discord *client, const struct discord_interaction *event) {if (event->type != DISCORD_INTERACTION_APPLICATION_COMMAND)return; /* العودة إذا لم يكن التفاعل أمرًا مائلًا */if (strcmp(event->data->name, "ping") == 0) { struct discord_interaction_response params = { .type = DISCORD_INTERACTION_CHANNEL_MESSAGE_WITH_SOURCE، .data = &(struct discord_interaction_callback_data){ .content = "بونغ"} }; discord_create_interaction_response(client, events->id, events->token, ¶ms, NULL); } }int main(void) {struct discord *client = discord_init(BOT_TOKEN);discord_set_on_ready(client, &on_ready);discord_set_on_interaction_create(client, &on_interaction);discord_run(client); }
#include <string.h>#include <concord/discord.h>#include <concord/log.h>void on_ready(struct discord *client, const struct discord_ready *event) {log_info("تم تسجيل الدخول باسم %s!" ، الحدث->المستخدم->اسم المستخدم); }void on_message(struct discord *client, const struct discord_message *event) {if (strcmp(event->content, "ping") == 0) {struct discord_create_message params = { .content = "pong" };discord_create_message(client) , events->channel_id, ¶ms, NULL); } }int main(void) {struct discord *client = discord_init(BOT_TOKEN);discord_add_intents(client, DISCORD_GATEWAY_MESSAGE_CONTENT);discord_set_on_ready(client, &on_ready);discord_set_on_message_create(client, &on_message);discord_run(client); }
جنو/لينكس 4.x
فري بي إس دي 12
نت بي إس دي 8.1
ويندوز 7 (سيجوين)
جنو/هيرد 0.9
ماك OS X 10.9
ملاحظة: المعالجات الكبيرة التي تعمل بأنظمة تشغيل معينة مثل SPARC Solaris أو PowerPC AIX أو System Z/OS أو Linux أو MIPS IRIX غير مدعومة. توجد حاليًا بعض المشكلات التي تمنع بعض المنطق من العمل بشكل صحيح على الأنظمة ذات النهاية الكبيرة. سيتم إصلاح هذا قريبا.
التبعية الوحيدة هي curl-7.56.1
أو أعلى. إذا كنت تقوم بتجميع libcurl من المصدر، فستحتاج إلى إنشائه بدعم SSL.
قم بتثبيت سيجوين
تأكد من تثبيت libcurl وgcc وmake وgit عند تشغيل برنامج تثبيت Cygwin!
سوف ترغب في التحقق من البرنامج التعليمي لنظام التشغيل Windows هنا!
Mingw64 وMsys2 غير مدعومين حاليًا. يرجى الاطلاع على هذا لمزيد من المعلومات.
بمجرد التثبيت، قم بتجميعه بشكل طبيعي كما تفعل على UNIX/Linux/OS X/BSD.
ملاحظة: ستحتاج على الأرجح إلى تضمين -L/usr/local/lib -I/usr/local/include
في أمر gcc
الخاص بك، أو في متغير CFLAGS
في ملف Makefile الخاص ببرنامج الروبوت الخاص بك.
(ملاحظة - #
يعني أنه يجب عليك التشغيل كجذر)
# تحديث apt && apt install -y libcurl4-openssl-dev
# xbps-install -S libcurl-devel
# apk إضافة curl-dev
# حزمة تثبيت الضفيرة
ملاحظة: ستحتاج إلى تثبيت Xcode، أو على الأقل، أدوات سطر الأوامر باستخدام xcode-select --install
.
تجعيد تثبيت المنفذ $ (Homebrew) تجعيد تثبيت المنفذ $ (MacPorts)
استنساخ git https://aur.archlinux.org/concord-git.gitcd concord-gitmakepkg -Acspacman -U concord-git-version-any.pkg.tar.zst
وبدلاً من ذلك، يمكنك استخدام مساعد AUR:
ياي -S كونكورد-جيت
استنساخ $ git https://github.com/cogmasters/concord.git && cd concord
$ جعل
قد تواجه مشكلة مع عدم عثور المترجم والرابط على رؤوس Libcurl الخاصة بك. يمكنك القيام بشيء مثل هذا:
$ CFLAGS=-I<some_path> LDFLAGS=-L<some_path>
على سبيل المثال، في نظام FreeBSD:
$ CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib make
على نظام التشغيل OS X باستخدام MacPorts:
$ CFLAGS=-I/opt/local/include LDFLAGS=-L/opt/local/lib make
في نظام التشغيل OS X باستخدام libcurl المترجم ذاتيًا:
$ CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/include make
في نظام التشغيل Windows الذي يعمل بنظام Cygwin، قد تحتاج إلى تمرير كلا الوسيطتين لاستخدام مؤشر ترابط POSIX:
$ CFLAGS = "-pthread -lpthread" جعل
في بعض الحالات، قد ترغب في ربط Concord بكائن مشترك، أو ربطه ككائن مشترك بكائن مشترك آخر. في هذه الحالة، ستحتاج إلى ترجمة Concord باستخدام CFLAGS="-fpic" make
.
Discord_config_init() هي طريقة التهيئة التي تسمح بتكوين الروبوت الخاص بك دون إعادة الترجمة.
يوضح ما يلي حقول config.json
:
{ "logging": { // توجيهات التسجيل"level": "trace"، // تتبع، تصحيح، معلومات، تحذير، خطأ، فادح"filename": "bot.log"، // ملف إخراج السجل"quiet": false، // التغيير إلى true لتعطيل السجلات في وحدة التحكم"overwrite": true، // الكتابة فوق الملف إذا كان موجودًا بالفعل، وإلحاق خلاف ذلك"use_color": true، // عرض اللون لإدخالات السجل"http": { "enable": صحيح، // إنشاء تسجيل خاص بـ http "اسم الملف": "http.log" // ملف إخراج سجل HTTP},"disable_modules": ["WEBSOCKETS", "USER_AGENT"] // تعطيل التسجيل لهذه الوحدات }, "discord": { // توجيهات discord"token": "YOUR-BOT-TOKEN"، // استبدل برمز الروبوت الخاص بك"default_prefix": { "enable": false, // تمكين بادئة الأمر الافتراضية "prefix": "YOUR-COMMANDS-PREFIX" // استبدلها بالبادئة الخاصة بك} }, ... // هنا يمكنك إضافة حقولك المخصصة *}
* يمكن جلب محتويات الحقل المخصص الخاص بك باستخدام discord_config_get_field()
احصل على رمز الروبوت الخاص بك وأضفه إلى config.json
، عن طريق تعيينه في حقل "الرمز المميز" الخاص بـ Discord. هناك تعليمات مكتوبة جيدًا من Discord-irc تشرح كيفية الحصول على رمز الروبوت الخاص بك وإضافته إلى الخادم.
بناء أمثلة على الملفات التنفيذية:
$ اصنع أمثلة
تشغيل برنامج Copycat-Bot:
أمثلة على القرص المضغوط $ && ./copycat
اكتب رسالة في أي قناة يكون الروبوت جزءًا منها ويجب أن يرسل الروبوت نسخة طبق الأصل منها في المقابل.
باستخدام Ctrl + c أو Ctrl + |
يوضح ما يلي العلامات والأهداف الخاصة لتجاوز إنشاء Makefile الافتراضي بوظائف إضافية.
-DCCORD_SIGINTCATCH
افتراضيًا، لن يتم إيقاف تشغيل Concord بأمان عند تلقي SIGINT (أي Ctrl + c )، قم بتمكين هذه العلامة إذا كنت ترغب في معالجتها نيابةً عنك.
-DCCORD_DEBUG_WEBSOCKETS
تمكين التصحيح المطول لاتصالات WebSockets.
-DCCORD_DEBUG_HTTP
تمكين التصحيح المطول لاتصالات HTTP.
مثال:
$ CFLAGS = "-DCCORD_SIGINTCATCH -DCCORD_DEBUG_HTTP"
make shared
قم بإنتاج نسخة مرتبطة ديناميكيًا من Concord. تم تصميم ملف Makefile هذا للمترجمين على نمط GNU، مثل gcc
أو clang
.
make shared_osx
قم بإنتاج نسخة مرتبطة ديناميكيًا من Concord لأنظمة OS X وDarwin.
make voice
تمكين التعامل مع الاتصال الصوتي التجريبي - غير جاهز للإنتاج.
make debug
تمكين بعض العلامات المفيدة أثناء التطوير، مثل -O0
و -g
(ملاحظة - #
يعني أنه يجب عليك التشغيل كجذر)
# قم بالتثبيت
سيؤدي هذا إلى تثبيت الرؤوس وملفات المكتبة في $PREFIX. يمكنك تجاوز هذا على هذا النحو:
# PREFIX=/opt/concord قم بالتثبيت
لتجميع كونكورد، راجع الدليل هنا.
فيما يلي تبعيات stable
وموثقة جيدًا والتي تم حزمها مع Concord ويمكن تضمينها في مشاريعك:
ملف | وصف |
---|---|
cog-utils | وظائف للأغراض العامة تهدف إلى قابلية النقل |
سجل.ج* | مكتبة تسجيل C99 بسيطة |
كاري* | التنفيذ القائم على الماكرو للصفائف الآمنة من النوع |
خريطة شاذة* | تخزين المفتاح/القيمة المصنفة لـ C99 |
شاش* | التنفيذ القائم على الماكرو لجداول التجزئة الآمنة |
json-build | مُسلسل JSON صغير الحجم بدون تخصيص |
jsmn-find | رمز JSON صغير الحجم بدون تخصيص |
* تستخدم كونكورد نسختها المعدلة التي قد لا تكون محدثة مع النسخة الأصلية
لاحظ أن الرؤوس المضمنة يجب أن تكون concord/
بادئة:
#تتضمن <concord/discord.h>#تتضمن <concord/log.h>
$ gcc myBot.c -o myBot -pthread -ldiscord -lcurl
$ clang myBot.c -o myBot -pthread -ldiscord -lcurl
IBM XL C/C++ (AIX, z/OS, IBM i)
استوديو صن/أوراكل (سولاريس)
IRIX MIPSpro C++ (IRIX) - ملاحظة: غير مدعوم حاليًا
اتش بي ايه سي سي (HP-UX)
Compaq C (Tru64 UNIX) - ملاحظة: غير مدعوم حاليًا أيضًا ملاحظة: إذا كنت تريد ترجمة هذا فعليًا على أحد الأنظمة المذكورة أعلاه، فيرجى الاطلاع على دليل "الترجمة على أجهزة الكمبيوتر القديمة".
$ cc myBot.c -o myBot -ldiscord -lcurl -lpthread
ملحوظة: بعض الأنظمة مثل Cygwin تتطلب منك القيام بذلك:
$ دول مجلس التعاون الخليجي myBot.c -o myBot -pthread -lpthread -ldiscord -lcurl
(هذه الروابط ضد libpthread.a في /usr/lib
)
أولاً، تأكد من تجميع الملف القابل للتنفيذ باستخدام العلامة -g
لضمان رسائل مصحح الأخطاء التي يمكن للإنسان قراءتها.
استخدام valgrind للتحقق من تسرب الذاكرة:
valgrind --leak-check=full ./myBot
للحصول على دليل أكثر شمولاً، راجع البدء السريع لـ Valgrind.
استخدام GDB للتحقق من أخطاء وقت التشغيل، مثل أخطاء التجزئة:
$ gdb ./myBot
ثم قم بتنفيذ الروبوت الخاص بك من بيئة gdb:
(جي دي بي) تشغيل
إذا تعطل البرنامج، احصل على تتبع خلفي لاستدعاءات الوظائف المؤدية إليه:
(جي دي بي) بت
للحصول على دليل أكثر شمولاً، راجع دليل Beej السريع لـ GDB
مشاكل؟ تحقق من خادم Discord الخاص بنا
نرحب بجميع أنواع المساهمات، وكل ما نطلبه هو الالتزام بإرشاداتنا! إذا كنت تريد المساعدة ولكنك غير متأكد من أين تبدأ، فإن خريطة طريق Discord API الخاصة بنا هي نقطة بداية جيدة. تحقق من روابطنا لمزيد من المعلومات المفيدة.
التوثيق
خارطة طريق Discord API
الهجرة من V1
الهجرة من أوركا