Discord özel oyun etkinliği sergileme
Bu yazı 2021 yılından. Anlatılan sürümler, fiyatlar ve adresler o günden bu yana değişmiş olabilir.
Bugün Python kütüphanelerinden yararlanarak Discord uygulamasında oyun etkinliğinizde istediğiniz oyunu istediğiniz görsel ile sergilemenizi göstereceğim.
Güncelleme (Kasım 2026): Bu yazıyı 2021'de yazmıştım. Kullandığımız pypresence kütüphanesi o günden bu yana epey güncellendi, Discord'un geliştirici paneli de değişti. Kodu ve anlatımı bugünkü haline göre düzenledim, eski koddaki süre sayacı hatasını da düzelttim.
Discord'un bu özelliğinin adı Rich Presence. Profilinizde "Oyun oynuyor" kısmında görünen oyun adını, görselleri, alt satırdaki yazıları ve butonları kendiniz belirleyebiliyorsunuz. Yazının sonunda nasıl göründüğünü görebilirsiniz.
Başlamadan önce
Burada çok önemli bir nokta var: bu kod Discord'a internet üzerinden değil, aynı bilgisayarda açık olan Discord uygulamasıyla konuşarak çalışıyor. Yani kodu Discord'un açık olduğu kendi bilgisayarınızda çalıştırmanız gerekiyor. Eski yazıda "bilgisayarımızda ya da sunucumuzda" demiştim, bu yanlıştı. Sunucuda Discord uygulaması açık olmadığı için kod orada çalışmaz. Tarayıcıdan açtığınız Discord'da da çalışmıyor, masaüstü uygulamasının açık olması lazım.
Bunun için bilgisayarımızda Python 3.9 veya üzeri bir sürüm kurulu olmalı. Windows bilgisayarınıza kurmak için python.org üzerinden indirerek rahatlıkla kurulumu yapabilirsiniz. Kurulumun ilk ekranında Add python.exe to PATH kutucuğunu işaretlemeyi unutmayın, işaretlemezseniz terminalde python komutu bulunamıyor.
1. Discord'da uygulama oluşturmak
Profilinizde görünecek oyun adı, Discord'da oluşturduğunuz bir uygulamanın adından geliyor. Discord Developer Portal adresine girip Discord hesabınızla giriş yapıyoruz ve sağ üstteki New Application butonuna basıyoruz. Buraya yazdığınız isim profilinizde "Oynuyor" kısmında görünecek isim, o yüzden göstermek istediğiniz oyunun adını yazın. Ben kendi oyunum olan Faul! için yaptım.
Uygulamayı oluşturduktan sonra General Information sayfasındaki Application ID değerini kopyalayıp bir kenara kaydediyoruz. Eski yazıda bunu OAuth2 kısmından almıştık, orada da Client ID adıyla aynı numara yazıyor.
2. Görselleri yüklemek
Profilde bir büyük, bir de onun köşesinde duran küçük görsel gösterebiliyoruz. Bunları da yine Developer Portal üzerinden yüklüyoruz. Uygulamamıza girerek Rich Presence > Art Assets kısmına geliyoruz, Add Image(s) butonuna basarak görsellerimizi yüklüyoruz ve kaydediyoruz.
Yüklerken her görselin bir adı oluyor, birazdan kodda görselleri bu adlarla çağıracağız. Görselin adını küçük harfle ve boşluksuz verin, örneğin faul ya da anlatici. Görselleri en az 512x512 piksel ve kare yüklemenizi tavsiye ederim. Bir de şunu bilin: yüklediğiniz görsellerin kullanılabilir hale gelmesi birkaç dakika sürebiliyor. İlk denemede görsel çıkmazsa biraz bekleyip tekrar deneyin.
3. Kodu hazırlamak
Discord oyun etkinliğimizi özelleştirebilmek için pypresence modülünden yararlanacağız. Bilgisayarımızda boş bir proje klasörü oluşturalım ve terminal üzerinden cd komutuyla klasörün içine girelim. Ardından modülümüzü kuralım:
pip install pypresenceŞimdi aynı klasörde status.py adında bir dosya oluşturalım ve aşağıdaki kodları kopyalayıp içerisine yapıştıralım.
import time
from pypresence import Presence
client_id = '833878367140970527' # Developer Portal'daki Application ID
RPC = Presence(client_id)
RPC.connect()
RPC.update(
details="Anlatıyor...", # üst satır
state="Oyunda", # alt satır
large_image="faul", # büyük görselin Art Assets'teki adı
large_text="Faul!", # büyük görselin üstüne gelince çıkan yazı
small_image="sm", # küçük görselin adı
small_text="Anlatıcı", # küçük görselin üstüne gelince çıkan yazı
party_id="lobi",
party_size=[4, 4], # lobide 4 kişiden 4'ü dolu
start=int(time.time()), # "00:00 geçti" sayacı şu andan başlar
buttons=[{"label": "Lobi Oluştur", "url": "https://faul.app"}],
)
print("Durum güncellendi. Kapatmak için Ctrl+C")
while True:
time.sleep(15)client_id kısmına bir önceki adımda kopyaladığımız Application ID'yi yazıyoruz. large_image ve small_image kısmına da Art Assets'e yüklediğimiz görsellerin adını yazıyoruz. Geri kalan kısımları kendinize göre özelleştirebilirsiniz, her satırın ne işe yaradığını yanına yazdım. İstemediğiniz bir satırı silmeniz yeterli, örneğin küçük görsel istemiyorsanız small_image ve small_text satırlarını silin.
Birkaç kısmı biraz daha açayım:
- start: Profilinizde "12:34 geçti" gibi bir süre sayacı gösteriyor. Buraya sayacın başlayacağı anı saniye cinsinden zaman damgası olarak veriyoruz, int(time.time()) da "şu an" demek. Eski kodda buraya "13" yazmıştım. Discord bunu 1970'ten bu yana geçen 13. saniye olarak anladığı için sayaç anlamsız bir değerden başlıyordu.
- end: Sayacın geriye doğru saymasını isterseniz start yerine bunu kullanabilirsiniz. Örneğin end=int(time.time()) + 600 yazarsanız 10 dakikadan geriye sayar.
- party_size: Birinci sayı lobideki kişi sayısı, ikincisi en fazla kaç kişi olabileceği. Bunun görünmesi için party_id kısmına da bir şey yazılmış olması gerekiyor.
- buttons: Profilinize en fazla 2 buton ekleyebilirsiniz. Butonlar başkaları profilinize baktığında görünüyor, kendi profilinizde görünmüyor. Kendinizde göremeyince çalışmıyor sanmayın, bir arkadaşınıza baktırın.
En alttaki while True döngüsü programın açık kalmasını sağlıyor. Program kapandığı anda Discord durumunuz da siliniyor.
4. Çalıştırmak
Artık dosyamız çalıştırmaya hazır. Discord uygulamasının açık olduğundan emin olduktan sonra terminalimiz üzerinden şu komutu çalıştırıyoruz:
python status.pyLinux ya da macOS kullanıyorsanız python3 status.py yazmanız gerekebilir. Eğer her şeyi sorunsuz yaptıysanız durumunuz aşağıdaki şekilde olacaktır.

