www.aatomu.work
Jump to Discord Server Jump to Twitter Jump to Github

Discord Rich Presence で遊ぶ

今年初の記事は discord Rich Presence(discord Activity)についてです。 どんなのかっていうと ゲーム中のユーザーのステータスにゲーム名が出るやつです この記事のソースコードはDiscordConnectorにあります

どんなのに使われているのか

discord 公式としてはゲームのステータス表示をメインとして利用していますが、 テキストエディタの拡張機能として プロフィールを書き換えている人もいる模様

で、どんなことをしたのか

json を直で書くことで自動でプロフィールが改造されるようにしました。
Activity Image

技術的解説

discord Rich Presenceは、
Embedded App SDK か Game SDK より コマンドが送信されることが想定されていますが、
Private Beta の機能として Discord Desktop App にたいして RPC接続をする方法があります。
RPCの項目をそのまま愚直に実装することで基本は動きますが注意すべきことがあります。

まず WSで接続する際には注意が必要で
ws://127.0.0.1:PORT/?v=VERSION&client_id=CLIENT_ID&encoding=ENCODING に対して HTTP-Header のOriginの検証を行います。
この際 Redirect URI に設定されているドメインでもエラーを吐くので Origin: nullにしになければなりません。
(Discord Supportにドメインを登録するようにお願いしたが断られた…)

また、 WSではなくIPCで接続することができ
俗に言うNamed Pipeに対して 書き込み,読み取りすることで操作がすることができます(Documentにはなぜか書かれていません)
Named Pipeの名前はdiscord-ipc-[0-9]が割り当てされるようになっているようです。

以上の点以外はすんなり実装できたので記事を終わります