CS2 Discord Rich Presence
Counter-Strike 2 oynarken Discord profilinde sadece "Counter-Strike 2 oynuyor" yazısı yerine; hangi haritada, hangi modda (Rekabetçi/Premier, Yoldaş (Wingman), Basit (Casual), Deathmatch, Silah Yarışı, Yıkım, Ko-op, Antrenman, Özel Oyun, vb.) ve kaçıncı roundda olduğunu gösteren bir araç.
Round kavramı olmayan modlarda (Deathmatch, Silah Yarışı gibi) round yerine o anki frag/ölüm sayın gösterilir.
Nasıl çalışır?
CS2, Valve'ın Game State Integration (GSI) özelliği sayesinde oyun içi durumu (harita, mod, round, skor, bomba durumu...) belirli aralıklarla bilgisayarındaki bir HTTP adresine gönderebilir. Bu script:
http://127.0.0.1:3000adresinde küçük bir yerel sunucu açar.- CS2'den gelen bu veriyi okur.
pypresencekütüphanesi ile Discord masaüstü uygulamasına iletir.
Kurulum
1) Discord Uygulaması oluştur
Discord, üçüncü parti scriptlerin "Rich Presence" gösterebilmesi için bir uygulama (Client ID) oluşturmanı ister:
- https://discord.com/developers/applications adresine git.
- New Application ile yeni bir uygulama oluştur, adını istersen
Counter-Strike 2koy. - Sol menüden OAuth2 / General sayfasında görünen Application ID (Client ID) değerini kopyala.
Harita görsellerini de bu adımda yükle. Aynı sayfada sol menüden
Rich Presence → Art Assets kısmına git ve assets/maps/
klasöründeki her PNG'yi, dosya adıyla aynı anahtar (key) ismiyle yükle
(uzantısız, hepsi küçük harf):
cs2_logo, de_dust2, de_mirage, de_inferno, de_nuke, de_overpass,
de_vertigo, de_ancient, de_anubis, de_train, de_cache, cs_office,
cs_italy, cs_agency, de_shortdust, de_lake, de_stmarc, de_grail, aim_map
Elinde gerçek ekran görüntüsü olmayan haritalar için (Wingman haritaları,
Agency, Aim Map gibi) bu adımı atlayabilirsin — script otomatik olarak
cs2_logo'ya düşer. Yeni bir görsel eklediğinde/değiştirdiğinde de aynı
anahtar ismiyle üzerine yükleyip script'i yeniden başlatman yeterli.
2) GSI config dosyasını CS2'ye tanıt
gamestate_integration_discordrpc.cfg dosyasını CS2'nin şu klasörüne kopyala:
<Steam kurulum dizini>\steamapps\common\Counter-Strike Global Offensive\game\csgo\cfg\
(CS2, CS:GO'nun devamı olduğu için klasör adı hâlâ csgodur.)
Dosyayı kopyaladıktan sonra CS2'yi (açıksa) yeniden başlat.
3) Bağımlılıkları kur
pip install -r requirements.txt
4) Client ID'ni kaydet
İki seçeneğin var:
a) Tek seferlik / test için — ortam değişkeni:
# Windows (PowerShell)
$env:DISCORD_CLIENT_ID="BURAYA_CLIENT_ID"; python cs2_discord_rpc.py
# Linux / macOS
DISCORD_CLIENT_ID=BURAYA_CLIENT_ID python cs2_discord_rpc.py
b) Kalıcı / otomatik başlatma için — config.json (önerilen):
cp config.example.json config.json # Windows: copy config.example.json config.json
config.json dosyasını aç, discord_client_id alanına Client ID'ni yaz.
Bu dosya .gitignore'da olduğu için repoya gitmez. Script her çalıştığında
otomatik olarak bu dosyayı okur — ortam değişkeni ayarlamana gerek kalmaz,
bu yüzden Windows başlangıcına eklemek için idealdir (bkz. aşağıdaki bölüm).
5) Script'i çalıştır
Discord masaüstü uygulamasının açık olduğundan emin ol, sonra:
python cs2_discord_rpc.py
CS2'ye girip bir maça başladığında Discord profilinde harita, mod ve round bilgisi otomatik olarak görünmeye başlar. Ana menüdeyken veya oyundan çıktığında durum otomatik olarak güncellenir/temizlenir.
Windows'ta otomatik başlatma (PC/oturum açılışında)
Her seferinde elle çalıştırmak istemiyorsan, Windows'ta oturum açtığın anda script'i arka planda (konsol penceresi açmadan) otomatik başlatan bir Görev Zamanlayıcı (Task Scheduler) görevi kurabilirsin:
- Önce yukarıdaki 4b) config.json adımını tamamla (Client ID kaydedilmeden script çalışmaz).
- PowerShell'i (bu repo klasörünün içindeyken) aç. Görev Zamanlayıcı bazı
Windows kurulumlarında normal kullanıcıyla yeni görev oluşturmaya izin
vermeyebilir — "Erişim engellendi" hatası alırsan PowerShell'i
yönetici olarak (sağ tık → "Run as Administrator") yeniden aç:
powershell -ExecutionPolicy Bypass -File windows_autostart\install_autostart.ps1
- Bu kadar. Bir sonraki oturum açışında script otomatik başlayacak.
Hemen şimdi denemek istersen:
Start-ScheduledTask -TaskName "CS2DiscordRPC"
Kaldırmak istersen:
powershell -ExecutionPolicy Bypass -File windows_autostart\uninstall_autostart.ps1
Not: Görev "oturum açılışında" (
AtLogOn) tetiklenir, "bilgisayar açılışında" değil — çünkü script'in konuşacağı Discord masaüstü uygulaması da zaten senin oturumun içinde çalışır, sistem açılışında değil. Discord henüz tam açılmamış olsa bile script birkaç saniyede bir otomatik yeniden dener, o yüzden sıralamayla ilgili bir şey yapmana gerek yok. Görev, script çökerse de kendini birkaç kez yeniden başlatacak şekilde ayarlıdır.
Harita görselleri
Discord Rich Presence'ta iki görsel alanı var: büyük ana görsel ve onun sağ alt köşesinde duran küçük rozet. Bu script'te:
- Büyük görsel o an içinde bulunduğun haritayı gösterir
(
assets/maps/<harita_kodu>.png). - Küçük rozet her zaman
assets/maps/cs2_logo.png— sabit CS2 logosu. - Ana menüdeyken (henüz bir maçta değilken) sadece büyük CS2 logosu görünür, küçük rozet olmaz.
assets/maps/ klasöründe her ana harita için (Dust II, Mirage, Inferno,
Nuke, Overpass, Vertigo, Ancient, Anubis, Train, Cache, Office, Italy,
Agency, Wingman haritaları, Aim Map) küçük birer PNG rozet + genel
cs2_logo.png bulunuyor. Şu an bunlar bu repo için üretilmiş basit
ikonlardır (bkz. aşağıdaki "Gerçek ekran görüntüsü" bölümü — kendi
görsellerinle kolayca değiştirebilirsin).
- Script, GSI'dan gelen harita adını (ör.
de_dust2) doğrudan Discord Developer Portal'a yüklediğin Art Asset anahtarı olarak gönderiyor — bkz. yukarıdaki "1) Discord Uygulaması oluştur" adımı. Dış URL kullanılmıyor; bu, klasik masaüstü Rich Presence ile en garantili çalışan yöntem. - Elimizde ikonu olmayan bir harita gelirse (yeni çıkan bir harita ya da
community server haritası) büyük görsel de otomatik olarak
cs2_logo'ya düşer. - Yeni bir harita eklemek / ikonları yeniden üretmek istersen:
assets/generate_map_icons.pyscript'ini (Pillow gerektirir) düzenleyip tekrar çalıştırabilirsin.
Gerçek ekran görüntüsü kullanmak istersen
Valve'ın oyun içi ekran görüntülerini bu repoya hazır olarak koymuyoruz (telifli içerik). Ama kendi aldığın ekran görüntülerini kullanmak tamamen senin tercihin ve çok kolay:
- CS2'de bir maça gir,
F12(Steam ekran görüntüsü) ile görüntü al. - Görüntüyü
assets/screenshots_raw/<harita_kodu>.jpgolarak kaydet (ör.assets/screenshots_raw/de_mirage.jpg; geçerli harita kodları yukarıdaki listede). python assets/import_screenshots.pyçalıştır.
Script, görüntüyü otomatik olarak 1024x576 (16:9) boyutuna ortalayarak
kırpıp assets/maps/<harita_kodu>.png olarak kaydeder; cs2_discord_rpc.py
tarafında hiçbir değişikliğe gerek kalmadan bu yeni görsel kullanılmaya
başlar.
Desteklenen modlar
| GSI mod anahtarı | Discord'da görünen ad | Round gösterimi |
|---|---|---|
competitive |
Rekabetçi | Round X/24 |
scrimcomp5v5 |
Premier | Round X/24 |
scrimcomp2v2 |
Yoldaş (Wingman) | Round X/16 |
casual |
Basit | Round X |
deathmatch |
Deathmatch | Frag / ölüm |
gungameprogressive |
Silah Yarışı (Arms Race) | Frag / ölüm |
gungametrbomb |
Yıkım (Demolition) | Round X |
skirmish |
Uçan Keşif Nişancısı | Round X |
cooperative |
Ko-op Görev | Frag / ölüm |
training |
Antrenman | Frag / ölüm |
custom |
Özel Oyun | Round X |
Listede olmayan yeni bir mod eklenirse script "Bilinmeyen Mod" olarak
gösterir; cs2_discord_rpc.py içindeki MODE_INFO sözlüğüne yeni satır
ekleyerek kolayca genişletilebilir.
Not:
competitive/scrimcomp5v5için 24,scrimcomp2v2için 16 round varsayılan matchmaking ayarlarına (MR12 / MR8) göre verilmiştir. Özel sunucularda (community server) bu limit farklıysa sadece geçerli round numarası gösterilir.
Metadata
Release files for cs2-discord-rpc 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cs2_discord_rpc-1.0.0.tar.gz | 12.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cs2_discord_rpc-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 25.8 kB
Release files / cs2_discord_rpc-1.0.0.tar.gz
| Download URL | cs2_discord_rpc-1.0.0.tar.gz |
|---|---|
| Size | 12.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3eb61f4c715070b21cea152107b94b22f1989cbcfce562c882592e77767b49b4
|
|
BLAKE2b-256 checksum How to use checksums |
90f944e986c1b5cb4bc913c3d0e3743abb2696d1223a317d6dcf6325dee0f9e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency logRelease files / cs2_discord_rpc-1.0.0-py3-none-any.whl
| Download URL | cs2_discord_rpc-1.0.0-py3-none-any.whl |
|---|---|
| Size | 13.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a4ce6b18cbd7f833f6e5b92a0c82c1c83207aab9ae07846d5ba38225084c8868
|
|
BLAKE2b-256 checksum How to use checksums |
1db26a8ac1446b7416cd5f15f25813fc77aa6f8735c202965339ef6fc9f85e30
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency log