🔍 目次
はじめに
Discordはゲーマーやコミュニティ向けのチャットツールとして人気ですが、自分専用のBotを作ることで、サーバー管理がより便利になります。
この記事ではPythonを使って「ボイスチャットのミュート・ミュート解除」を行うDiscord Botの作成方法を解説します。
前提条件
- Python 3.x がインストールされていること
- Discordアカウントとサーバーを持っていること
- Pythonの基本文法 (関数・変数・モジュールのインポートなど) を理解していること
必要なライブラリのインストール
まずは、discord.py
と.env
ファイルを利用するためのpython-dotenv
をインストールします。
pip install discord.py python-dotenv
Botトークンを安全に管理する
Botのトークンをコードに直接書くと、誤って公開してしまう危険があります。
そこで.env
ファイルを使ってトークンを管理する方法を紹介します。
.env
ファイルを作成
プロジェクトフォルダ内に .env
というファイルを作成し、以下のように記述します。
DISCORD_BOT_TOKEN={取得したBotのトークン}
Pythonコード内で読み込む
dotenv
を使って .env
の値を取得します。
import os
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv("DISCORD_BOT_TOKEN")
Discord Botのコード
以下のコードをbot.py
として保存し実行すると、VCのミュート管理が可能なBotが動作します。
import discord
from discord.ext import commands
import os
from dotenv import load_dotenv
# .env ファイルからトークンを読み込む
load_dotenv()
TOKEN = os.getenv("DISCORD_BOT_TOKEN")
intents = discord.Intents.default()
intents.voice_states = True
intents.guilds = True
intents.message_content= True
bot= commands.Bot(command_prefix='!', intents=intents)
@bot.command()
async def mute(ctx, member: discord.Member):
""" 指定したメンバーをミュート """
if member.voice and member.voice.channel:
await member.edit(mute=True)
await ctx.send(f'{member.name} をミュートしました。')
else:
await ctx.send(f'{member.name} はVCにいません。')
@bot.command()
async def unmute(ctx, member: discord.Member):
""" 指定したメンバーのミュートを解除 """
if member.voice and member.voice.channel:
await member.edit(mute=False)
await ctx.send(f'{member.name} のミュートを解除しました。')
else:
await ctx.send(f'{member.name} はVCにいません。')
@bot.command()
async def mute_all(ctx):
""" VC内の全メンバーをミュート """
if ctx.author.voice and ctx.author.voice.channel:
members = ctx.author.voice.channel.members
for member in members:
await member.edit(mute=True)
await ctx.send("VC内の全メンバーをミュートしました。")
else:
await ctx.send("あなたはVCにいません。")
@bot.command()
async def unmute_all(ctx):
""" VC内の全メンバーのミュートを解除 """
if ctx.author.voice and ctx.author.voice.channel:
members = ctx.author.voice.channel.members
for member in members:
await member.edit(mute=False)
await ctx.send("VC内の全メンバーのミュートを解除しました。")
else:
await ctx.send("あなたはVCにいません。")
# Botを起動
bot.run(TOKEN)
Botの実行方法
- Discord Developer Portal でBotを作成し、トークンを取得
-
.env
ファイルにトークンを保存 - ターミナルで
python bot.py
を実行
トラブルシューティング
- Botがサーバーに参加していない場合 → サーバーに追加する
- Botに権限がない場合 → 管理者権限を付与する
-
Botがミュートできない場合 →
Manage Members
権限を確認する
おわりに
この記事ではPythonを使ってDiscord Botを作成し、ボイスチャットのミュート/ミュート解除を管理する方法を紹介しました。
Botの機能を拡張すれば、音楽再生や自動メッセージ送信などさまざまな用途に応用できます。
ぜひ自分なりの Botを作ってみてください。