初めてのDiscordボットの作成は、思っているよりも簡単です。コンピューターサイエンスの学位や長年のプログラミング経験は必要ありません。2026年現在、機能的なボットの構築とデプロイは、集中すれば週末で完了します。
このガイドでは、ボットの登録、最初のコマンドの記述、ローカルでのテスト、ライブへのデプロイなど、プロセス全体を順を追って説明します。最後までには、ボットがサーバー上で実行されているはずです。
Discordボットとは何かを理解する
Discordボットは、APIを介してDiscordに接続し、イベントに応答するプログラムです。誰かがコマンドを入力したとき、メッセージに反応したとき、サーバーに参加したときなどです。
重要な概念:
- アプリケーション vs. ボット: 「アプリケーション」はDiscord Developer Portalに登録されます。「ボット」は、そのアプリケーションに関連付けられたユーザーアカウントです。1つのアプリケーションには1つのボットがあります。
- トークン: ボットを認証する秘密鍵。決して共有しないでください。ボットのパスワードのようなものです。
- インテント: ボットが特定のイベント(メッセージ、リアクション、メンバーのステータスの変更など)を確認できるようにする権限。必要なものだけを有効にします。
- コマンド: ボットはコマンドに応答します。最新のボットは、プレフィックスコマンド(
!command)の代わりにスラッシュコマンド(/command)を使用します。スラッシュコマンドは公式にサポートされており、推奨されています。 - イベント: ボットはDiscordイベント(メッセージの送信、リアクションの追加、メンバーの参加)をリッスンし、それらに反応します。
ステップ1:Discord Developer Portalでボットを登録する
これは、ボットがDiscordのシステムに正式に存在するところです。
プロセス:
- Discord Developer Portalにアクセスします。
- Discordアカウントでログインします。
- 「New Application」をクリックします。
- 名前を付けます(例:「My First Bot」)。
- 「Create」をクリックします。
- これでアプリケーション設定に入りました。
次に、ボットユーザーを作成します:
- 「Bot」セクション(左側のサイドバー)に移動します。
- 「Add Bot」をクリックします。
- ボットのユーザー名の下に、「TOKEN」ボタンが表示されます。
- トークンをコピーします — これはボットの認証方法です。これを秘密にしておいてください。 公に共有したり、暗号化せずにGitHubにコミットしたりしないでください。
ボットの設定を構成します:
- 「Message Content Intent」を有効にします(ボットがメッセージテキストを読み取れるようにします)。
- 「Server Members Intent」を有効にします(ボットがサーバーに誰がいるかを確認できるようにします)。
- 下にスクロールして「OAuth2」セクションに移動します。
ステップ2:ボットの招待リンクを生成する
ボットをサーバーに追加するには、特別な招待リンクが必要です。
Developer Portalで:
- 「OAuth2」→「URL Generator」に移動します。
- 「SCOPES」で、
botをチェックします。 - 「PERMISSIONS」で、ボットができることを選択します。
Send Messages(すべてのボットに不可欠)Manage Messages(モデレートする場合)Add Reactions(ボットが何かに反応する場合)Connect+Speak(音楽/音声ボットの場合)- 学習のために、
Send Messages+Read Messages(最小限の実行可能なもの)を選択してください。
- 下部に生成されたURLをコピーします。
- このURLをサーバーの所有者と共有します(または、自分のテストサーバーに追加するために自分で使用します)。
絶対に必要でない限り、管理者権限を使用しないでください。 過剰な権限はセキュリティリスクです。
ステップ3:言語とフレームワークを選択する
初心者向けの2つの主なオプション:
JavaScript (discord.js)
Discord.jsは、最も人気のあるDiscordボットフレームワークです。巨大なコミュニティ、多数のチュートリアル、優れたドキュメントがあります。
長所:
- 最大のコミュニティとオンラインで最も多くのチュートリアル
- discord.jsのドキュメントは優れています
- Node.jsは広く使用されており、習得が容易です
- ほとんどのホスティングプラットフォームへの簡単なデプロイ
短所:
- JavaScriptには癖があります(async/awaitの学習曲線)
- Node.jsはPythonと比較してメモリオーバーヘッドを追加します
はじめに:
- Node.js (v18+) をインストールします。
- プロジェクトフォルダを作成します。
npm init -ynpm install discord.js
Python (discord.py)
構文がよりシンプルで、初心者向けで、基礎を学ぶのに最適です。
長所:
- 最も習得しやすい構文
- 初心者にとって直感的
- discord.pyのドキュメントは良好です
- Pythonはあらゆる場所で使用されています(データサイエンス、Web、自動化)
短所:
- discord.jsよりもコミュニティが小さい(それでも大きい)
- JavaScriptよりもチュートリアルが少ない
- わずかに高いメモリ使用量
はじめに:
- Python 3.10+ をインストールします。
- プロジェクトフォルダを作成します。
pip install discord.py
初心者への推奨事項: Pythonを知っている場合は、discord.pyを使用します。JavaScriptを知っている場合は、discord.jsを使用します。どちらも知らない場合は、Pythonの方が習得しやすいですが、JavaScriptの方がオンラインリソースが多くあります。1つを選んで専念してください。
ステップ4:最初のボットを作成する(Pythonの例)
コマンドに応答するPythonでの最小限の動作するDiscordボットを次に示します。
import discord
from discord.ext import commands
# コマンドプレフィックスとインテントを使用してボットを作成する
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix='!', intents=intents)
@bot.event
async def on_ready():
print(f'{bot.user} が Discord に接続しました!')
@bot.command(name='hello', help='挨拶をします')
async def hello(ctx):
await ctx.send(f'こんにちは {ctx.author.name}!')
@bot.command(name='ping', help='pong で応答します')
async def ping(ctx):
await ctx.send('Pong!')
bot.run('YOUR_TOKEN_HERE')
これは何をするか:
- Discordに接続します
!helloおよび!pingコマンドをリッスンします- トリガーされたときにメッセージで応答します
実行するには:
'YOUR_TOKEN_HERE'をステップ1からの実際のトークンに置き換えますbot.pyとして保存します- 実行:
python bot.py - Discordで、任意のチャンネルに
!helloと入力します - ボットが応答します: "こんにちは [あなたの名前]!"
ステップ5:ローカルでテストする
デプロイする前に、ボットをローカル(コンピューター上)でテストします。
テストサーバーをセットアップします:
- テスト用のプライベートDiscordサーバーを作成します
- ステップ2の招待リンクを使用してボットを追加します
- ボットコードをローカルで実行します
- テストサーバーでコマンドを入力します
- ターミナルでエラーを探します。それらを修正します
一般的なエラー:
- "無効なトークン" — トークンを間違ってコピーしたか、期限切れです。Developer Portalで再生成します。
- "権限がありません" — ボットには、このチャンネルでそのアクションを実行する権限がありません。権限を追加するか、ボットがより多くの権限を持つチャンネルを使用します。
- "インテントが有効になっていません" — Developer Portalでインテントを有効にする必要があります(Message Content Intent、Server Members Intentなど)。
徹底的にテストします。本番環境でバグのあるボットは恥ずかしいです。
ステップ6:コマンドを追加する
基本を理解したので、より多くの機能で拡張します。
Pythonの例 — 簡単な経済コマンド:
@bot.command(name='balance', help='コイン残高を確認する')
async def balance(ctx):
# 実際のボットでは、これはデータベースにクエリを実行します
# 今のところ、モック値を返すだけです
await ctx.send(f'{ctx.author.name}、あなたは100コインを持っています!')
@bot.command(name='roll', help='サイコロを振る (1-6)')
async def roll(ctx):
import random
result = random.randint(1, 6)
await ctx.send(f'{ctx.author.name} が振った: **{result}**')
各コマンドは単純な関数です。必要な数だけ追加します。
ステップ7:ボットをデプロイする
ローカルでのホストはテストには適していますが、ラップトップを閉じるとボットは停止します。サーバーにデプロイして、24時間365日実行できるようにします。
無料のホスティングオプション
Replit (初心者向けに最も簡単):
- Replit.com にアクセスします
- 新しいRepl → Python (または Node.js) を作成します
- ボットコードを貼り付けます
- 「Run」をクリックします
- Replitは無料でホストします(制限付き:非アクティブ後スリープする可能性があります)
Railway.app (モダンで信頼性があります):
- Railway.app にアクセスします
- GitHubを接続します(またはファイルを直接アップロードします)
- 新しいプロジェクトを作成します → ボットを選択します
- Railwayは自動的にデプロイします
- 無料枠には月額5ドルのクレジットが含まれています
Glitch (Replitに似ています):
- Glitch.com にアクセスします
- 新しいプロジェクトを作成します
- コードを貼り付けます
- Glitchは(無料枠の制限内で)実行し続けます
重要: GitHubにプッシュするコードにトークンをハードコードしないでください。環境変数を使用します:
import os
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
bot.run(TOKEN)
ローカルに .env ファイルを作成します(コミットされないように .gitignore に追加します):
DISCORD_TOKEN=ここに実際のトークンを入力してください
Replit/Railwayで、トークンをコードではなくプラットフォーム設定でシークレット環境変数として設定します。
初心者がよく犯す間違い
間違い1:トークンのハードコーディング GitHubにプッシュするコードにトークンを絶対に入れないでください。リークされたトークンを持つボットはすぐに侵害されます。環境変数を使用します。
間違い2:エラー処理を行わない ボットは予期しない入力でクラッシュします。エラー処理を追加します:
@bot.command()
async def divide(ctx, a: int, b: int):
try:
result = a / b
await ctx.send(result)
except ZeroDivisionError:
await ctx.send('ゼロで割ることはできません!')
except ValueError:
await ctx.send('有効な数値を入力してください!')
間違い3:レート制限を尊重しない Discordはメッセージを送信できる速度を制限します。APIをスパムしないでください。一括アクションの間に遅延を追加します。
間違い4:インテントを無視する 多くの初心者ボットは、Developer Portalで必要なインテントを有効にしないために失敗します。デプロイする前に、ボットに必要なインテントを確認してください。
間違い5:野心的な範囲 最初のボットで経済システム、モデレーション、音楽、および50個のコマンドを構築しようとしないでください。3〜5個の簡単なコマンドから始めます。慣れてきたら拡張します。
次のステップ
基本的なボットができたので:
- 機能を拡張する: より多くのコマンドを追加し、データベースを使用してデータを永続化し、複雑なロジックを実装します
- スラッシュコマンドを使用する: プレフィックスコマンドの代わりに最新の
/command構文 - リアクションを追加する: ユーザーがボタンをクリックしたり、絵文字で反応したりできるようにします
- データベースを接続する: ユーザーデータ、コイン、設定を保存します(初心者向けのSQLite、スケール向けのPostgreSQL)
- コミュニティに参加する: Discordボット開発者コミュニティ(reddit.com/r/discordbots、Discord.jsサポートサーバー)には、すべての質問に対する回答があります
リソース
- discord.jsドキュメント: https://discord.js.org
- discord.pyドキュメント: https://discordpy.readthedocs.io
- Discord APIドキュメント: https://discord.com/developers/docs/intro
- YouTubeチュートリアル: "[discord.js/discord.py] チュートリアル" を検索 — 大量のコンテンツ
最初のDiscordボットは週末のプロジェクトです。最初の優れたDiscordボットは1か月の練習です。1,000台のサーバーで使用される最初のボットは、数か月の反復、機能開発、およびコミュニティ構築です。今すぐ開始し、常に反復し、考えすぎないでください。