「Discord Botって難しそう…プログラミング経験ないと無理?」
「自分のサーバー専用のBotが欲しい!」
「MEE6みたいな多機能Botを作ってみたい」
そんな願望、ありませんか?
実は、Discord Bot作成は思っているより簡単なんです!
基本的なBotなら、コピペとちょっとの編集で30分もあれば動かせます。
この記事では、プログラミング初心者でもDiscord Botを作れるように、画像付きで丁寧に解説します。
Python版とJavaScript版、両方の作り方を完全網羅!
Discord Botとは?できることを理解しよう

Botは「自動化された助手」
Discord Botを簡単に例えると:
人間の代わりに24時間働くアシスタント
できること:
- メッセージに自動返信
- コマンドで様々な機能を実行
- 新メンバーを歓迎
- 音楽を再生
- ゲームを管理
- モデレーション(荒らし対策)
人気Botでできること
MEE6(多機能Bot):
- レベルシステム
- 自動モデレーション
- カスタムコマンド
Rythm(音楽Bot):
- YouTube音楽再生
- プレイリスト管理
自作Botなら:
- 完全カスタマイズ可能
- 独自機能を実装
- 無料で使い放題
必要な準備:開発環境を整えよう
最低限必要なもの
必須:
✅ PC(Windows/Mac/Linux)
✅ Discordアカウント
✅ テキストエディタ(VSCode推奨)
✅ インターネット環境
プログラミング言語(どちらか):
✅ Python 3.8以上
✅ Node.js 16.9以上
開発環境のセットアップ
VSCodeのインストール:
- code.visualstudio.com からダウンロード
- インストール実行
- 日本語化拡張機能を追加
Pythonのインストール:
# Windowsの場合
1. python.org から最新版ダウンロード
2. 「Add Python to PATH」にチェック
3. インストール実行
# 確認コマンド
python --version
Node.jsのインストール:
# 公式サイトからLTS版をダウンロード
nodejs.org
# 確認コマンド
node --version
npm --version
Step 1:Discord開発者ポータルでBotを作成
アプリケーションの作成
手順:
- 開発者ポータルにアクセス
URL: https://discord.com/developers/applications
- 「New Application」をクリック
アプリ名:好きな名前(後で変更可) 例:MyFirstBot、TestBot
- 利用規約に同意して「Create」
Bot設定
Botユーザーの作成:
- 左メニュー「Bot」を選択
- 「Add Bot」をクリック
「Yes, do it!」で確認
- 重要な設定:
設定項目: USERNAME:Botの名前 ICON:Botのアバター画像 TOKEN:「Reset Token」→「Copy」 ⚠️ このトークンは絶対に公開しない!
権限設定(Privileged Gateway Intents)
必要な権限をON:
☑ PRESENCE INTENT(オンライン状態)
☑ SERVER MEMBERS INTENT(メンバー情報)
☑ MESSAGE CONTENT INTENT(メッセージ内容)
すべてONにして「Save Changes」
Step 2:Botをサーバーに招待
招待URLの生成
- 左メニュー「OAuth2」→「URL Generator」
- SCOPES(スコープ)を選択:
☑ bot ☑ applications.commands(スラッシュコマンド用)
- BOT PERMISSIONS(権限)を選択:
基本的な権限: ☑ Send Messages(メッセージ送信) ☑ Read Messages/View Channels(メッセージ読取) ☑ Embed Links(埋め込みリンク) ☑ Attach Files(ファイル添付) ☑ Read Message History(履歴読取) ☑ Add Reactions(リアクション追加) 管理系(必要に応じて): ☑ Manage Messages(メッセージ管理) ☑ Manage Roles(ロール管理) ☑ Kick Members(キック) ☑ Ban Members(BAN)
- 生成されたURLをコピー
サーバーへの追加
- URLをブラウザに貼り付け
- 追加先サーバーを選択
- 「認証」をクリック
- Bot がサーバーに参加!
Step 3:コーディング – Python版
必要なライブラリをインストール
# Discord.pyのインストール
pip install discord.py
# その他便利なライブラリ
pip install python-dotenv # 環境変数管理
pip install aiohttp # HTTP通信用
基本的なBotコード
bot.py:
import discord
from discord.ext import commands
import os
from dotenv import load_dotenv
# 環境変数読み込み
load_dotenv()
# Botの設定
intents = discord.Intents.default()
intents.message_content = True
intents.members = True
bot = commands.Bot(
command_prefix='!', # コマンドの接頭辞
intents=intents
)
# Bot起動時のイベント
@bot.event
async def on_ready():
print(f'{bot.user} として起動しました!')
# ステータス設定
await bot.change_presence(
activity=discord.Game("!help でヘルプ")
)
# メッセージ受信時のイベント
@bot.event
async def on_message(message):
# Bot自身のメッセージは無視
if message.author == bot.user:
return
# 「こんにちは」に反応
if 'こんにちは' in message.content:
await message.channel.send('こんにちは!👋')
# コマンド処理を継続
await bot.process_commands(message)
# pingコマンド
@bot.command(name='ping')
async def ping(ctx):
"""Botの応答速度を確認"""
latency = round(bot.latency * 1000)
await ctx.send(f'Pong! 🏓 応答速度: {latency}ms')
# ユーザー情報コマンド
@bot.command(name='userinfo')
async def userinfo(ctx, member: discord.Member = None):
"""ユーザー情報を表示"""
member = member or ctx.author
embed = discord.Embed(
title=f"{member.name}の情報",
color=member.color
)
embed.set_thumbnail(url=member.avatar.url)
embed.add_field(name="ID", value=member.id)
embed.add_field(name="ニックネーム", value=member.nick or "なし")
embed.add_field(name="アカウント作成日", value=member.created_at.strftime("%Y/%m/%d"))
embed.add_field(name="サーバー参加日", value=member.joined_at.strftime("%Y/%m/%d"))
await ctx.send(embed=embed)
# サイコロコマンド
@bot.command(name='dice')
async def dice(ctx, sides: int = 6):
"""サイコロを振る(デフォルト6面)"""
import random
result = random.randint(1, sides)
await ctx.send(f'🎲 {sides}面サイコロの結果: **{result}**')
# Bot実行
TOKEN = os.getenv('DISCORD_TOKEN') # .envファイルから取得
bot.run(TOKEN)
環境変数ファイル(.env)
DISCORD_TOKEN=ここにBotトークンを貼り付け
Step 3:コーディング – JavaScript版

プロジェクトの初期化
# プロジェクトフォルダ作成
mkdir my-discord-bot
cd my-discord-bot
# package.json作成
npm init -y
# 必要なパッケージインストール
npm install discord.js
npm install dotenv
基本的なBotコード
index.js:
const { Client, GatewayIntentBits, EmbedBuilder } = require('discord.js');
require('dotenv').config();
// Botクライアント作成
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.GuildMembers
]
});
// Bot起動時
client.once('ready', () => {
console.log(`${client.user.tag} として起動しました!`);
client.user.setActivity('!help でヘルプ', { type: 'PLAYING' });
});
// メッセージ受信時
client.on('messageCreate', async (message) => {
// Bot自身のメッセージは無視
if (message.author.bot) return;
// こんにちはに反応
if (message.content.includes('こんにちは')) {
message.reply('こんにちは!👋');
}
// コマンド処理
if (!message.content.startsWith('!')) return;
const args = message.content.slice(1).trim().split(/ +/);
const command = args.shift().toLowerCase();
// pingコマンド
if (command === 'ping') {
const latency = Date.now() - message.createdTimestamp;
message.reply(`Pong! 🏓 応答速度: ${latency}ms`);
}
// ユーザー情報コマンド
if (command === 'userinfo') {
const member = message.mentions.members.first() || message.member;
const embed = new EmbedBuilder()
.setTitle(`${member.user.username}の情報`)
.setThumbnail(member.user.displayAvatarURL())
.setColor(member.displayHexColor)
.addFields(
{ name: 'ID', value: member.id, inline: true },
{ name: 'ニックネーム', value: member.nickname || 'なし', inline: true },
{ name: 'アカウント作成日', value: member.user.createdAt.toLocaleDateString('ja-JP'), inline: true },
{ name: 'サーバー参加日', value: member.joinedAt.toLocaleDateString('ja-JP'), inline: true }
);
message.reply({ embeds: [embed] });
}
// サイコロコマンド
if (command === 'dice') {
const sides = parseInt(args[0]) || 6;
const result = Math.floor(Math.random() * sides) + 1;
message.reply(`🎲 ${sides}面サイコロの結果: **${result}**`);
}
});
// Bot起動
client.login(process.env.DISCORD_TOKEN);
package.json の設定
{
"name": "my-discord-bot",
"version": "1.0.0",
"description": "My Discord Bot",
"main": "index.js",
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js"
},
"dependencies": {
"discord.js": "^14.0.0",
"dotenv": "^16.0.0"
},
"devDependencies": {
"nodemon": "^2.0.0"
}
}
Step 4:Botを起動する
Python版の起動
# ターミナル/コマンドプロンプトで
python bot.py
# 成功すると表示される
MyBot#1234 として起動しました!
JavaScript版の起動
# ターミナル/コマンドプロンプトで
npm start
# または
node index.js
# 成功すると表示される
MyBot#1234 として起動しました!
便利な機能を追加しよう
自動ロール付与
Python版:
@bot.event
async def on_member_join(member):
"""新規メンバー参加時に自動でロール付与"""
role = discord.utils.get(member.guild.roles, name="メンバー")
if role:
await member.add_roles(role)
# ウェルカムメッセージ
channel = discord.utils.get(member.guild.channels, name="一般")
if channel:
await channel.send(f"{member.mention} さん、ようこそ!🎉")
リアクションロール
JavaScript版:
// 特定のメッセージにリアクションでロール付与
client.on('messageReactionAdd', async (reaction, user) => {
if (user.bot) return;
if (reaction.emoji.name === '✅') {
const member = reaction.message.guild.members.cache.get(user.id);
const role = reaction.message.guild.roles.cache.find(r => r.name === '認証済み');
if (role) {
await member.roles.add(role);
}
}
});
音楽再生(基本)
# 追加ライブラリが必要
# pip install youtube_dl
# pip install PyNaCl
@bot.command(name='play')
async def play(ctx, url):
"""YouTubeの音楽を再生"""
voice_channel = ctx.author.voice.channel
if voice_channel:
voice_client = await voice_channel.connect()
# 音楽再生のロジック
Botを24時間稼働させる方法
無料ホスティングサービス
Replit(初心者向け):
メリット:
- 完全無料
- ブラウザで開発可能
- 簡単設定
デメリット:
- 5分で停止(Keep Aliveが必要)
- リソース制限あり
Railway(中級者向け):
メリット:
- $5分のクレジット付き
- GitHub連携
- 自動デプロイ
設定:
1. GitHubにコードをプッシュ
2. Railwayでプロジェクト作成
3. 環境変数設定
4. デプロイ
有料VPS(本格運用)
おすすめVPS:
- Vultr($6/月〜)
- DigitalOcean($6/月〜)
- ConoHa(630円/月〜)
メリット:
- 24時間安定稼働
- 複数Bot運用可能
- 完全なコントロール
Heroku代替
# Dockerファイル作成
FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "bot.py"]
トラブルシューティング
よくあるエラーと解決法
エラー1:Token Invalid
原因:トークンが間違っている
解決:
1. トークンを再生成
2. .envファイルを確認
3. スペースや改行がないか確認
エラー2:Missing Permissions
原因:Botに権限がない
解決:
1. OAuth2で権限を追加
2. サーバーでロールを確認
3. Botを再招待
エラー3:Rate Limited
原因:API制限に到達
解決:
1. リクエスト頻度を下げる
2. キャッシュを活用
3. 適切なクールダウン実装
セキュリティのベストプラクティス
トークンの管理
# ❌ 絶対ダメ
bot.run("MTE2MjY4...")
# ✅ 環境変数を使う
import os
from dotenv import load_dotenv
load_dotenv()
bot.run(os.getenv('DISCORD_TOKEN'))
.gitignoreの設定
# 環境変数
.env
# Python
__pycache__/
*.py[cod]
venv/
# Node.js
node_modules/
npm-debug.log
まとめ:今すぐBotを作ってみよう!
Discord Bot作成は、思ったより簡単です。
重要なポイント:
- 基本的なBotなら30分で作れる
- Python/JavaScriptどちらでもOK
- 無料でホスティング可能
- セキュリティに注意(トークン管理)
- 少しずつ機能を追加していく
次のステップ:
- まずは簡単なBotから始める
- コマンドを追加していく
- データベース連携を学ぶ
- スラッシュコマンド実装
- 音楽再生やゲーム機能
プログラミング初心者でも、コピペから始めて徐々に理解を深めていけば、必ず自分だけのBotが作れます。
さあ、今すぐあなたのアイデアをBotにしてみましょう!
コメント