0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Discord Widgets v2でプロフィールをいい感じにしたかった

0
Last updated at Posted at 2026-07-05

いつものようにXを見ていたらカスタムウィジェットをDiscordで設定している投稿を見かけました。 ※画像はイメージです

image.png

Discordでプロフィールにゲームのウィジェットを表示する機能があること自体は知っていたものの、上記のようにカスタムウィジェットを表示できることは知りませんでした。

実は、これはWidgets v2と呼ばれるAPIを使用しているようで、まだドキュメントもなかったので日本語で情報を書き留めておきます。

警告
この機能を使用するためには、Discord Developer Portalでスクリプトを実行する必要があります。この記事内で提示されるJavaScriptコードは単に内部フラグを追加するだけですが、あなたが何をしようとしているかわからない場合、この手順を続行するべきではありません。

実際にやってみる

結論から言えば、現時点ではこれを実行するのはおすすめしません。 いくらウィジェットを凝ったところで、自分以外には表示されないためです。それでも試したい方のみ読み進めてください。

準備

まず、この機能を使うにはSocial SDKを有効化する必要があります。Developer Portalからアプリケーションを作成して、"ゲーム" => から事前にSocial SDKを有効化してください。

次に、Widgets V2を使用するにはまだ一般公開されていない機能を有効化する必要があります。アプリケーションの詳細ページで以下のスクリプトを実行してください。

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]) && m.exports[ex][Symbol.toStringTag] !== 'IntlMessagesProxy')
                    return m.exports[ex];
            }
        } catch {}
    }
}

findByProps("getAll").getAll().find(e=>e.getName() === "ApexExperimentStore")
  .createOverride("2026-03-widget-config-editor", 1)

実行後、リロードせずに一度トップページに戻ってからアプリケーションを開き直します。すると以下の画像のように「ウィジェット」が追加されます。
image.png

使用方法

追加されたウィジェットを開くと、このような画面に移動します。

image.png

Widget Topで選択できるレイアウトは2つです。実際の表示は以下のようになります。

Hero Contained
image.png image.png

また、実際に使用するためにはAdd Widget Previewも設定する必要があります。

Value Typeについて

Value Typeとは何でしょうか。これは名前の通り値の型を設定する場所です。

User DataはSample Data (実際にはAPI)から設定できる値を表示するための型で、Data Fieldに入れた名前がそのままSample Dataのキーに相当します。

Application AssetはDiscord側にアップロードされる静的なアセットです。これで設定する場合は事前にDeveloper Portalからアセットの公開設定を行う必要があります。これがValue TypeにあるフィールドはUser Dataにする場合、Sample Dataではメディアに設定すると正常に画像が表示されます。 (実際に表示する場合はURLを設定する必要があるようです)

Custom String等はそのままの意味なので割愛します。

実際に反映する

反映する前に、OAuth2アプリケーションを作成した上でBotによる操作を承認させる必要があります。
具体的には以下のURLにアクセスし、承認を押します。この手順ではサーバーは必要ないのでリダイレクト先はエラーになると仮定します。そのため、そのまま続行してください。

https://discord.com/oauth2/authorize?client_id=CLIENT_ID&redirect_uri=http://localhost:45635&response_type=code&scope=openid+sdk.social_layer_presence

import requests

CLIENT_ID = clientid
USER_ID = userid
TOKEN = "TOKEN"
AUTHOR_URL = ""

resp = requests.patch(f"https://discord.com/api/v9/applications/{CLIENT_ID}/users/{USER_ID}/identities/0/profile", headers={
    "Content-Type": "application/json",
    "Authorization": f"Bot {TOKEN}",
    "User-Agent": "DiscordBot ({AUTHOR_URL}, 1.0.0)"
}, json=(Sample DataからGenerate JSONしたもの))

print(resp.status_code)

201が出力されたら反映は成功です。

ただし実際にプロフィールに追加するにはさらに手順を踏む必要があります。

まず、2026-03-application-widget-v2-add-tweakをDiscordで有効化する必要があります。Experimentalフラグの書き換えに関しては自身で調べて行ってください。

有効化後、普通にウィジェットを追加しようとするとこのように自身で作成したウィジェットが追加されています。これを追加することで、カスタムウィジェットを表示することができます。

image.png

実用性

実際にここまで進めてきましたが、前述のようにこのカスタマイズに実用性は殆どありません。

実例を示すと、他のユーザーからあなたを見ると、このようにカスタムウィジェットは表示されません。 2026/6/7 追記: 他のアカウントからも閲覧できたという報告もあるので環境やアカウントによるかもしれません。

Screenshot_2026-07-05-13-37-53-05_40deb401b9ffe8e1df2f1cc5ba480b12.jpg

おわりに

これらの手順は利用規約に抵触するリスクがあります。Discordがすぐに禁止するとも考えにくいですが、行う場合は自己責任で行ってください

Links

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?