Discordボットを作成する方法

Discordでは、人々が協力してアイデアを共有したり、プロジェクトについて議論したり、一般的に生活や趣味についてチャットしたりします。しかし、Discordボットは、タスクを自動化することに加えて、チャットルームをより楽しくすることができます。ランダムなジョークを言うことから、特定の音楽を再生することなど、何でもできます。

それにもかかわらず、Discordボットの作成方法を学ぶ際には、従うべきいくつかの重要な手順があります。この記事でそれらを探っていきます。

始めましょう。

1. Discordサーバーを作成する

Discordボットを作成する前に、サーバーを作成することから始めなければなりません。これがボットの割り当て場所だからです。

Discordサーバーまたはチャットルームは、プラットフォーム上のチャンネルとコミュニケーションを管理するスペースです。

Discordサーバーを作成するには、DiscordのWebサイトにアクセスして、Discordダッシュボードにログインします。または、まだアカウントを持っていない場合は、アカウントを作成します。

ダッシュボードに入ったら、次の手順に従ってDiscordサーバーを作成します。

  1. 左側のサイドバーにある追加(+)アイコンをクリックします。
  2. Create My Ownオプションを選択します。
  3. サーバーを作成する目的を選択します。
  4. プロファイル写真と名前でサーバーをカスタマイズします。次に、作成をクリックします。

これでDiscordサーバーが作成され、サーバー上で特定のアクティビティを制御するボットを作成する準備が整いました。

2. Discordボットをセットアップして作成する

次に、Discord Developer Portalに移動して、Discordアプリケーション内にDiscordボットを作成します。または、代わりにブラウザのアドレスフィールドに次のURLを入力することもできます。

https://discord.com/developers/applications

開発者コンソールに入ったら、次の手順を実行します。

  1. 左上にある新しいアプリケーションをクリックします。
  2. 指定されたフィールドにアプリケーションの名前を入力します。次に、作成をクリックします。
  3. 左側のサイドバーを見て、ボットを選択します。
  4. 極右にあるボットを追加をクリックします。
  5. 次のプロンプトから、はい、やりましょう!を選択します。
  1. コピーをクリックしてボットトークンをコピーします。プロジェクトのルート内にテキストファイルを作成し、そこに貼り付けます。ファイルの名前はsecret.txtにすることができます。コピーしたトークンを公開しないようにしてください。
  2. 下にスクロールして、PRESENCE INTENTの下にあるスイッチをオンにします。また、SERVER MEMBERS INTENTの下にあるスイッチもオンにします。
  3. 次に、左のバーにあるOAuth2をクリックして、Discordボットに認証優先順位を追加します。
  4. URLジェネレーターを選択して、前に作成したサーバーのボット招待URLを生成します。
  5. スコープの下のオプションから、ボットを選択します。
  6. ボット権限セクションまでスクロールして、Discordボットの役割を選択します。この場合、管理者の役割を与えます。
  7. 一番下までスクロールしてコピーをクリックして、生成されたURLをクリップボードにコピーします。

これで、サーバーをボットにリンクできます。

サーバーをDiscordボットにリンクする

述べたように、ボットは主にサーバー内で動作します。したがって、前述のようにDiscordボットを作成した後、ボットを動作させたいサーバーに割り当てる必要があります。

生成されたURLをコピーしたら、次の手順に従ってチャットルームをDiscordボットにリンクします。

  1. コピーしたURLをブラウザのアドレスフィールドに貼り付けてログインします。
  2. プロンプトから、サーバーを選択をクリックして、前に作成したサーバーを選択します。
  3. 続行をクリックして続行します。
  4. 前に設定した権限の一覧を含む新しいメニューが表示されます。承認を選択します。
  5. CAPTCHAを解いて、Discordボットの承認を完了します。

これでDiscordボットが作成されました。サーバーダッシュボードに戻ると、右側のサイドバーにロボットが表示されます。しかし、ご覧のとおり、現在はオフラインです。したがって、動作するようにプログラムするまではまだ機能しません。

ボットを動作させるには、自分に最適なプログラミング言語でスクリプトを作成する必要があります。

3. Pythonを使用してDiscordボットをプログラムする

このチュートリアルでは、Pythonを使用し、ローカルマシンにDiscordボットをホストします。すべて設定したら、Herokuなどのクラウドサービスでホストできます。始めましょう。

Pythonとライブラリを設定する

PythonでDiscordボットをプログラムするには、discord.pyモジュールを使用します。これはPython 3.5.3以降でのみ機能します。

まだ行っていない場合や以前のバージョンを使用している場合は、python.orgにアクセスして最新のPythonバージョンをダウンロードしてください。

ターミナルに次のコマンドを入力して、PCにインストールされているPythonのバージョンを確認できます。

python --version

Pythonが最新の場合、ターミナルをプロジェクトのルートに開きます。次に、Python仮想環境をアクティブにします。

また、discord.pydiscord.py[voice]と呼ばれる音声サポートパッケージをインストールする必要があります。

仮想環境がアクティブな状態で、ターミナルで次のコマンドを実行してこれらのパッケージをインストールします。

pip install -U discord.py discord.py[voice]

Discordボットでメッセージを送信する

