discord.pyでキックする方法


Discordサーバーでメンバーをキックするためのカスタムコマンドを作成する方法を紹介します。この記事では、Pythonとdiscord.pyライブラリを使用して、Discordボットにキックコマンドを追加する手順を詳しく説明します。

概要: Discordサーバーを運営する際、時には不適切な行動をするメンバーを取り締まる必要があります。このために、ボットを使用してメンバーをキックすることは非常に便利です。以下では、コードの各部分について詳しく説明します。

コードの構成:

from discord import app_commands 
from typing import Optional
intents = discord.Intents.default() 
client = discord.Client(intents=intents) 
tree = app_commands.CommandTree(client)

コマンドの定義

@tree.command デコレータを使用してキックコマンドを定義します。このコマンドには、キック対象のメンバーと理由を指定する引数があります。

@tree.command(name="kick", description="メンバーをキックします")

コマンドの引数

この行では、kick 関数が3つの引数を受け取ることを示しています。

  • interaction: この引数は discord.Interaction オブジェクトで、ユーザーとの対話情報を提供します。

  • メンバー: この引数は discord.Member オブジェクトで、キック対象のメンバーを表します。

  • 理由: この引数はキックの理由を指定するためのオプションの文字列です。デフォルト値は 'default_message' です。

async def kick(interaction: discord.Interaction, メンバー: discord.Member, 理由: Optional[str] = 'default_message'):

権限の確認

ユーザーがキックコマンドを実行するためには、manage_roleskick_members の権限が必要です。コードはこれらの権限を確認し、権限がある場合のみキックを実行します。

if interaction.user.guild_permissions.manage_roles and interaction.user.guild_permissions.kick_members:

メンバーのキック

権限が確認されると、指定されたメンバーがキックされます。理由はオプションで指定できます。

await メンバー.kick(reason=理由)

レスポンスの作成

キックが成功した場合、埋め込みメッセージが作成されて実行ユーザー、対象メンバー、および理由が表示されます。

embed = discord.Embed(title="KICK", color=discord.Color.from_rgb(0, 255, 0))
embed.add_field(name="実行ユーザー", value=f"{interaction.user.mention}", inline=False) 
embed.add_field(name="メンバー", value=f"{メンバー.mention}", inline=False)
embed.add_field(name="理由", value=f"{理由}", inline=False)
await interaction.response.edit_message(embed=embed)

権限が不足している時の処理

権限が不足している場合、エラーメッセージが表示され、ユーザーに通知されます。

else:
    embed = discord.Embed(title="権限エラー", color=0xff0000)
    embed.add_field(name="", value=f"{interaction.user.mention}", inline=False) 
    embed.add_field(name="", value="このコマンドを実行するために必要な権限がありません。", inline=False)

    await interaction.response.edit_message(embed=embed)

コードのテスト

記述したコードを使用してキックコマンドをテストしてみましょう
テキストボックスに/kickを入力するとこのような表示になります
メンバーでキックしたいユーザーを選択してください
理由を追加することもできます

権限がないユーザーが実行した場合はこのようなメッセージが送信されます

権限のあるユーザーが実行すると指定されたユーザーがキックされてこのようなメッセージが送信されます
理由を指定しなかった場合はこのように表示されます

理由を指定した場合は指定したメッセージを表示されます

結論: この記事では、Discordボットにカスタムキックコマンドを追加する方法を紹介しました。これにより、サーバーの管理が効率化され、不適切なメンバーを制御するのに役立ちます。 Discordボットを開発またはカスタマイズして、サーバーの運営をサポートしましょう。

使用したコード

@tree.command(name="kick", description="指定したメンバーをキックします")
async def kick(interaction: discord.Interaction, メンバー: discord.Member, 理由: Optional[str] = 'default_message'):
    if interaction.user.guild_permissions.manage_roles and interaction.user.guild_permissions.kick_members:
        await メンバー.kick(reason=理由)
        embed = discord.Embed(title="KICK", color=discord.Color.from_rgb(0, 255, 0))
        embed.add_field(name="実行ユーザー", value=f"{interaction.user.mention}", inline=False) 
        embed.add_field(name="メンバー", value=f"{メンバー.mention}", inline=False)
        embed.add_field(name="理由", value=f"{理由}", inline=False)
        await interaction.response.edit_message(embed=embed)
    else:
        embed = discord.Embed(title="権限エラー", color=0xff0000)
        embed.add_field(name="", value=f"{interaction.user.mention}", inline=False) 
        embed.add_field(name="", value="このコマンドを実行するために必要な権限がありません。", inline=False)


        await interaction.response.edit_message(embed=embed)

良かったらこの記事も見てください!


この記事が気に入ったらサポートをしてみませんか?