Discordボットトークンは、ボットのアカウントのパスワードです。トークンを持っている人は、そのボットをDiscordにログインさせ、すでに参加しているすべてのサーバーで、権限が許す範囲の何でもさせられます。ボットアプリケーションを作成すると、Discord Developer Portalから無料で取得できます。ボットのユーザーIDや招待リンクのような公開された識別子ではなく、パスワードとして扱ってください。実際にそのとおりのものだからです。
Discordボットトークンの取得方法
- Developer Portalを開く。discord.com/developers/applicationsにアクセスし、ボットを所有すべきDiscordアカウントでサインインします。
- アプリケーションを作成する。New Applicationを押し、名前を付けます。この名前は、まだボットの表示名ではなく、アプリケーションの名前です。
- Botタブを開く。Discordは、アプリケーションにボットユーザーを自動的に追加します。ここでユーザー名とアイコンを設定します。これがサーバーのメンバーに表示される内容です。
- 必要なインテントをオンにする。Privileged Gateway Intentsの下にある、Server Members IntentとMessage Content Intentは、初期状態ではオフです。新しいメンバーを歓迎する、メッセージの本文を読む、またはロールを追跡するほとんどのボットでは、両方をオンにする必要があります。
- Reset Tokenを押す。Discordはトークンを生成し、一度だけ表示します。すぐにコピーしてください。同じトークンを後から表示する方法はありません。Reset Tokenをもう一度押すと、最初のトークンは無効になり、新しいトークンが発行されます。
- 必要な場所に貼り付ける。自分のボットのコードに環境変数として、またはホスティングプロバイダーのダッシュボードの入力欄に貼り付けます。チャットのメッセージ、公開リポジトリ、サポートチケットには、決して貼り付けないでください。
ボットトークンが実際に与えるもの
トークンは、コードがDiscordのゲートウェイとREST APIに対して、ボットユーザーとして認証するための手段です。有効なトークンがあれば、コードは次のことができます。
- ボットをログインさせ、オンラインに保つ
- ボットが見られるどのチャンネルでも、メッセージを送受信する
- すでに参加している各サーバーで、ボットのロールの権限が許すあらゆる操作を行う:ロールの管理、キック、BAN、チャンネルの削除など
- ボット自身のDMを読み取り、インタラクション(スラッシュコマンド、ボタン、モーダル)に応答する
与えないものもあります。新しいサーバーにボットを追加する能力です。ボットを招待するには、アプリケーションのクライアントIDと選択した権限のセットから作られる、別のOAuth2の認可リンクが必要です。これはサーバーの管理者が承認しなければなりません。漏えいしたトークンで、新しい場所にボットを招待することはできません。しかし、すでに参加しているすべてのサーバーでは、そのボットが持つ権限の範囲で、実害を引き起こすために使えてしまいます。
ボットトークンを絶対にチャットに貼り付けてはならない理由
ボットトークンは、組み込みの有効期限がない平文の認証情報です。トークンをリセットするまで、それを持つ人は誰でも、ボットのアイデンティティのコピーを動かせます。Discordのサポートサーバー、GitHubのissue、または一瞬でも画面に映ってしまう画面共有の中でも同じです。たとえばGitHubのコミットに公開で貼り付けると、Discordはそれを漏えいした認証情報として扱います。そして、ボットが乗っ取られて、参加しているすべてのサーバーにスパムを送られる、よくある原因になります。後から、漏えいしたトークンを誰が使ったのか、どんなことをしたのかを知る方法はありません。唯一の対処法は、リセットすることです。
ホスティングプロバイダーにトークンを渡す場合も、同じ注意が必要です。プロバイダー自身のダッシュボードの入力欄に、HTTPS経由で貼り付けてください。どれほど信頼できる人であっても、その人へのメッセージに貼り付けてはいけません。バグ報告に貼り付けることも、もちろん避けてください。
トークンのリセットで即座にアクセスが無効になる
Developer Portalでリセットを押すと、古いトークンは直ちに無効になります。それを使い続けているすべてのプロセス(自分のコード、ホスティングプロバイダー、許可なく取得した誰か)は、次の再接続の試行で切断され、古い値では再ログインできなくなります。これには、知っておくべき2つの重要な仕組みがあります。
- それは緊急停止スイッチです。トークンが漏えいしたかもしれないと疑ったら、ほかの何よりも先にリセットしてください。古いトークンを持つ人にとってはボットがオフラインになり、新しいトークンが入力された場所でだけ、オンラインに戻ります。
- プロバイダーを変更する方法でもあります。ホスティングサービスにトークンを渡していて、そこから離れたい場合は、Developer Portalでトークンをリセットしてください。そのサービスのアクセスは即座に終わり、何かを削除するよう頼む必要はありません。
リセットされたトークンによって切断されたボットは、通常、ログに「ゲートウェイのクローズコード4004(無効なトークン)」を残します。これは、使おうとした認証情報がもう存在しないことを、Discordが伝える方法です。
Noxyrがトークンを保存する方法
Noxyrがボットトークンを求めるのは、カスタムボットの機能のためだけです。この機能では、自分のボットの名前とアイコンの下で、Noxyrの機能セットをすべて動かします。トークンは暗号化されて保存され、ボットをDiscordのゲートウェイにログインさせるためだけに使われます。貼り付けた後は、あなたにも、ほかの誰にも表示されることはありません。アクセスを停止したい場合は、上で説明したのと同じ方法で、Developer Portalのトークンをリセットしてください。そうすれば、Noxyrのボットは、古いトークンを使うほかのクライアントと同じように、直ちに切断されます。セットアップの完全な手順、必要なインテント、無料のTop.ggへの投票によるアクセスの仕組みは、カスタムボットのドキュメントとカスタムボットのセットアップガイドにあります。
よくある質問
Discordボットトークンはどこで確認できますか?Developer Portalで、アプリケーション、Botタブ、Reset Tokenの順に進みます。生成時に一度だけ表示されます。既存のトークンを再表示するページはありません。
ボットトークンを共有しても安全ですか?いいえ。非公開であっても共有すると、その人がボットの参加しているすべてのサーバーを完全に制御できてしまいます。自分のコード、またはホスティングプロバイダーのダッシュボードの入力欄にだけ入力してください。
ボットトークンをリセットするとどうなりますか?古いトークンは、使われていたすべての場所で直ちに機能しなくなります。コードやプロバイダーのダッシュボードに貼り付ける新しいトークンが発行されます。ボットのアイデンティティ、サーバー、既存のデータには影響ありません。
漏えいしたトークンで、自分のボットをほかのサーバーに追加されることはありますか?ありません。それには別のOAuth2の招待リンクと、対象サーバーの管理者の承認が必要です。ただし、漏えいしたトークンは、ボットがすでに参加しているすべてのサーバーにおいて、依然として危険です。
トークンをリセットすると、何か削除されますか?いいえ。古い認証情報を無効にするだけです。設定、ロール、ボットのアプリケーションとユーザーIDに紐づく保存データは、そのまま残ります。
自分のボットを設定しますか? Noxyrを無料で追加するか、自分でコードを書いている場合はホスティングのガイドをご覧ください。