はじめに
DiscordでBotを作成していると、こんなふうに思ったことはありませんか?
「Botを、あたかもスマホから操作しているように見せたい……!」
特に、Botがユーザー一覧に表示されるとき、通常はデスクトップクライアントからの接続としてアイコンが表示されます。でも、ちょっと工夫することでAndroid端末から接続しているような見た目に変更できるんです。
今回は、その方法と背景、そして注意点をじっくり解説していきます。
この記事で紹介すること
この記事では、以下の内容を取り扱います。
- Discord.jsでBotの表示を「モバイル端末」風にする方法
- 技術的な背景と仕組みの簡単な解説
- 実際に書き換えるソースコード
- 注意点とリスク
- 応用例と余談
対象読者:
- Discord.jsを使ってBotを開発している人
- Botの「見た目」を工夫したい人
- ネタ的にモバイルっぽいBotを演出してみたい人
動作確認環境
この手法は、以下のバージョンで動作確認を行いました。
| 名前 | バージョン |
|---|---|
| Node.js | v17.3.1 |
| Discord.js | v13.6.0 |
他のバージョンでも動作する可能性はありますが、バージョンによって仕様が微妙に異なるため、同じ結果が得られない場合があります。できれば上記バージョンに近い環境で試してみてください。
実装方法:コードの書き換え
まず、通常のBotクライアントの宣言は以下のようになっています。
const client = new Client({ intents: [Intents.FLAGS.GUILDS] });
これは非常に基本的な形で、Botがサーバー内のギルド情報にアクセスできるようにGUILDSインテントを付けています。
ここに、WebSocketプロパティを追加することで、Botが「どんなクライアントから接続しているか」を偽装できます。
以下のように書き換えてみましょう:
const client = new Client({
intents: [Intents.FLAGS.GUILDS],
ws: { properties: { $browser: 'Discord Android' } }
});
この変更により、Botがオンラインになったとき、**「モバイル(Android)から接続しているように見える」**ようになります。
Botのアイコンの隣にスマートフォン風のアイコンが表示されたり、他のユーザーから見ると「モバイルでアクティブ」に見えるようになります。
ちょっとしたことですが、見た目が変わると楽しいですよね。
技術的な背景
このテクニックは、DiscordのWebSocket通信時に送られる**identifyパケット**内のクライアント情報を操作することによって成立しています。
通常、$browserというフィールドには、ライブラリが自動的に設定した文字列(例: "discord.js")が送信されます。ところが、これを上書きすることで、Discordのクライアント側が「これはAndroidアプリからの接続だな」と誤認するわけです。
指定できる文字列の例:
Discord Android→ Android版アプリのように表示Discord iOS→ iPhoneからの接続のように表示Discord Web→ ブラウザ版からの接続として表示Discord Desktop→ 通常のデスクトップ版として表示(デフォルト)
このように、実際にはBotがどこから動いていようと表示上の偽装が可能になるのです。
注意事項(重要)
この方法には、いくつかグレーゾーンな側面があります。
❗ 利用規約的なリスク
Discord APIは「クライアントの偽装」を明確に禁止しているわけではありませんが、意図的に実態と異なる接続元を偽ることは、今後のアップデートや利用規約改定により問題視される可能性もあります。
❗ サポート対象外の使い方
この設定は、公式にはサポートされていない内部的な挙動を利用した手法です。将来的に$browserの上書きができなくなる可能性もあります。
❗ 公開Botには不向き
自分だけのテスト用Botなら問題ないかもしれませんが、公開Botや商用Botでの利用は避けたほうが無難です。誤解を生む可能性がありますし、透明性のある運用が望ましいでしょう。
ちょっとした応用例
このテクニックを使うことで、Botに以下のような演出を加えることができます。
- **「スマホからだけ操作してるフリ」**をして、Botをカジュアルに見せる
- プロフィールのステータスと合わせて、なりきりBotのような使い方をする
- イベント中のBotが、スマホだけで対応している演出に使う
エンタメ系や、友人サーバー向けのBotではちょっとしたアクセントになるかもしれません。
まとめ
Discord.jsでBotをAndroidアプリ風に表示させる方法は、簡単なコード変更で実現可能です。
const client = new Client({
intents: [Intents.FLAGS.GUILDS],
ws: { properties: { $browser: 'Discord Android' } }
});
ただし、これはあくまでも演出目的のテクニックです。 実際の機能や性能には影響を与えません。また、規約違反にならないよう自己責任で使うことをおすすめします。
おわりに
Bot開発にはたくさんの面白い要素がありますが、ちょっとした表示変更で遊べるのもDiscordの醍醐味。
ただし、あくまで節度を守って、「遊び」の範囲で楽しんでくださいね!
それでは、楽しいBot開発ライフを!