今回のテーマは、DiscordのBotを作成する方法です。
少し長くなってしまうので、機能ごとに数回に分けて紹介します。 最近ではチャットツールのDiscordが主流になってきており、Botを導入しているサーバーを見かける事が多くなりました。しかし、無料で招待できるBotは制限があることが多く、満足のいくBotというのはなかなかありません。
Discordでは簡単に自分のサーバーを作成することができるため、自分のサーバー専用のBotを作成できると大変便利です。
自分好みのDiscordBotを作成してDiscordライフを豊かにしましょう!
Botの設定をして、コードを描いて返信をさせてみよう!
DiscordのサイトからBotアプリケーションの生成を行う。
「Developers portal」からBotのアプリケーション設定を行います。
アカウントは、専用アカウントでも普段利用するアカウントでも構いません。
ログインすると以下のような画面が表示されますので、右上の「New Application」をクリックします。
Botのアプリケーション名を決めて下さい。
名称に「Discord」を含めるとあとでエラーになりますので、Discordだけは避けて下さい。
Google翻訳
あなたはゲーム開発者ですか?すでにデータベースに登録されている可能性があります。詳細については、当社の開発者サポートに連絡し、あなたのゲームを請求してください
次に、左の「SETTINGS」からBotを選択して下さい。
すると、以下のような画面が表示されますのでAddBotをクリックして下さい。
次に「Yes,do it!」をクリックして下さい。
Google翻訳
ボットユーザーを追加することで、あなたのアプリがDiscordで目に見える命を得ることができます。しかし、このアクションは取り消すことができません! 賢明な選択です。
これでBotが生成されました。
Botの設定をしよう!
次に、生成されたBotの設定を行います。
SETTINGSから「Oath2」の「URL Generator」を選択します。
SCOPESの「bot」にチェックを入れます。
選択すると「BOT PERMISSIONS」が表示されますので、「Administrator」にチェックを入れます。
そして一番下の「GENERATED URL」の横にあるCOPYを押します。
これをブラウザで開くと、BOTををサーバーに招待する画面になりますので、
招待したいサーバーへ招待しましょう。
これで、基本的なBotの設定は完了です。
次からはコーディングに入ります。
pycordを使ってBotのコーディングをしよう!
今回は、DiscordのBot用ライブラリである「pycord」を利用します。
Discord用のPythonライブラリにはいくつか種類があるのですが、今回紹介している「pycord」が、2022年2月現在では一番主流になっています。
ライブラリをインストールする
pipでpycordをインストールします。
py -3 -m pip install -U py-cord[voice]
コーディングして実行してみよう!
導入として、「$hello」と入力すると、返事をするBotをコーディングします。
import discord
token = '自分のbotのトークン'
client = discord.Client()
#■ログインの確認
@client.event
async def on_ready():
print(f'We have logged in as {client.user}')
#■非同期処理
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('$hello'):
await message.channel.send('Hello!')
#■自分のbotのトークンを設定する
#Botが起動します。
client.run(token)
最初に出てくる、
token = '自分のbotのトークン'
にDiscordで発行したらトークンを設定する必要があります。
このトークンは人に教えないで下さい!Botが乗っ取られます。
トークンの取得は以下の手順で取得します。
まずは先程、Botの設定を行ったサイトに戻ります。
Developers portal
1. 左のメニューのSETTINGSからBotを選択します。
2. Copyを押すとBotのトークンを取得できます。
3. コピーしたトークンを、上記のソースの’自分のbotのトークン’に貼り付けます。
トークンを貼り付けたら試しにプログラムを実行してみましょう!
上記のようなメッセージが表示されたら成功です!
Botが起動状態になります。
実行した状態で、Discordを確認してみましょう。
参加させたBotがログイン状態になっているはずです。
チャットに「$hello」と入力してみて下さい。
Hello!と返ってきました!
これで導入は完了です。では、コードの中身を見ていきましょう!
コードの説明
イベントハンドラを見てみよう!
#■ログインの確認
@client.event
async def on_ready():
print(f'We have logged in as {client.user}')
イベントハンドラは、discord上で発生するイベントごとに処理を分ける関数になります。
on_ready()は、クライアントがDiscordから受信したデータの準備を完了した際に呼び出されます。
Discordのイベントハンドラは色々用意されていますが、今回は導入編なのでまた次の機会に消化いします。
#■非同期処理
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('$hello'):
await message.channel.send('Hello!')
「on_message(message)」メソッドは、メッセージが作成され、送信されたときに呼び出されます。今回の例では「$hello」を受け取った後に、それが投稿されたチャンネルに対してBotが「Hello!」を返すプログラムになります。
無限ループ回避のために、Botの発言の場合は無視するようになっています。
client.run(token)
設定したトークンを起動させます。
まとめ
今回は、DiscordのBotを作成するための導入編を紹介しました!
- DiscordのBotの設定を行いました。
- pipからpycordをインストールを行いました。
- Botのトークンを取得し、コードに組み込みました。
- コード実行を実行し、Botの起動を確認しました。
- コードの説明を行いました。
この章では、設定からコードの実行までを紹介しました。
DiscordのBotの命令は基本的に簡単に利用できるものが多いので、次の章も身構えずに気軽に挑んでみて下さい!
今回の記事が、皆さんの技術力向上に繋がれば嬉しいです。
以上、おつかれさまでした!