- Katılım
- 9 Şub 2024
- Mesajlar
- 925
- Tepkime puanı
- 1,765
- Puanları
- 93
jhaeger
Discord Bot Token'ı Nedir? Güvenli Nasıl Saklanır?
.env kullanımı ve token sızarsa yapılacaklar
.env kullanımı ve token sızarsa yapılacaklar
Bot token'ı nedir?
Token, botunuzun Discord'daki şifresidir. Kodunuz bu token ile Discord'a "ben şu botum" der ve bağlanır. Token'a sahip olan herkes botunuzu sizin yerinize kullanabilir. Yani:
- Botun bulunduğu tüm sunucularda mesaj gönderebilir, kanalları ve rolleri silebilir
- Botun yetkisi kadar üyeleri banlayabilir veya atabilir
- Sunucularınızı spam ve reklamla doldurabilir
Kod:
MTIzNDU2Nzg5MDEyMzQ1Njc4.GabcDE.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Token'ı nereden alırım?
- discord.com/developers/applications adresine girin
- Botunuzun uygulamasını seçin
- Sol menüden Bot sekmesine gidin
- Reset Token butonuna basıp yeni token'ı kopyalayın
Token'ı asla yapmayın
- Doğrudan koda yazıp
client.login('TOKEN')diye bırakmak - GitHub'a veya herhangi bir herkese açık depoya yüklemek
- Forumda veya Discord'da "kodum çalışmıyor" diye paylaştığınız kodun içinde bırakmak
- Ekran görüntüsü veya ekran paylaşımında göstermek
- Arkadaşlarınıza "bak çalışıyor mu" diye göndermek
TOKEN diye değiştirin.Doğru yöntem: .env dosyası
1) dotenv paketini kurun
Kod:
npm i dotenv
2) Bot klasörüne
.env adında bir dosya oluşturun
Kod:
TOKEN=buraya_bot_tokeniniz
CLIENT_ID=buraya_uygulama_id
TOKEN = ... yerine TOKEN=... yazın.3) Kodda token'ı buradan okuyun
JavaScript:
require('dotenv').config();
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
if (!process.env.TOKEN) {
console.error('TOKEN bulunamadı! .env dosyasını kontrol edin.');
process.exit(1);
}
client.once('ready', () => console.log(`${client.user.tag} aktif!`));
client.login(process.env.TOKEN);
4) .gitignore dosyası oluşturup .env'i dışarıda bırakın
Kod:
.env
node_modules
config.json
İpucu: Node.js 20.6 ve üzerinde dotenv paketine gerek kalmadan da çalıştırabilirsiniz:
Kod:
node --env-file=.env index.js
Hosting / VPS kullanıyorsanız
Railway, Render, Heroku benzeri servislerde
.env dosyası yüklemek yerine panelden Environment Variables bölümüne TOKEN değişkenini ekleyin. Kod yine process.env.TOKEN ile okur, dosya yüklemenize gerek kalmaz.Token sızdıysa ne yapmalı?
Sızdığından şüphelenseniz bile beklemeyin:
- Hemen token'ı sıfırlayın. Developer Portal > Bot > Reset Token. Eski token anında geçersiz olur.
- Yeni token'ı
.envdosyasına veya hosting panelindeki değişkene yazıp botu yeniden başlatın. - Sunucularınızın Denetim Kaydı'na (Audit Log) bakın. Silinen kanal, rol, atılan veya banlanan üye var mı kontrol edin.
- Botun rollerini ve yetkilerini gözden geçirin, kimsenin eklemediği bir yetki veya rol var mı bakın.
- Token'ı bir depoya yüklediyseniz sadece dosyayı silmek yetmez, git geçmişinde kalır. Önemli olan token'ı sıfırlamaktır.
Ek güvenlik önerileri
- Bota Administrator yetkisi vermeyin, sadece ihtiyacı olan yetkileri verin. Token sızsa bile zarar sınırlı kalır.
- Developer Portal hesabınızda 2 adımlı doğrulamayı açın.
- Bot üzerinde birlikte çalışıyorsanız token'ı paylaşmak yerine uygulamayı bir Team altına alıp ekip üyesi olarak ekleyin.
- Kullanmadığınız Privileged Intent'leri kapalı tutun.
- Projenin yedeğini alırken
.envdosyasını herkese açık yerlere koymayın.
Sık görülen hatalar
- "An invalid token was provided": Token yanlış kopyalanmıştır, başında/sonunda boşluk vardır veya Reset Token sonrası eskisi kullanılıyordur.
- process.env.TOKEN undefined çıkıyor:
require('dotenv').config()satırı eksiktir, dosya adı.env.txtolmuştur veya dosya index.js ile aynı klasörde değildir. - Hosting'te bot açılmıyor: Değişkeni panele eklemeyi unutmuşsunuzdur.
.envdosyası .gitignore'da olduğu için sunucuya gitmemiştir.
Sorusu olan veya hata alan olursa konunun altına yazsın, birlikte çözelim.
Son düzenleme:




