自分のサーバーに、あいさつを返したり、便利な機能を呼び出せたりする bot を置きたい。Discord bot は、個人開発の最初の題材としても人気があります。
この記事では、Discord bot を作る手順を、Discord 側の準備から、プログラムを書いて動かし、24時間動かし続ける方法まで紹介します。
Discord bot とは:サーバーで動く自動のユーザー
Discord bot は、Discord のサーバーに参加して、プログラムで自動的に動くアカウントです。 人が送ったメッセージやコマンドに反応して、返事をしたり、情報を表示したりできます。
bot でできることの例は次のとおりです。
/pingのようなスラッシュコマンドに返事をする- サーバーに人が参加したら、あいさつのメッセージを送る
- ボタンや選択肢のついたメッセージを送り、選ばれた内容に応じて動く
- 外部のサービスから情報を取ってきて、チャンネルに投稿する
Discord の公式ドキュメントでは、bot を含むこうした仕組みを「Discord アプリ」と呼んでいます。
bot を作る前に必要なもの
必要なのは、Discord のアカウント、テスト用のサーバー、プログラムを動かす環境です。
- Discord のアカウント
- テスト用のサーバー:自分が管理者のサーバーを1つ作っておくと、気兼ねなく試せる
- Node.js:この記事では、JavaScript で bot を作れるライブラリ「discord.js」を使う
- テキストエディター:VS Code など
Python で作りたい場合は、discord.py などのライブラリもあります。流れは同じなので、好きな言語で進めてください。
Discord bot の作り方:5つの手順
流れは「アプリを作る → トークンを取る → サーバーに招待する → プログラムを書く → 動かす」です。 Discord の公式ドキュメントにも、最初の bot を作るチュートリアルがあります。

1. Developer Portal でアプリを作る
Discord Developer Portal を開き、「New Application」(Create App)からアプリを作ります。 名前を入れて作成すると、アプリの設定画面が開きます。ここで、bot のアイコンや説明も設定できます。
2. bot のトークンを取得する
設定画面の「Bot」のページで、「Reset Token」を押してトークンを発行します。 トークンは、プログラムがその bot として Discord につなぐための、パスワードのようなものです。
公式ドキュメントでは、トークンはアプリの権限を持つため非常に機密性が高く、ほかの人と共有したり、Git などのバージョン管理に含めたりしてはいけないと注意されています。一度しか表示されないので、安全な場所に控えておきましょう。万一漏れてしまったら、すぐに「Reset Token」で作り直します。
3. 自分のサーバーに招待する
「Installation」のページで、サーバーに招待するためのリンクを作ります。 サーバーに入れる場合は、スコープ(bot に与える役割)として次の2つを選びます。
| スコープ | 意味 |
|---|---|
bot |
bot のユーザーをサーバーに参加させる。あわせて、メッセージの送信など bot に与える権限を選ぶ |
applications.commands |
スラッシュコマンドを作って使えるようにする |
作られたリンクをブラウザで開き、テスト用のサーバーを選んで追加すれば、bot がサーバーのメンバーに加わります。権限は、bot に必要なものだけを選ぶようにしましょう。
4. プログラムを書く
作業用のフォルダで、discord.js をインストールします。
npm init -y
npm install discord.js
次に、/ping と入力されたら「Pong!」と返す bot のプログラム(index.js)を書きます。
const { Client, Events, GatewayIntentBits } = require("discord.js");
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once(Events.ClientReady, (c) => {
console.log(`ログインしました: ${c.user.tag}`);
});
client.on(Events.InteractionCreate, async (interaction) => {
if (!interaction.isChatInputCommand()) return;
if (interaction.commandName === "ping") {
await interaction.reply("Pong!");
}
});
client.login(process.env.DISCORD_TOKEN);
トークンはコードに直接書かず、DISCORD_TOKEN という環境変数から読み込むようにしています。「.env」ファイルに書いて読み込む場合は、そのファイルを .gitignore に入れて、GitHub などに上げないようにしてください。秘密の情報の扱い方は GitHub の使い方でも紹介しています。
5. スラッシュコマンドを登録して動かす
スラッシュコマンドは、使う前に Discord に登録しておく必要があります。 登録は、コマンドの名前と説明を Discord の API に送る小さなプログラムで行います。discord.js の公式ガイドに、登録用のプログラムの書き方が載っているので、それに沿って /ping を登録します。
登録できたら、bot を起動します。
node index.js
「ログインしました」と表示されたら、Discord のテスト用サーバーで /ping と入力してみてください。bot が「Pong!」と返せば成功です。

機能を増やしていく
最初の bot が動いたら、少しずつ機能を足していきましょう。 次のような順で広げていくと、無理なく覚えられます。
- コマンドに選択肢をつける:
/dice 6のように、コマンドに値を渡せるようにする - ボタンやメニューを使う:返事のメッセージにボタンをつけ、押されたら別の処理をする
- イベントに反応する:メンバーの参加など、サーバーで起きたことに反応する
- 外部の情報を使う:天気や予定など、ほかのサービスの API から取ってきた情報を表示する
メッセージの本文を読み取る機能など、一部の機能は、Developer Portal で特別な許可(Privileged Gateway Intents)をオンにする必要があります。使う機能に合わせて、必要なものだけを有効にしましょう。
AI に「こういう機能を足したい」と相談しながら作るのも効率的です。進め方は AI でアプリを作る方法を参考にしてください。
bot を24時間動かし続けるには
node index.js で動かしている bot は、パソコンを閉じると止まってしまいます。 いつでも使える bot にするには、常に動いているサーバーに置く必要があります。
| 置き場所 | 特徴 |
|---|---|
| VPS(仮想サーバー) | 自由度が高く、ずっと動かしておける。サーバーの設定は自分で行う |
| アプリを動かせるクラウドサービス(PaaS) | コードを置くだけで動かせるものが多い。無料枠の条件はサービスごとに違う |
| 家で使っていないパソコン | 費用はかからないが、電源やネットワークの管理が必要 |
無料で動かせるサービスもありますが、一定時間でスリープする、月の利用時間に上限があるなど、条件はさまざまです。選ぶ前に、ずっと動かし続ける使い方ができるかを確かめましょう。サーバーの選び方の考え方は、Web アプリの作り方も参考になります。
bot を作るときに気をつけたいこと
- トークンを公開しない:コードや画面のスクリーンショットにトークンが写っていないか、公開前に確かめる
- 必要な権限だけを与える:管理者の権限など、強い権限は本当に必要なときだけにする
- Discord の規約を守る:Developer Portal で示される開発者向けの規約とポリシーを確認しておく
- ほかのサーバーにも公開するなら:集めるデータと使い道を説明する。利用者が増えたら、プライバシーポリシーも用意する
まとめ
Discord bot は、次の手順で作れます。
- Developer Portal でアプリを作る
- bot のトークンを発行し、安全に保管する
botとapplications.commandsのスコープで、テスト用サーバーに招待する- discord.js などのライブラリでプログラムを書く
- スラッシュコマンドを登録して、bot を起動する
まずは /ping に返事をするだけの bot を動かしてみてください。そこから、自分のサーバーで「あったら便利」と思う機能を1つずつ足していくのが、続けるコツです。
作った bot を公開したら、Devoch に掲載して、使ってくれる人に届けることができます。