ここでは、チャンネルにテキストを送信すると、カスタムメッセージで返信するようにDiscordボットをプログラムします。

しかし、最初に、スクリプトの先頭に次のコードを入力してDiscordボットを初期化します。

import discord
<strong># Import the commands module:</strong>
from discord.ext import commands
<strong># Initialize the bot instance and use a blank prefix:</strong>
bot = commands.Bot(command_prefix="")
<strong>#Read your bot token from the txt file in your project root:</strong>
Secret = open("secret.txt", 'r')
Secret = Secret.read()
<strong>#Run the bot in an event loop:</strong>
bot.run(Secret)

bot変数は、commandクラスからカスタムコマンドを呼び出します。括弧内のcommand_prefixを使用すると、その前に付く文字を指定できます。ドル記号 ($)、感嘆符 (!)、アンパサンド (&)、その他のような文字は、ボットコマンドの前に付く一般的なプレフィックスです。

しかし、私たちは自分の場合、プレフィックスを空白にしました。したがって、Discordボットに指示する際にプレフィックスは必要ありません。

@bot.command()デコレータを使用して、カスタムコマンドであるHiを作成し、Discordボットがそれを見たときに返信テキストを提供します。

カスタムコマンドはPython関数であることに注意してください。

import discord
<strong># Import the commands module:</strong>
from discord.ext import commands
<strong># Initialize the bot instance:</strong>
bot = commands.Bot(command_prefix="")
@bot.command()
async def Hi(ctx):
await ctx.send("Hi, welcome to our server")
Secret = open("secret.txt", 'r')
Secret = Secret.read()
bot.run(Secret)

次に、ターミナルでPythonスクリプトを実行します。次に、Discordに移動して「Hi」を送信し、魔法が展開されるのを見てください。

よく見ると、関数を提供するためにasyncawaitメソッドを使用していることがわかります。これは、モジュールがDiscordと通信する唯一の方法であるため、不可欠です。

ctxインスタンスはコンテキストであり、多くの機能を持っています。しかし、この場合、Discordボットがメッセージを送信することを許可します。

ボットで新しいチャンネルメンバーを歓迎する

この例では、誰かがサーバーに参加したときに挨拶をトリガーするためにイベントを使用する方法を説明します。また、新しいメンバーのユーザー名と、挨拶メッセージで参加したサーバーを表示する方法も学習します。

ここでは@bot.eventを使用します。その仕組みは次のとおりです。

@bot.event
async def on_member_join(member):
guild = member.guild
if guild.system_channel is not None:
detailMessage = 'We welcome {0.mention} to the {1.name}!'.format(member, guild)
await guild.system_channel.send(detailMessage)

on_member_join関数はイベントの一種です。他にもたくさんあります。たとえば、on_readyメソッドは、ボットが準備ができているかどうかを確認するために広く使用されているイベントです。

さらに、ifステートメントに続く条件は、接続されたサーバー(ギルドまたはチャットルーム)が存在するかどうかをチェックします。存在する場合、Python文字列フォーマットメソッドを使用して、新しいメンバーのユーザー名と参加したサーバーを出力します。

友人にサーバーに参加してもらい、何が起こるかを確認します。ただし、これが機能することを確認するために、最初にダミーのDiscordアカウントでこれを試してみることをお勧めします。

Discordボットにオーディオチャンネルへの参加または退出を依頼する

それではコードを拡張してみましょう。今回は、特定のコマンドを受信したときに、ボットにオーディオチャンネルに参加または退出するように指示します。

次のコード例では、Discordボットは「enter」と入力するとオーディオチャンネルに参加します。

@bot.command()
async def enter(ctx):
if ctx.author.voice:
await ctx.message.author.voice.channel.connect()

ifステートメント内の条件は、すでにオーディオチャンネルに参加しているかどうかをチェックします。その場合、awaitキーワードはDiscordボットをそれに接続します。

つまり、コマンドが機能するためには、オーディオチャンネルに参加している必要があります。

注意:更新のたびにPythonスクリプトを停止して再起動するようにしてください。これにより、Pythonは変更を同期できます。

Pythonスクリプトを再実行したら、Discordを開いてenterと入力します。すると、Discordボットがオーディオチャンネルに参加したことがわかります。

ボットにチャンネルを離れるように依頼するのは、追加するのと同じくらい簡単です。

次のコードは、適切なコマンドを入力するとチャンネルを離れるように指示しています。この場合、「leave」という単語を使用します。

@bot.command()
async def leave(ctx):
if ctx.voice_client:
await ctx.guild.voice_client.disconnect()

スクリプトを停止してもう一度実行します。Discordボットは、今すぐ「leave」コマンドを送信するとオーディオチャンネルを離れます。

Discordボットを改善し続ける

以上です!これで、機能的なDiscordボットができました。コードの例をまとめて、Discordボットに機能を追加し続けます。たとえば、オーディオチャンネルに参加するとすぐに、PCまたはストリーミングプラットフォームから音楽を再生するように指示できます。

Discordボットは使用するのが楽しいです。チャットルームでそれらを使用してタスクを自動化していない場合、あなたはいくつかの深刻な効率を逃しています。