Discord'da uygulama oluşturma ve API anahtarlarını alma
Discord'da bir uygulama oluşturmak ve tokenları almak için Discord Geliştirici Portalı adresine gidin, New Application butonuna tıklayın ve bir isim belirleyin. Ardından Bot sekmesinde Add Bot butonuna tıklayıp Token değerini kopyalayın. OAuth entegrasyonları için OAuth2 bölümündeki Client ID ve Client Secret değerlerini kullanın. Bu anahtarlar, botların çalışması, kullanıcı yetkilendirmesi ve Discord API ile etkileşim kurması için gereklidir.
Aşağıda, gizli anahtarlarla çalışırken kritik öneme sahip güvenlik önlemleri dahil olmak üzere, her yapılandırma aşamasına ilişkin ayrıntılı talimatlar verilmiştir.
İçindekiler
Uygulama kaydı (Application) {#registration}
Discord ile herhangi bir entegrasyon (bot, yetkilendirme içeren web sitesi, overlay) bir "Uygulama" (Application) oluşturularak başlar. Bu, kodunuzu Discord altyapısına bağlayan bir kapsayıcıdır.
- Discord Geliştirici Portalı adresinde oturum açın.
- Sağ üst köşedeki New Application butonuna tıklayın.
- Proje adını girin (örneğin,
MySuperBotveyaSiteAuth). Adı daha sonra değiştirebilirsiniz. - Kullanım koşullarını kabul edin ve Create butonuna tıklayın.
Oluşturma işleminden sonra General Information sayfasına yönlendirileceksiniz. Burada hemen Application ID (veya Client ID) alanına dikkat edin. Bu, uygulamanızın genel kimlik bilgisidir. Gizli değildir ve örneğin botu sunucuya davet etmek için bağlantı oluştururken kullanılır.
Icon (simge) ve Description (açıklama) alanlarını doldurun. Botu resmi kataloglarda yayınlamayı planlıyorsanız veya Verified Bot statüsü kullanmayı düşünüyorsanız, kaliteli bir simge ve açıklamanın erken aşamalarda bulunması zorunludur.
Bot oluşturma ve token alma {#bot-token}
Amacınız bir sohbet botu oluşturmaksa, uygulamaya özel bir bot kullanıcısı eklemeniz gerekir.
- Sol menüden Bot bölümünü seçin.
- Add Bot butonuna tıklayın ("Build-A-Bot" başlığının altında, sağ tarafta).
- Yes, do it! butonuna tıklayarak işlemi onaylayın.
Bundan sonra Token bölümü görünecektir. Bu, bot kodunun çalışması için en önemli öğedir.
- Reset Token (düğme etkinse) veya View Token / Copy butonlarına tıklayın.
- Uzun karakter dizisini kopyalayın.
Bot Token, botunuzun şifresidir. Bu tokene sahip olan herkes, sizin adınıza botu yönetebilir: mesajları okuyabilir, kanalları silebilir, kullanıcıları yasaklayabilir. Tokenı asla ekran görüntülerinde, canlı yayınlarda göstermeyin ve kod içinde açık metin olarak saklamayın.
Tokenı yanlışlıkla ifşa ederseniz, aynı bölümde derhal Reset Token butonuna tıklayın. Eski token geçersiz hale gelecektir ve yeni tokenı barındırma hizmetinizin ayarlarında veya yerel .env dosyanızda güncellemeniz gerekecektir.
OAuth2 yapılandırması: Client ID ve Secret {#oauth2-setup}
Discord üzerinden giriş yapma (Login with Discord) veya kullanıcının sunucuları hakkında veri alma işlemleri için OAuth2 protokolleri kullanılır. Anahtarlar sol menüdeki OAuth2 bölümünde bulunur.
Burada iki değere ihtiyacınız olacak:
- Client ID: Application ID ile aynıdır. Yetkilendirme isteği sırasında uygulamayı tanımlamak için kullanılır.
- Client Secret: Sunucu tarafındaki uygulamanızda, yetkilendirme kodunu erişim tokenı ile değiştirmek için kullanılan gizli anahtardır.
Redirect URI'lerin yapılandırılması
OAuth2 → General bölümünde Redirects alanını bulun. Buraya, başarılı girişten sonra Discord'un kullanıcıyı yönlendireceği adresleri eklemeniz gerekir.
- Yerel geliştirme için genellikle şu kullanılır:
http://localhost:3000/callback(port farklı olabilir). - Prodüksiyon ortamı için:
https://siteniz.ru/api/discord/callback.
Eklenmiş ve doğrulanmış bir Redirect URI olmadan yetkilendirme çalışmaz. Discord, dönüş adresini ayarlarda belirtilen adresle kesinlikle karşılaştırır.
Davet bağlantısı oluşturma
Bir botu sunucuya eklemek için kod yazmak zorunda değilsiniz. Dahili oluşturucuyu kullanın:
- OAuth2 → URL Generator bölümüne gidin.
- Scopes bloğunda
botseçeneğini işaretleyin. - Aşağıda beliren Bot Permissions bloğunda botun ihtiyaç duyduğu izinleri işaretleyin (örneğin,
Send Messages,Manage Roles). - Generated URL alanından oluşturulan bağlantıyı kopyalayın ve tarayıcınızda açın.
Anahtarların güvenli saklanması {#security}
Yeni başlayanların yaptığı en büyük hata, tokenları doğrudan kaynak koda sabit kodlamaktır (örneğin, const token = "MTIz...";). Bu durum, kodun GitHub'da yayınlanması halinde sızıntılara yol açar.
Çevre değişkenlerini kullanın.
.env dosya yapısı örneği
Projenizin kök dizininde bir .env dosyası oluşturun (bunu .gitignore dosyasına eklemeyi unutmayın!):
DISCORD_TOKEN=uzun_bot_tokeniniz
DISCORD_CLIENT_ID=client_idniz
DISCORD_CLIENT_SECRET=client_secretniz
Kodda kullanım örneği (Node.js / Python)
JavaScript (discord.js):
require('dotenv').config();
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.login(process.env.DISCORD_TOKEN);
Python (discord.py):
import os
import discord
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
client = discord.Client(intents=discord.Intents.default())
client.run(TOKEN)
Bu yaklaşım, kodu herkese açık bir depoya yükleseniz bile saldırganların anahtarlarınıza erişemeyeceğini garanti eder, çünkü .env dosyası sürüm kontrol sistemi tarafından yok sayılır.
Sık yapılan hatalar {#common-errors}
| Hata | Neden | Çözüm |
|---|---|---|
| 401 Unauthorized | Geçersiz bot tokenı. | Fazladan boşluk kopyalayıp kopyalamadığınızı kontrol edin. Client Secret yerine gerçekten Bot Token kullandığınızdan emin olun. |
| Invalid Form Body | İzinlerde (Intents) hata. | Geliştirici portalındaki Bot bölümünde gerekli Privileged Gateway Intents (Presence, Server Members, Message Content) seçeneklerini etkinleştirin. |
| OAuth2 Redirect Mismatch | Dönüş adresi ayarlarla eşleşmiyor. | Koddaki URL ile portaldaki OAuth2 → General bölümündeki URL'nin tam olarak eşleştiğini kontrol edin. |
| Bot çevrimdışı | Token hatalı veya betik çöktü. | Başlatma konsolunda hata olup olmadığını kontrol edin. Tokenı sıfırlayıp yapılandırmada güncellemeyi deneyin. |
Client Secret ile Bot Token karıştırmayın. Benzer görünürler (uzun dizeler), ancak farklı amaçlara hizmet ederler. Token, bot kütüphanesinin ağ geçidine (Gateway) bağlanması için gereklidir. Secret ise web sunucunuzun imzayı doğrulaması veya OAuth2 token değişimi yapması için gereklidir.
SSS {#faq}
Application ID nerede bulunur? Uygulamanın ana sayfasında (General Information) en üstte yer alır ve ayrıca OAuth2 → General bölümünde Client ID olarak tekrarlanır.
Tek bir uygulamada birden fazla bot olabilir mi? Hayır, bir uygulama = bir bot kullanıcısı. İki farklı bota ihtiyacınız varsa, Geliştirici Portalı'nda iki ayrı uygulama oluşturun.
Token sızarsa ne yapılmalı? Derhal Bot bölümüne gidin ve Reset Token butonuna tıklayın. Eski token anında çalışmayı durduracaktır. Yeni tokenı barındırma hizmetinizin ayarlarında veya yerel ortamınızda güncelleyin.
Normal bir sohbet botu için Client Secret'a ihtiyacım var mı? Hayır, yalnızca Discord içinde çalışan (komutlara yanıt veren, moderasyon yapan) bir bot yazıyorsanız, sadece Bot Token gerekir. Client Secret yalnızca Discord üzerinden yetkilendirme içeren bir web sitesi yapıyorsanız veya bot bağlamı dışında API ile etkileşim kuruyorsanız gereklidir.