Durumu kapatmak için terminalde Ctrl+C tuşlarına basmanız yeterli.
Oynuyor yerine İzliyor ya da Dinliyor
pypresence'ın yeni sürümleriyle profilinizde "Oynuyor" yerine "İzliyor", "Dinliyor" ya da "Yarışıyor" yazdırmak da mümkün. Bunun için kodun en üstüne bir import ekleyip update içine activity_type satırını yazıyoruz:
from pypresence import ActivityType
RPC.update(
activity_type=ActivityType.WATCHING, # LISTENING: Dinliyor, COMPETING: Yarışıyor
details="Bir film",
large_image="faul",
)Sık karşılaşılan hatalar
- InvalidID: client_id kısmına yazdığınız Application ID yanlış.
- DiscordNotFound: Bilgisayarınızda Discord uygulaması açık değil ya da kodu Discord'un olmadığı bir yerde (sunucuda) çalıştırıyorsunuz.
- Durum görünüyor ama görseller çıkmıyor: Kodda yazdığınız görsel adı Art Assets'teki adla birebir aynı değil ya da görseller daha yeni yüklendi, birkaç dakika bekleyin.
- Hiçbir şey görünmüyor: Discord'da Ayarlar > Etkinlik Gizliliği kısmında etkinliğinizi paylaşma ayarının açık olduğundan emin olun.