Bir FiveM sunucusunun Discord ile bağlantılı çalışması bugün neredeyse standart hale geldi. Oyuncuların Discord rolüne göre sunucuya girmesi, oyun içi olayların Discord kanallarına loglanması, sunucu durumunun canlı gösterilmesi ve yetkili işlemlerinin kayıt altına alınması gibi sistemler hem yönetimi kolaylaştırır hem de topluluğu güçlendirir. Bu rehberde FiveM ile Discord'u güvenli ve doğru şekilde nasıl bağlayacağını anlatıyoruz.
Discord entegrasyonuyla neler yapılabilir?
- Discord whitelist: Yalnızca belirli bir role sahip üyelerin sunucuya girmesi.
- Rol tabanlı yetki: Discord'daki yetkili rolüne göre oyunda admin yetkisi verilmesi.
- Loglama: Giriş-çıkış, ölüm, para transferi, envanter ve yetkili komutlarının Discord kanallarına aktarılması.
- Durum paneli: Sunucunun açık olup olmadığını, oyuncu sayısını ve restart saatlerini gösteren canlı mesaj.
- Rich Presence: Oyuncunun Discord profilinde sunucunun adının ve logosunun görünmesi.
Adım 1: Discord uygulaması ve bot oluşturma
- Discord Developer Portal'da (discord.com/developers) "New Application" ile bir uygulama oluştur.
- "Bot" bölümünden bot kullanıcısını aç.
- Rol ve üye bilgisi okuyacaksan "Server Members Intent" iznini etkinleştir.
- "OAuth2 → URL Generator" bölümünde
botveapplications.commandskapsamlarını seç, yalnızca ihtiyacın olan izinleri işaretle ve oluşan bağlantıyla botu sunucuna davet et.
Bota "Administrator" izni vermek kolay görünür ama tehlikelidir. Token sızarsa saldırgan bütün Discord sunucunu silebilir. Yalnızca gereken izinleri ver.
Adım 2: Bot token'ını güvenli sakla
Bot token'ı, botunun şifresidir. Şunlara dikkat et:
- Token'ı script dosyalarının içine düz yazmak yerine
server.cfgiçinde birsetdeğişkeninde ya da ayrı, paylaşılmayan bir ayar dosyasında tut. Örneğinset discord_bot_token "..."yazıp script içindeGetConvar("discord_bot_token", "")ile oku. server.cfgdosyanı kimseyle paylaşma, GitHub gibi herkese açık depolara yükleme.- Token'ın sızdığından şüphelenirsen Developer Portal'dan hemen "Reset Token" yap.
Adım 3: Discord whitelist ve rol kontrolü
Oyuncu bağlanırken (playerConnecting olayı) oyuncunun Discord kimliği alınır ve Discord API'sinden oyuncunun rolleri sorgulanır. İstenen rol yoksa bağlantı reddedilir. Bu işi yapan hazır ve açık kaynak kaynaklar mevcuttur; kendi sisteminde dikkat etmen gerekenler:
- Discord API'sine her bağlantıda istek atmak yerine sonuçları kısa süre önbellekte tut; Discord hız limiti uygular.
- Oyuncunun Discord'u FiveM'e bağlı değilse anlaşılır bir mesaj göster.
- Discord API'si yanıt vermezse herkesi reddetmek yerine kontrollü bir yedek davranış belirle.
Adım 4: Webhook ile loglama
Loglama için bot yerine webhook kullanmak daha basittir. Kanal ayarlarından "Entegrasyonlar → Webhook" ile bir adres oluşturur ve sunucu scriptinden bu adrese mesaj gönderirsin.
local function logGonder(kanal, baslik, aciklama)
PerformHttpRequest(kanal, function() end, 'POST', json.encode({
username = 'Sunucu Log',
embeds = {{ title = baslik, description = aciklama, color = 16737281 }}
}), { ['Content-Type'] = 'application/json' })
endİyi bir log düzeni için:
- Her log türü için ayrı kanal kullan (giriş-çıkış, ekonomi, yetkili, ölüm).
- Log kanallarını yalnızca yetkililerin görebileceği şekilde ayarla.
- Webhook adreslerini istemci (client) tarafı scriptlere asla koyma; istemci dosyaları oyuncuların bilgisayarına indirilir ve okunabilir.
- Her saniye mesaj gönderen loglar Discord hız limitine takılır; olayları biriktirip toplu gönder.
Adım 5: Sunucu durum mesajı
txAdmin'in yerleşik Discord botu, sunucu durumunu bir kanalda sürekli güncellenen bir mesajla gösterebilir. Daha gelişmiş paneller için sunucunun players.json ve info.json uç noktalarından veri okuyan bir bot kullanabilirsin. txAdmin ayrıntıları için txAdmin rehberine bak.
Adım 6: Rich Presence
İstemci tarafında SetDiscordAppId, SetDiscordRichPresenceAsset ve SetRichPresence fonksiyonlarıyla oyuncunun Discord profilinde sunucu adı, logo ve "Discord'a katıl" gibi butonlar gösterebilirsin. Bu, oyuncuların arkadaşlarına sunucunu ücretsiz tanıtmasının en kolay yoludur.
Güvenlik kontrol listesi
- Bot yalnızca gereken izinlere sahip mi?
- Token ve webhook adresleri sadece sunucu tarafında mı?
- Log kanalları herkese kapalı mı?
- Ayrılan yetkililerin Discord rolleri ve panel erişimleri kaldırıldı mı?
- Discord sunucusunda iki adımlı doğrulama (2FA) zorunluluğu açık mı?
Discord sunucu düzeni için Discord sunucusu kurma rehberine, hazır botlar ve paneller için Web Panel & Discord Bot bölümüne göz atabilirsin.
Sıkça Sorulan Sorular
Discord whitelist için oyuncunun Discord'u bağlaması gerekir mi?
Evet. Oyuncunun FiveM istemcisinde Discord'un açık olması ve hesabının bağlı olması gerekir; aksi halde Discord kimliği sunucuya iletilmez.
Webhook ile bot arasındaki fark nedir?
Webhook yalnızca mesaj gönderir ve kurulumu çok basittir. Bot ise rol okuma, komut çalıştırma ve üye yönetimi gibi işler yapabilir.
Bot token'ım çalındı, ne yapmalıyım?
Developer Portal'dan hemen token'ı sıfırla, botun izinlerini gözden geçir ve sunucu denetim kaydından (audit log) yapılan işlemleri kontrol et.
Logları neden istemci tarafında göndermemeliyim?
İstemci dosyaları oyuncuların bilgisayarına indirilir. Webhook adresi orada olursa herkes kanalına sahte mesaj gönderebilir.
Discord rolü değişince oyundaki yetki de değişir mi?
Kullandığın sisteme bağlıdır. Rolleri yalnızca girişte kontrol eden sistemlerde değişiklik, oyuncu tekrar bağlandığında uygulanır.