Uygulamayı oluştur
discord.com/developers/applications adresine gir, New Application ile uygulamanı kur. Sol menüden Games → Social SDK aç, kısa formu doldur. Erişim anında gelir; gerçek bir oyuna gerek yok.
Üç platformda da aynı. Bu adım için sadece bir tarayıcı yeterli.
Editör deneyini aç
Widget editörü portalda gizli bir deney bayrağının arkasında. Açmak için tarayıcı konsoluna bir snippet çalıştıracaksın. Konsola erişim platforma göre değişir.
Firefox'ta sayfadayken F12 → Console sekmesini aç.
Firefox'ta addons.mozilla.org üzerinden Eruda eklentisini ekle. Sayfayı aç, beliren Eruda düğmesine basıp konsolu aç.
iOS'ta hiçbir tarayıcı eklenti yüklemez. Eruda'yı bookmarklet ile çağır: aşağıyı yer imi olarak kaydet, portal sayfasındayken o yer imine dokun. Konsol açılır. Safari en güvenilir sonucu verir.
javascript:(function(){var s=document.createElement('script');s.src='https://cdn.jsdelivr.net/npm/eruda';document.body.appendChild(s);s.onload=function(){eruda.init();};})();
discord.com/developers sayfasındayken konsola yapıştır:
// developer portal webpack
let _mods = webpackChunkdiscord_developers.push([[Symbol()], {}, r => r.c]);
webpackChunkdiscord_developers.pop();
let findByProps = (...props) => {
for (let m of Object.values(_mods)) {
try {
if (!m.exports || m.exports === window) continue;
if (props.every(x => m.exports?.[x])) return m.exports;
for (let ex in m.exports) {
if (props.every(x => m.exports?.[ex]?.[x])) return m.exports[ex];
}
} catch {}
}
};
findByProps("getAll").getAll()
.find(e => e.getName() === "ApexExperimentStore")
.createOverride("2026-03-widget-config-editor", 1);
Çalıştırınca sayfayı yenileme. Sol üstten geri gel, uygulamana tekrar gir. Sol barda Widget menüsü çıkar.
Tasarla ve yayınla
Editörde widget'ını tasarla. Sabit kalmasını istemediğin yazıları User Data olarak işaretle. Sağ alttaki Sample Data kısmına örnek veri gir, sağ üstte Generate JSON'a bas. Çıkan JSON'u bir yere kaydet.
Modalı kapat, sağ üstte Save Changes, ardından Publish.
Üç platformda da aynı. Editör tamamen tarayıcı içinde.
OAuth2 ve token
Sol menüde OAuth2 aç. Bir Redirect URI ekle; kendi siten ya da https://discord.com olabilir. Save.
Altta OAuth2 URL Generator'da scope olarak openid ve sdk.social_layer seç, redirect URI'yi seç, üretilen URL'yi kopyala. URL'de response_type=code kısmını response_type=token yap ve bir kez aç.
Hata yoksa tamam. Invalid scopes alırsan Social SDK formu gönderilmemiş demektir. Son olarak Bot sayfasına gel, Reset Token yap, yeni token'ı kaydet.
Veriyi API ile gönder
Widget verisini Discord API'ye bot token'ınla PATCH atarak basacaksın. Hangi terminali kullanacağın platforma göre değişir.
Terminal, PowerShell ya da cmd. curl Windows 10+, macOS ve Linux'ta yerleşik gelir.
F-Droid'den Termux kur. Gerekirse pkg install curl çalıştır.
App Store'dan a-Shell kur. curl yerleşik gelir.
Aşağıyı kendine göre düzenleyip çalıştır — UYGULAMA_ID, SENIN_USER_ID, BOT_TOKEN ve kullanıcı adı:
curl -X PATCH "https://discord.com/api/v9/applications/UYGULAMA_ID/users/SENIN_USER_ID/identities/0/profile" \
-H "Content-Type: application/json" \
-H "Authorization: Bot BOT_TOKEN" \
-H "User-Agent: DiscordBot (https://github.com/discord/discord-api-docs, 1.0.0)" \
-d '{
"username": "kullanici_adin",
"data": {
"dynamic": [
{
"type": 1,
"name": "wanna learn how i did this?",
"value": "tut coming soon"
}
]
}
}'
204 No Content (boş yanıt) görürsen istek başarılı.
Renderer deneyini aç ve gör
Widget'ın profilde görünmesi için hesabında ikinci bir deney bayrağı Variant 1 olmalı: 2026-03-application-widget-v2-renderer. Bunu geliştirici portalında değil, Discord web istemcisinde (discord.com/app) konsoldan ayarlarsın. Discord burada bir Stop! uyarısı gösterir; yalnızca anladığın kodu çalıştır.
discord.com/app aç, F12 → Console.
Firefox + Eruda ile discord.com/app aç, konsolu aç.
discord.com/app aç, Adım 2'deki Eruda bookmarklet'ini çalıştır.
// discord web client webpack
let _mods = webpackChunkdiscord_app.push([[Symbol()], {}, r => r.c]);
webpackChunkdiscord_app.pop();
let findByProps = (...props) => {
for (let m of Object.values(_mods)) {
try {
if (!m.exports || m.exports === window) continue;
if (props.every(x => m.exports?.[x])) return m.exports;
for (let ex in m.exports) {
if (props.every(x => m.exports?.[ex]?.[x])) return m.exports[ex];
}
} catch {}
}
};
findByProps("getAll").getAll()
.find(e => e.getName() === "ApexExperimentStore")
.createOverride("2026-03-application-widget-v2-renderer", 1);
Snippet hata verirse Discord Previews sunucusundaki widget thread'inde hazır snippet'i kullan. İşlem bitince widget masaüstü ve tarayıcı profilinde görünür — mobilde görünmez.