0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Discord Botを作ろう!Pythonでボイスチャットを管理する方法

Posted at

🔍 目次

  1. はじめに
  2. 前提条件
  3. 必要なライブラリのインストール
  4. Botトークンを安全に管理する
  5. Discord Botのコード
  6. Botの実行方法
  7. トラブルシューティング
  8. おわりに

はじめに

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の実行方法

  1. Discord Developer Portal でBotを作成し、トークンを取得
  2. .envファイルにトークンを保存
  3. ターミナルでpython bot.pyを実行

トラブルシューティング

  • Botがサーバーに参加していない場合 → サーバーに追加する
  • Botに権限がない場合 → 管理者権限を付与する
  • Botがミュートできない場合Manage Members権限を確認する

おわりに

この記事ではPythonを使ってDiscord Botを作成し、ボイスチャットのミュート/ミュート解除を管理する方法を紹介しました。

Botの機能を拡張すれば、音楽再生や自動メッセージ送信などさまざまな用途に応用できます。
ぜひ自分なりの Botを作ってみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?