Perkembangan telah terjadi di cabang dev. Kami sedang mengerjakan fitur dan peningkatan baru. Untuk mengakses perpustakaan versi terbaru, silakan periksa cabang dev.
Concord adalah pustaka C99 Discord API asinkron dengan ketergantungan eksternal minimal, dan terjemahan tingkat rendah dari dokumentasi resmi Discord ke kode C.
Berikut ini adalah contoh minimalis, lihat examples/
untuk gambaran yang lebih baik.
Catatan: Anda perlu mengganti GUILD_ID
dengan ID guild yang sebenarnya, atau contoh ini tidak dapat dikompilasi! Anda dapat menggunakan makro untuk melakukan ini: #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 = { .nama = "ping", .description = "Perintah Ping!"};discord_create_guild_application_command(klien, acara->aplikasi->id, GUILD_ID, ¶ms, NULL); }void on_interaction(struct discord *client, const struct discord_interaction *event) {if (event->type != DISCORD_INTERACTION_APPLICATION_COMMAND)kembali; /* kembali jika interaksi bukan perintah garis miring */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 = "pong"} }; discord_create_interaction_response(klien, acara->id, acara->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("Masuk sebagai %s!" , acara->pengguna->nama pengguna); }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 , acara->channel_id, ¶ms, NULL); } }int main(void) {struct discord *client = discord_init(BOT_TOKEN);discord_add_intents(klien, DISCORD_GATEWAY_MESSAGE_CONTENT);discord_set_on_ready(klien, &on_ready);discord_set_on_message_create(klien, &on_message);discord_run(klien); }
GNU/Linux 4.x
FreeBSD 12
NetBSD 8.1
Windows 7 (Cygwin)
GNU/Hurd 0.9
Mac OS X 10.9
Catatan: prosesor big-endian yang menjalankan OS tertentu seperti SPARC Solaris, PowerPC AIX, System Z z/OS atau Linux, atau MIPS IRIX TIDAK didukung. Saat ini ada beberapa masalah yang menghalangi beberapa logika untuk bekerja dengan benar pada sistem big-endian. Ini akan segera diperbaiki.
Satu-satunya ketergantungan adalah curl-7.56.1
atau lebih tinggi. Jika Anda mengkompilasi libcurl dari sumber, Anda perlu membangunnya dengan dukungan SSL.
Instal Cygwin
Pastikan Anda menginstal libcurl, gcc, make, dan git saat menjalankan penginstal Cygwin!
Anda pasti ingin memeriksa tutorial Windows di sini!
Mingw64 dan Msys2 saat ini TIDAK didukung. Silakan lihat ini untuk informasi lebih lanjut.
Setelah terinstal, kompilasi secara normal seperti yang Anda lakukan pada UNIX/Linux/OS X/BSD.
Catatan: Anda mungkin perlu memasukkan -L/usr/local/lib -I/usr/local/include
pada perintah gcc
Anda, atau dalam variabel CFLAGS
di Makefile untuk bot Anda.
(catatan -- #
berarti Anda harus menjalankan sebagai root)
# pembaruan apt && apt install -y libcurl4-openssl-dev
# xbps-install -S libcurl-devel
# apk tambahkan curl-dev
# pkg instal ikal
Catatan: Anda perlu menginstal Xcode, atau setidaknya, alat baris perintah dengan xcode-select --install
.
$ brew install curl (Homebrew)$ port install curl (MacPorts)
git clone https://aur.archlinux.org/concord-git.gitcd concord-gitmakepkg -Acspacman -U concord-git-version-any.pkg.tar.zst
Alternatifnya, Anda dapat menggunakan pembantu AUR:
yay -S kerukunan-git
$ git clone https://github.com/cogmasters/concord.git && cd kerukunan
$ membuat
Anda mungkin mengalami masalah karena compiler dan linker tidak menemukan header Libcurl Anda. Anda dapat melakukan sesuatu seperti ini:
$ CFLAGS=-Saya<some_path> LDFLAGS=-L<some_path> buat
Misalnya, pada sistem FreeBSD:
$ CFLAGS=-I/usr/local/termasuk LDFLAGS=-L/usr/local/lib buat
Di OS X menggunakan MacPorts:
$ CFLAGS=-I/opt/local/termasuk LDFLAGS=-L/opt/local/lib make
Di OS X menggunakan libcurl yang dikompilasi sendiri:
$ CFLAGS=-I/usr/local/termasuk LDFLAGS=-L/usr/lokal/termasuk make
Di Windows dengan Cygwin, Anda mungkin perlu meneruskan kedua argumen untuk menggunakan threading POSIX:
$ CFLAGS="-pthread -lpthread" dibuat
Dalam beberapa kasus, Anda mungkin ingin menautkan Concord ke objek bersama, atau menautkannya sebagai objek bersama ke objek bersama lainnya. Dalam hal ini, Anda perlu mengkompilasi Concord dengan CFLAGS="-fpic" make
.
discord_config_init() adalah metode inisialisasi yang memungkinkan konfigurasi bot Anda tanpa kompilasi ulang.
Berikut ini menguraikan bidang config.json
:
{ "logging": { // arahan logging"level": "trace", // jejak, debug, info, peringatan, kesalahan, fatal"nama file": "bot.log", // file keluaran log"quiet": false, // ubah ke true untuk menonaktifkan log di konsol"overwrite": true, // timpa file jika sudah ada, tambahkan jika tidak"use_color": true, // tampilkan warna untuk entri log"http": { "enable": benar, // menghasilkan logging khusus http "nama file": "http.log" // the File keluaran log HTTP},"disable_modules": ["WEBSOCKETS", "USER_AGENT"] // menonaktifkan logging untuk modul ini }, "discord": { // discord directives"token": "YOUR-BOT-TOKEN", // ganti dengan token bot Anda"default_prefix": { "enable": false, // aktifkan awalan perintah default "prefix": "YOUR-COMMANDS-PREFIX" // ganti dengan awalan Anda} }, ... // di sini Anda dapat menambahkan kolom khusus Anda *}
* Isi bidang khusus Anda dapat diambil dengan discord_config_get_field()
Dapatkan token bot Anda dan tambahkan ke config.json
, dengan menetapkannya ke bidang "token" discord. Ada instruksi yang ditulis dengan baik dari discord-irc yang menjelaskan cara mendapatkan token bot Anda dan menambahkannya ke server.
Buat contoh executable:
$ buatlah contoh
Jalankan Copycat-Bot:
$cd contoh && ./copycat
Ketikkan pesan di saluran mana pun di mana bot tersebut berada dan bot tersebut akan mengirimkan salinan persisnya sebagai balasannya.
Dengan Ctrl + c atau dengan Ctrl + |
Berikut ini menguraikan tanda dan target khusus untuk mengganti build Makefile default dengan fungsionalitas tambahan.
-DCCORD_SIGINTCATCH
Secara default Concord tidak akan mati dengan baik ketika SIGINT diterima (yaitu Ctrl + c ), aktifkan tanda ini jika Anda ingin tanda ini ditangani untuk Anda.
-DCCORD_DEBUG_WEBSOCKETS
Aktifkan debugging verbose untuk komunikasi WebSockets.
-DCCORD_DEBUG_HTTP
Aktifkan debugging verbose untuk komunikasi HTTP.
Contoh:
$ CFLAGS="-DCCORD_SIGINTCATCH -DCCORD_DEBUG_HTTP" menghasilkan
make shared
Menghasilkan versi Concord yang tertaut secara dinamis. Makefile ini ditujukan untuk kompiler bergaya GNU, seperti gcc
atau clang
.
make shared_osx
Menghasilkan versi Concord yang terhubung secara dinamis, untuk sistem OS X dan Darwin.
make voice
Aktifkan penanganan Koneksi Suara eksperimental - belum siap produksi.
make debug
Aktifkan beberapa tanda yang berguna saat pengembangan, seperti -O0
dan -g
(catatan -- #
berarti Anda harus menjalankan sebagai root)
# buat instal
Ini akan menginstal file header dan perpustakaan ke $PREFIX. Anda dapat menimpanya seperti ini:
# PREFIX=/opt/concord membuat instalasi
Untuk mengkompilasi silang Concord, lihat manualnya di sini.
Berikut ini adalah dependensi stable
dan terdokumentasi dengan baik yang dikemas dengan Concord dan dapat disertakan ke proyek Anda:
Mengajukan | Keterangan |
---|---|
roda gigi-utils | Fungsi tujuan umum ditujukan untuk portabilitas |
log.c* | Pustaka logging C99 sederhana |
carray* | Implementasi array tipe aman berbasis makro |
peta anomali* | Penyimpanan kunci/nilai yang diurutkan untuk C99 |
chash* | Implementasi tabel hash aman tipe berbasis makro |
json-build | Serializer JSON kecil dengan alokasi nol |
jsmn-temukan | Tokenizer JSON yang kecil dan tanpa alokasi |
* Concord menggunakan versi modifikasinya sendiri yang mungkin tidak mutakhir dengan aslinya
Perhatikan bahwa header yang disertakan harus berupa concord/
diawali:
#termasuk <concord/discord.h>#termasuk <concord/log.h>
$ gcc myBot.c -o myBot -pthread -ldiscord -lcurl
$ dentang myBot.c -o myBot -pthread -ldiscord -lcurl
IBM XL C/C++ (AIX, z/OS, IBM i)
Studio Matahari/Oracle (Solaris)
IRIX MIPSpro C++ (IRIX) -- CATATAN: saat ini tidak didukung
HP aCC (HP-UX)
Compaq C (Tru64 UNIX) -- CATATAN: saat ini juga tidak didukung Catatan: jika Anda ingin mengkompilasi ini pada salah satu sistem yang tercantum di atas, silakan lihat panduan "Mengkompilasi di komputer lama".
$ cc myBot.c -o myBot -ldiscord -lcurl -lpthread
Catatan: beberapa sistem seperti Cygwin mengharuskan Anda melakukan ini:
$ gcc myBot.c -o myBot -pthread -lpthread -ldiscord -lcurl
(tautan ini terhadap libpthread.a di /usr/lib
)
Pertama, pastikan file executable Anda dikompilasi dengan flag -g
untuk memastikan pesan debugger dapat dibaca manusia.
Menggunakan valgrind untuk memeriksa kebocoran memori:
valgrind --leak-check=full ./myBot
Untuk panduan yang lebih komprehensif, periksa Mulai Cepat Valgrind.
Menggunakan GDB untuk memeriksa kesalahan runtime, seperti kesalahan segmentasi:
$ gdb ./Bot saya
Dan kemudian jalankan bot Anda dari lingkungan gdb:
(gdb) lari
Jika program mengalami crash, dapatkan penelusuran balik dari pemanggilan fungsi yang mengarah ke program tersebut:
(gdb) tapi
Untuk panduan yang lebih komprehensif, periksa Panduan Cepat Beej ke GDB
Masalah? Lihat Server Perselisihan kami
Semua jenis kontribusi dipersilakan, yang kami minta hanyalah mematuhi pedoman kami! Jika Anda ingin membantu tetapi tidak yakin harus mulai dari mana, maka Peta Jalan API Discord kami adalah titik awal yang baik. Periksa tautan kami untuk informasi bermanfaat lebih lanjut.
Dokumentasi
Peta Jalan API Perselisihan
Bermigrasi dari V1
Bermigrasi dari Orca