Discordボットがオフラインになる原因は、予測可能ないくつかのものに限られます。トークンのリセット、特権インテントの無効化、ホスティングされたボットの投票期間の期限切れ、または依存先のサーバーからボットが削除されたことです。Discordのゲートウェイは、クローズコードによってどの原因かを知らせてくれます。4004と4013/4014が最もよく見られる2つで、それぞれに「とりあえず再起動して祈る」のではなく、具体的で機械的な解決方法があります。
まずはここから:最も可能性の高い原因
実際に起きる頻度の高い順に並べると、次のとおりです。
- トークンがリセットされた。誰かがDeveloper Portalで、意図的にまたは誤って「Reset Token」を押し、ボットが使っていた古いトークンが無効になりました。
- 特権インテントがオフになった。ボットのセットアップ後に、Server Members IntentまたはMessage Content Intentがオフにされました。
- 投票またはサブスクリプションの期間が切れた。Noxyrのカスタムボットのようなホスティングされたボットでは、稼働時間がTop.ggへの投票に紐づいています。投票期間と猶予期間の両方が切れました。
- ボットがサーバーから削除された、または依存先のボットが削除された。カスタムボットは特にNoxyr自身の存在に依存しています。Noxyrをキックすると、そのサーバーでのカスタムボットも停止します。
- 本当の障害。Discord自体が不調になっている場合です。まれですが、セットアップに問題があると決めつける前にdiscordstatus.comを確認してください。
ゲートウェイのクローズコードの実際の意味
| コード | 意味 | 典型的な原因 |
|---|---|---|
| 4004 | 認証に失敗 | トークンが間違っているか、Developer Portalでリセットされた |
| 4013 | 無効なインテント | ボットのコードが存在しないインテント、またはDiscordが拒否する組み合わせを要求した |
| 4014 | 許可されていないインテント | ボットがアプリケーションで有効になっていない特権インテント(Server MembersまたはMessage Content)を要求した |
実際には、ほとんどのボットで4013と4014は同じ根本原因で現れます。コードが必要とする特権インテントが、ポータルでオフになっているのです。Discord.jsなどのライブラリは、生の数値コードではなく、ログに「disallowed intents」というエラーとして報告することもありますが、問題は同じです。各インテントが何を制御し、なければ何が壊れるかについては、特権ゲートウェイインテントのガイドで詳しく説明しています。
Noxyrのカスタムボットでの各原因の解決方法
ゲートウェイ4004、または「Discord rejected this token」
ボットが最後にログインしたトークンは、もう存在しません。これは、Developer Portalでトークンがリセットされたときに起きます。セキュリティのためにローテーションした意図的なものであっても、Botタブを眺めている最中に誤って「Reset Token」を押したものであってもです。
- Discord Developer Portalを開き、アプリケーションを選んでBotタブに移動します。
- もう一度Reset Tokenを押すと、新しいトークンが生成されます。Discordは一度しか表示しないため、すぐにコピーしてください。
- Noxyrのダッシュボードのカスタムボットページを開き、新しいトークンを貼り付けます。
- ボットを再度オンにします。Noxyrのノードは、トークンが無効なボットを自動的にオフにし、無効な再接続ループに陥らないようにしています。有効なトークンを貼り付けてオンにすることで、ボットが再起動します。
ゲートウェイ4013/4014、または「Discord refused the connection」
セットアップ時にオンになっていた特権インテントが、後からオフにされた状態です。通常、無関係な理由でBotタブをクリックしていた最中に起きます。
- Developer Portalで、Bot → Privileged Gateway Intentsに移動します。
- Server Members IntentとMessage Content Intentを、もう一度オンにします。どちらも必須です。Noxyrの機能セット(ウェルカムメッセージ、メンバー数、AIチャット、自動応答、チケットのトランスクリプト)には、両方が必要です。
- 保存してから、ダッシュボードのカスタムボットページでボットを再度オンにします。Discordはインテントの変更を次のログイン時にだけ適用するため、トグルを再びオンにするだけでは不十分です。ボットが再接続する必要があります。
投票期間と猶予期間が切れた
カスタムボットはTop.ggへの投票で稼働します。投票1回で12時間使えるようになり、その後は74時間の猶予期間があり、ダッシュボードのページがロックされている間もボットは稼働を続けます。両方が切れると、ボットはオフラインになります。ただし、セットアップの内容が削除されることはありません。
- Top.ggでNoxyrに投票します。
- カスタムボットページに戻ります。投票が登録されると、すぐにロックが解除されます。
- ボットは、以前と同じトークンと設定を使って、自動的に再起動します。
この問題を防ぐため、最後の投票から24時間後(猶予期間の12時間目)に、リマインダーのDMが送られます。ボットのステータスに「suspended」と表示されている場合、ページ自体に、投票、猶予期間、または下記の次の問題のどれが原因かが示されます。
Noxyrがサーバーから削除された
カスタムボットは、そのサーバーのNoxyrの設定とデータベースで動作するため、Noxyrがメンバーであり続けることに依存しています。Noxyrがキックされると、カスタムボットは約1分以内にそのサーバーへのサービスを止め、Noxyrを削除した人(別の人がボットのオーナーであれば、そのオーナーにも)に招待リンク付きのDMを送ります。
- DMのリンク、またはNoxyrのホームページのリンクから、Noxyrを再招待します。
- Noxyrがサーバーに戻ると、カスタムボットは自動的に再開します。トークンやインテントに触る必要はありません。
この特定の理由で停止している間は、投票期間が消費されるのではなく一時停止されるため、Noxyrを速やかに再招待すれば、時間を無駄にすることはありません。
上記のどれでも直らない場合
まずカスタムボットページのステータスメッセージを確認してください。Noxyrのノードは、素のエラーコードではなく、平易な言葉で理由を書きます(無効なトークン、無効なインテント、停止中、またはそれ以外の場合は再試行中という一般的なメッセージ)。ステータスメッセージが上記のどのケースにも当てはまらない場合、または正しいはずの修正後もボットがオフラインのままの場合は、サポートセンターが、その特定のサーバーを確認してもらう最も速い方法です。セットアップとトラブルシューティングの完全な手順は、カスタムボットのドキュメントにもあります。
よくある質問
何もしていないのに、ボットが突然オフラインになったのはなぜですか?「何もしていない」とは、通常、ポータルやサーバーにアクセスできる別の人が何かを変更したことを意味します。トークンのリセット、インテントの切り替え、キックなどです。まずカスタムボットページのステータスメッセージを確認してください。原因が書かれています。
ボットがオフラインになると、データは失われますか?いいえ。ボットが停止した理由に関係なく、トークン、設定、チケット、商品、請求書、トランスクリプトはすべて保持されます。原因を解決すれば、すべてが元どおりに戻ります。
投票に関連するオフラインの状況を完全に避けることはできますか?できます。約3.5日ごとに投票してください(12時間の期間と74時間の猶予期間が切れる前に)。そうすれば、その理由でボットが停止することはありません。
ボットを再起動するたびに、インテントを再度オンにする必要がありますか?いいえ。インテントはDiscordアプリケーション自体の設定であり、勝手にリセットされるものではありません。両方がオンになって保存されれば、誰かがオフにするまでオンのままです。
オンラインに戻す準備はできましたか? 上記の原因を解決してから、カスタムボットのページからボットを開始してください。初めてセットアップする場合は、Noxyrを無料で追加してください。