discordにオリジナルbotを作る!②
前回に引き続き、discordにオリジナルのbotを作るというテーマで書いてみようかなと思います。
目次
初めに
今回は前回に引き続き、discord botを作っていきたいと思います。
今回の内容は、いよいよbotにメッセージを送る機能をつけていきたいと思います。
では早速やってみましょう。
※Pythonでプログラムを行います。
必要なもの
・前回作成したbotとそのToken
・Pythonを使える環境
必須ではないですが、Visual Studio Codeなどのソースコードエディタを使うと開発しやすいです
プログラムする前の準備
プログラムを書く前にPythonを使える環境を作る必要があります。
ここではPythonがパソコンに入っている前提で話を進めていきたいと思います。
実行環境
・Python version 3.6
※Pythonのバージョンは3.6で実行しています。もしエラーが発生した場合はPythonのバージョンを変えるとうまくいくかもしれません。
プログラムを書く前に、Pythonの仮想環境を作りたいと思います。
仮想環境を作っておくとモジュールの管理がしやすくなり、Pythonのバージョン変更にも対応しやすいです。
まず、最初にコマンドプロンプトを開きます。
最初にPythonのバージョンでも見てみましょうか。
python -V
すると”Python 3.10.8″などと表示されると思います(3.10.8はバージョンなので環境によって変わります)。
表示されない主な理由としては、Pythonがインストールされていない、パスが通っていないなどがあると思います。
仮想環境を作成するために、下記のコードを仮想環境を作りたいディレクトリ上で実行します。
コマンドプロンプト上でディレクトリ移動するには「cd」コマンドを使います。
※”仮想環境名”は好きな名前を入れてください。日本語を使うとエラーを吐くことがあるので日本語は使わないで書くようにしましょう(“env+数字”とかを使うことが多いです env1など)。
#python3系の場合
python3 -m venv "仮想環境名"
#python2系の場合
python -m venv "仮想環境名"
仮想環境を作ったディレクトリを見てみると”仮想環境名”というフォルダができていると思います。
仮想環境に入る時はコマンドプロンプトでこのコードを使います。この時仮想環境を作ったディレクトリに移動してください。
"仮想環境名"\Scripts\activate
が、最初はセキュリティーがどうたらこうたらとかいうエラーが出るかもしれません。
その時は、windows power shellを管理者として開き、このコードを使ってください
Set-ExecutionPolicy RemoteSigned -Scope Process -force
仮想環境に入ることができたら、左側に(“仮想環境名”)という表示がでます。
次に、簡単なプログラムを組んでみましょう。
先ほど作った仮想環境のフォルダと同じディレクトリに、テキストファイルを作り、ファイル名を”hello.py”とします。この時警告が出ますが、”はい”を選択して大丈夫です。
ファイルの中には以下のコードを書きましょう。
※ファイルを開くときは右クリックを押す→プログラムから開く→メモ帳 で開きます。
print("hello world")
今度は先ほど仮想環境に入ったコマンドプロンプト上で以下のコードを実行します。
python hello.py
hello worldと表示できましたか?できていたら導入成功です。
これで、Pythonを使う準備は完了です。
コードを書く
早速コードを書きたいところなのですが、今の状態ではbotを動かすことができません。
botを動かすためにはdiscord.pyというPythonのモジュールが必要なのですが、Pythonに初めからインストールされているわけではないため、インストールする必要があります。
まず、最初に先ほど作成した仮想環境に入ってください。
次に、インストールするときに使うpipをアップグレードします。その後、discord.pyをインストールします。
#pipをアップグレード
python -m pip install --upgrade pip
#discord.pyをインストール
pip install discord
これで準備は完了です。コードを書いていきましょう。
先ほどと同じ要領で botcode.pyというファイルを作ってください。
ファイルの中にはとりあえず以下のコードを書いてみてください。
#discordモジュールをインポートする
import discord
"""
discord botの権限のようなものです。ここではすべてオンにしてます。
細かく設定したい場合はdiscord intentsで検索してみてください。
"""
client = discord.Client(intents=discord.Intents.all())
#discord botはイベントを使って記述します。
@client.event
async def on_message(message):
#botが送ったメッセージに反応しないように
if message.author.bot:
return
#こんにちは、こんにちは!の部分は好きな言葉に変えることができます。
if message.content == "こんにちは":
await message.channel.send("こんにちは!")
#"Token"には取得したbotのトークンを入れます。
client.run("Token")
このコードを実行してみましょう。やり方はさっきと同じです。
python botcode.py
今の時刻と[INFO ]…が表示されましたか?
※表示されない場合、何らかのエラーが出ていると考えられます。下のほうにdiscorderror…という表示があると思うのでそのメッセージをgoogleで調べるなどの対処をしてみてください。
あとは、実際にdiscordでメッセージを送ってみましょう。
discordのメッセージに こんにちは と打つとbotが こんにちは! と返してくれると思います。
botを停止するときはコマンドプロンプト上でctrl+cを入力します。
※反応がない場合、少し長押しすると停止します。
まとめ
以上で、botにメッセージを送る機能をつける手順は終了です。
botがちゃんとメッセージを送ってくれるとうれしいですね。
また、応用次第で、いろいろなメッセージを送ることができると思います。
例えば、randomモジュールをインポートして、リスト化した言葉をランダムに送るなどが思いつきます。写真や動画などのファイルも送れるのでいろいろなことができますね。
皆さんも自分好みのbotを作ってみてください!
続く…?