การพัฒนาเกิดขึ้นในสาขา dev เรากำลังดำเนินการเกี่ยวกับคุณสมบัติและการปรับปรุงใหม่ๆ หากต้องการเข้าถึงไลบรารีเวอร์ชันล่าสุด โปรดตรวจสอบสาขา dev
Concord เป็นไลบรารี C99 Discord API แบบอะซิงโครนัสที่มีการพึ่งพาภายนอกน้อยที่สุด และการแปลเอกสารอย่างเป็นทางการของ Discord เป็นโค้ด C ในระดับต่ำ
ต่อไปนี้เป็นตัวอย่างที่เรียบง่าย โปรดดู examples/
เพื่อภาพรวมที่ดีขึ้น
หมายเหตุ: คุณต้องแทนที่ GUILD_ID
ด้วย 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 = { .name = "ปิง" .description = "คำสั่ง Ping!"};discord_create_guild_application_command(ไคลเอนต์, เหตุการณ์->แอปพลิเคชัน->id, GUILD_ID, &พารามิเตอร์, NULL); } void on_interaction (struct discord *client, const struct discord_interaction *event) {if (event->type != DISCORD_INTERACTION_APPLICATION_COMMAND)กลับมา; /* ส่งคืนหากการโต้ตอบไม่ใช่คำสั่งสแลช */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 (ไคลเอนต์, เหตุการณ์ -> id, เหตุการณ์ -> โทเค็น, & พารามิเตอร์, NULL); - } int main(เป็นโมฆะ) {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(ไคลเอนต์ , เหตุการณ์->channel_id, &พารามิเตอร์, 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(ไคลเอนต์); -
กนู/ลินุกซ์ 4.x
ฟรีบีเอสดี 12
เน็ตบีเอสดี 8.1
Windows 7 (ซิกวิน)
GNU/เฮิร์ด 0.9
แมคโอเอสเอ็กซ์ 10.9
หมายเหตุ: ไม่รองรับโปรเซสเซอร์ขนาดใหญ่ที่ใช้ระบบปฏิบัติการบางระบบ เช่น SPARC Solaris, PowerPC AIX, System Z z/OS หรือ Linux หรือ MIPS IRIX ขณะนี้มีปัญหาบางประการที่ทำให้ตรรกะบางอย่างไม่ถูกต้องบนระบบ big-endian สิ่งนี้จะได้รับการแก้ไขในไม่ช้า
การขึ้นต่อกันเพียงอย่างเดียวคือ curl-7.56.1
หรือสูงกว่า หากคุณกำลังคอมไพล์ libcurl จากแหล่งที่มา คุณจะต้องสร้างมันด้วยการรองรับ SSL
ติดตั้ง Cygwin
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง 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 ติดตั้ง -y libcurl4-openssl-dev
# xbps-install -S libcurl-devel
# apk เพิ่ม curl-dev
#pkg ติดตั้ง curl
หมายเหตุ: คุณจะต้องติดตั้ง Xcode หรืออย่างน้อยที่สุดก็คือเครื่องมือบรรทัดคำสั่งที่มี xcode-select --install
$ brew ติดตั้ง curl (Homebrew) $ พอร์ต ติดตั้ง curl (MacPorts)
git clone https://aur.archlinux.org/concord-git.gitcd concord-gitmakepkg -Acspacman -U concord-git-version-any.pkg.tar.zst
หรือคุณสามารถใช้ตัวช่วย AUR:
เย้ -S concord-git
$ git clone https://github.com/cogmasters/concord.git && ซีดีคองคอร์ด
$ ทำ
คุณอาจประสบปัญหากับคอมไพลเลอร์และตัวเชื่อมโยงไม่พบส่วนหัว Libcurl ของคุณ คุณสามารถทำสิ่งนี้:
$ CFLAGS=-I<some_path> LDFLAGS=-L<some_path> ทำ
ตัวอย่างเช่น ในระบบ FreeBSD:
$ CFLAGS=-I/usr/local/รวม LDFLAGS=-L/usr/local/lib
บน OS X โดยใช้ MacPorts:
$ CFLAGS=-I/opt/local/include LDFLAGS=-L/opt/local/lib make
บน OS X โดยใช้ libcurl ที่คอมไพล์เอง:
$ CFLAGS=-I/usr/local/รวม LDFLAGS=-L/usr/local/รวม ทำ
บน Windows ที่มี Cygwin คุณอาจต้องส่งอาร์กิวเมนต์ทั้งสองเพื่อใช้เธรด POSIX:
$ CFLAGS = "-pthread -lpthread" ทำ
ในบางกรณี คุณอาจต้องการเชื่อมโยง Concord เข้ากับวัตถุที่ใช้ร่วมกัน หรือเชื่อมโยงเป็นวัตถุที่ใช้ร่วมกันเข้ากับวัตถุที่ใช้ร่วมกันอื่น ในกรณีนั้น คุณจะต้องคอมไพล์ Concord ด้วย CFLAGS="-fpic" make
discord_config_init() เป็นวิธีการเริ่มต้นที่อนุญาตให้กำหนดค่าบอทของคุณโดยไม่ต้องคอมไพล์ใหม่
สรุปฟิลด์ config.json
ต่อไปนี้:
- "logging": { // คำสั่งการบันทึก "ระดับ": "ติดตาม", // ติดตาม, ตรวจแก้จุดบกพร่อง, ข้อมูล, เตือน, ข้อผิดพลาด, ร้ายแรง "ชื่อไฟล์": "bot.log", // ไฟล์เอาต์พุตบันทึก "เงียบ": เท็จ // เปลี่ยนเป็น true เพื่อปิดการใช้งานบันทึกในคอนโซล "เขียนทับ": จริง // เขียนทับไฟล์หากมีอยู่แล้ว ให้ต่อท้ายอย่างอื่น "use_color": จริง // แสดงสีสำหรับรายการบันทึก "http": { "เปิดใช้งาน": จริง // สร้าง http เฉพาะ การบันทึก "ชื่อไฟล์": "http.log" // ไฟล์เอาต์พุตบันทึก HTTP}, "disable_modules": ["WEBSOCKETS", "USER_AGENT"] // ปิดใช้งานการบันทึกสำหรับโมดูลเหล่านี้ - "discord": { // discord directives"token": "YOUR-BOT-TOKEN", // แทนที่ด้วยโทเค็น bot ของคุณ "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 ทำการติดตั้ง
หากต้องการคอมไพล์ข้าม Concord โปรดดูคู่มือที่นี่
ข้อมูลต่อไปนี้เป็นการขึ้นต่อกัน stable
และมีเอกสารประกอบอย่างดีซึ่งมาพร้อมกับ Concord และสามารถรวมไว้ในโปรเจ็กต์ของคุณได้:
ไฟล์ | คำอธิบาย |
---|---|
ฟันเฟือง-utils | ฟังก์ชั่นวัตถุประสงค์ทั่วไปมุ่งเป้าไปที่การพกพา |
ล็อก.ซี* | ไลบรารีการบันทึก C99 อย่างง่าย |
คาร์เรย์* | การใช้งานอาร์เรย์แบบปลอดภัยแบบมาโคร |
อโนแมป* | จัดเก็บคีย์/ค่าที่เรียงลำดับสำหรับ C99 |
แชช* | การใช้งานแฮชเทเบิลประเภทที่ปลอดภัยแบบมาโคร |
json-build.json | ตัวสร้างอนุกรม JSON ขนาดเล็กที่ไม่มีการจัดสรร |
jsmn-ค้นหา | โทเค็นไนเซอร์ JSON ขนาดเล็กที่ไม่มีการจัดสรร |
* Concord ใช้เวอร์ชันแก้ไขของตัวเองซึ่งอาจไม่อัปเดตกับต้นฉบับ
โปรดทราบว่าส่วนหัวที่รวมจะต้อง concord/
นำหน้า:
#include <concord/discord.h>#include <concord/log.h>
$ gcc myBot.c -o myBot -pthread -ldiscord -lcurl
$ เสียงดังกราว myBot.c -o myBot -pthread -ldiscord -lcurl
IBM XL C/C++ (AIX, z/OS, IBM i)
ซัน/ออราเคิล สตูดิโอ (โซลาริส)
IRIX MIPSpro C++ (IRIX) -- หมายเหตุ: ยังไม่รองรับในขณะนี้
HP aCC (HP-UX)
Compaq C (Tru64 UNIX) -- หมายเหตุ: ขณะนี้ยังไม่รองรับ หมายเหตุ: หากคุณต้องการคอมไพล์บนระบบใดระบบหนึ่งที่ระบุไว้ข้างต้น โปรดดูคำแนะนำ "การคอมไพล์บนคอมพิวเตอร์เครื่องเก่า"
$ ซีซี myBot.c -o myBot -ldiscord -lcurl -lpthread
หมายเหตุ: บางระบบเช่น Cygwin ต้องการให้คุณทำเช่นนี้:
$ gcc myBot.c -o myBot -pthread -lpthread -ldiscord -lcurl
(ลิงก์นี้ต่อต้าน libpthread.a ใน /usr/lib
)
ขั้นแรก ตรวจสอบให้แน่ใจว่าไฟล์ปฏิบัติการของคุณได้รับการคอมไพล์ด้วยแฟล็ก -g
เพื่อให้แน่ใจว่าข้อความดีบักเกอร์ที่มนุษย์สามารถอ่านได้
การใช้ valgrind เพื่อตรวจสอบหน่วยความจำรั่ว:
valgrind --leak-check=full ./myBot
หากต้องการคำแนะนำที่ครอบคลุมมากขึ้น โปรดตรวจสอบ Quick Start ของ Valgrind
การใช้ GDB เพื่อตรวจสอบข้อผิดพลาดรันไทม์ เช่น ข้อผิดพลาดในการแบ่งส่วน:
$gdb ./myBot
จากนั้นรันบอทของคุณจากสภาพแวดล้อม gdb:
(gdb) วิ่ง
หากโปรแกรมขัดข้อง ให้รับ backtrace ของการเรียกใช้ฟังก์ชันที่นำไปสู่:
(gdb) บาท
หากต้องการคำแนะนำที่ครอบคลุมมากขึ้น โปรดดู Quick Guide to GDB ของ Beej
ปัญหา? ตรวจสอบเซิร์ฟเวอร์ Discord ของเรา
ยินดีต้อนรับการสนับสนุนทุกประเภท สิ่งที่เราขอคือปฏิบัติตามหลักเกณฑ์ของเรา! หากคุณต้องการความช่วยเหลือแต่ไม่แน่ใจว่าจะเริ่มต้นจากตรงไหน แผนงาน Discord API ของเราก็เป็นจุดเริ่มต้นที่ดี ตรวจสอบลิงก์ของเราเพื่อดูข้อมูลที่เป็นประโยชน์เพิ่มเติม
เอกสารประกอบ
แผนการทำงาน Discord API
ย้ายจาก V1
อพยพมาจากออร์ก้า