DiscordAPI Kullanım Rehberi – Discord Geliştiriciliğe Giriş

Discord kullanıcıları için resmi bir API hizmeti sunmakta ancak bu API için herhangi bir Türkçe kullanım kılavuzu bulunmamakta. Bugün sizlere PHP tabanlı sitemizde Discord’un API servisini nasıl kullanacağımızı anlatmaya çalışacağım.

API Nedir

API, bir yazılımın başka bir yazılımda tanımlanmış işlevlerini kullanabilmesi için oluşturulmuş bir tanım bütünüdür. API; web uygulaması, işletim sistemi, veritabanı, donanımlar yahut yazılım kütüphanesi için kullanılabilir. (Vikipedi)

DiscordAPI Nedir?

DiscordAPI herhangi bir Discord sunucusundan veri çekmek, Discord ile alakalı çeşitli uygulamalar geliştirmek veya kendi uygulamalarınız için “Discord ile giriş” veya “Discord hesabını bağla” gibi özellikler eklemeniz için kullanabileceğiniz bir sistemdir. DiscordAPI kullanarak kendinize ait bot için de kullanışlı sistemler geliştirebilirsiniz.

Örnek proje için tıklayınız 

Örnek projede Bot erişimi kullanılarak Discord sunucularından veri çekebiliyoruz. Bu verileri çekerken Discord tarafından sunulan resmi API sistemini kullanıyoruz.

DiscordAPI Giriş – DiscordAPI 101

DiscordAPI kullanırken isteklerimizi https://discordapp.com/api/* adresine göndereceğiz. En temel göndereceğimiz istek davet linki kullanarak sunucu verilerini çekmek olacak. Bazı verileri gönderirken ise Authorization gerekecek. Onları daha sonra anlatacağız.

Örnek İstek: https://discordapp.com/api/invites/hello

Karşımıza çıkacak şey:

(Eğer sizde bu şekilde görünmüyorsa tarayınıcıza herhangi bir JSON Formatter eklentisi kurabilirsiniz.)

Görselde de göreceğiniz üzere JSON formatında sunucuyla alakalı bazı verileri elde ettik. Şimdi file_get_contents kullanarak bunları yazdırabilirsiniz. Bilmeyenler olabilir diye kodları açıklamalarıyla birlikte aşağıya bırakıyorum.

<?php

$json_options = [
"http" => [
"method" => "GET"
]
]; //verileri get metoduyla çekeceğiz
$json_context = stream_context_create($json_options);

$invitecek = file_get_contents('https://discordapp.com/api/invites/hello', false, $json_context);
//verileri çekeceğimiz url
$inviteyazdir = json_decode($invitecek, false); //decode edip uyumlu hale getiriyoruz
?>

Evet kodlarımız bunlar şimdi çekmek istediğimiz veriyi belirtmemiz gerekiyor. Örneğin “guild” başlığında yer alan “id” kısmını çekeceğiz. Yapmamız gereken $inviteyazdir->guild->id komutunu yazdırmak. Bunu yaptıktan sonra id kısmında yer alan veri yazdırılacaktır.

Evet davet kodunu kullanarak basit bir şekilde veri çekmeyi başardık. Peki detaylı verileri nasıl çekeceğiz? Bunların cevabını şimdi vereceğiz.

"header" => "Authorization: Bot BOT_TOKENİNİZ" kısmını json_options kısmına eklememiz gerekiyor. BOT_TOKENİNİZ yerine ise botunuza ait tokeni yapıştırmanız gerekiyor. Çok temel bir bilgi olduğu için bot tokeni nasıl alınır? kısmını anlatmayacağım. Bot dışındaki Authorization yöntemlerine ise bu yazımda deyinmeyeceğim ama sonradan bunları da anlatmayı planlıyorum.

Bot tokenimizi yapıştırdıktan sonra artık DiscordAPI’de yer alan guilds kısmındaki verileri çekebileceğiz.

file_get_contents kısmına https://discordapp.com/api/invites/hello yerinehttps://discordapp.com/api/guilds/SERVER_ID?with_counts=true linkini yapıştıracağız. Evet artık authorizationı sağladık. Artık verilerimizi çekebiliriz.

Örnek veri sayfasını incelemek için tıklayınız.

Kendiniz için böyle bir sistem kodlamak istiyorsanız açık kaynak kodlu altyapı linki için tıklayınız.

Eğer bot aracılığıyla veri çekmek istiyorsanız Discord Developer Portal üzerinden Privileged Gateway Intents ve Server Members Intent izinlerini aktifleştirmeniz gerekiyor. Bu izinleri de aktifleştirirseniz artık rahatlıkla veri çekebileceksiniz.

Çekebileceğim Veriler Neler?

GET metodunu kullanarak aşağıda yer alan verilerin tümünü çekebileceksiniz.

id,sunucu ismi,ikon,sahip id,sunucu emojileri,sunucu bölgesi gibi bir çok veriyi çekebilirsiniz. GET isteği gönderdiğinizde çekebileceğiniz tüm veriler aşağıdaki görseldeki gibidir.

eğer https://discordapp.com/api/guilds/SERVER_ID?with_counts=true kısmının sonunucu yani SERVER_ID?with_counts=true kısmını SERVER_ID/members olarak değiştirirseniz üyelerin bir listesini eğer SERVER_ID/members/KULLANICI_ID olarak değiştirirseniz sunucudaki spesifik birinin bilgilerini SERVER_ID/channels olarak değiştirirseniz ise sunucunun kanallarını elde edebilirsiniz.

GET metodu dışında da çeşitli yöntemler kullanarak da çeşitli işlemler yaptırabilirsiniz. Örneğin POST metodu ile SERVER_ID/channels linkine aşağıdaki görselde yer alan verileri göndererek kanal oluşturabilirsiniz.

Başka Ne Yapabilirim?

  • Sunucunuzu modifiye edebilirsiniz.
  • Kullanıcılara rol ekleyebilir/çıkarabilirsiniz.
  • Kullanıcı banlayabilirsiniz.
  • Sunucunuza kullanıcı ekleyebilirsiniz. (Detaylıca anlatacağım.)
  • Sunucu oluşturabilirsiniz. (Detaylıca anlatacağım.)
  • Kullanıcılarla ilgili birçok işlem yapabilirsiniz. (Bunun için OAuth2 kullanmanız lazım bunu da detaylıca anlatmayı planlıyorum.)

Eğer başka neler yapabileceğinizi kendiniz de incelemek isterseniz bu linkten gerekli dokümanlara ulaşabilirsiniz. Henüz başlangıcını yaptığımız DiscordAPI serimizle alakalı aklınıza takılan herhangi bir soru veya anlamadığınız herhangi bir nokta varsa yorumlarda belirtebilirsiniz.

Github’da yer alan projelerimi incelemek isterseniz buraya tıklayın.

Emircan Yıldırım

Daha önce birçok blog/forum projesinde yer aldım ve tecrübeler edindim. 2020 yılında ise güvendiğim insanları da yanıma alarak Webinsan'ı kurmaya karar verdim. Şimdi ise hep beraber daha da ileriye gidiyoruz :)

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir