2019-07-03TwitterFacebookはてブPocketLINEフィードスポンサーリンクこの記事は、シリーズ「discord.pyでBotを作ろう」の一部です。今回はPythonを動かすための環境づくりからはじまり、コードを書いてBotを動かすところまで行ってみます。Userの作成、トークンの取得がまだの方は、シリーズのひとつ前の記事からお読み下さい。OS)Linux、またはコマンドラインでの環境構築手順はこちらへ進んでください。Pythonの統合開発環境として、PyCharmをインストールします。PyCharmでなくてもPythonとテキストエディタがあれば開発をはじめられます。わからない場合、以下の手順に従ってインストールをしてください。Pythonの開発環境がもうあるよ!という方はコーディングに進んでください。インストールPyCharmの公式ダウンロードページからインストーラーをインストールします。「Next」インストールされる場所を確認して「Next」あとから変更できる設定が大半なので、チェックしてもしなくても問題ありません。Launcher」にチェックを入れてもいいかもしれません。ここは特に変更する必要はないかと思います。「Install」を押すとインストールがはじまります。インストール中インストール完了です。now」を選択し、再起動してください。プロジェクト作成インストールしたPyCharmを起動します。プライバシーポリシーが表示されますので、問題なければ「Continue」をクリックします。Project」をクリックプロジェクトの名前と場所を入力します。プロジェクト名は好きなものでOK。今回は「discordbot」にしてみました。Interpreter」をクリックすると、詳細が表示されます。Interpreterが「Python36」となっていることを確認してください。パッケージ追加プロジェクトが作成できたら、「File」→「Settings」で設定画面を開きます。Interpreter」とたどり、「+」ボタンをクリックします。Package」ボタンを押します。インストールはバックグラウンドで行われるので、画面は閉じてしまって構いません。File」を選択します。「bot.py」と入力し、「OK」をクリックします。これで開発をはじめる準備が整いました。コーディングに進みましょう。(Linux・コマンドライン)Python3.6以上をインストールしてあるものとします。開発用フォルダ作成Botのソースコードなどを置くためのフォルダを作成します。discord_bot_samplevenv環境作成venv環境を作成します。うまくいかない場合など、詳細はこちらの記事を参照してください。モジュールインストールpipでdiscord.pyのモジュールをインストールします。2019年4月9日、v1.0.0が正式リリースされました。GitHubからでなく、下記コマンドで簡単にインストールできるようになっています。discord.pypythonファイル作成エディタはなんでもいいですが、文字コードはUTF8にするようにしましょう。ファイル名はbot.pyにします。bot.pyでなくても構いませんが、discord.pyという名前は付けないようにしましょう。ライブラリの名前と衝突するためです。bot.pyコーディングでは、コードを書いていきましょう。トークンの取得がまだの場合、こちらから取得してください。取得したトークンを「TOKEN_HERE」の部分に記入bot.run('TOKEN_HERE')コード解説ひとつひとつのコードについて説明します。プログラミング経験者向けの記述も含まれますので、「とりあえず動かしてみたい!」という方は、ここは読み飛ばして次に進んでください。utf-8UTF8でエンコードしていますよ、ということをPythonインタプリタに伝えます。commandsBotを作るために必要な機能を、discord.pyから取り出しています。必要なのはcommandsモジュールだけなので、discordというモジュールの、extというサブモジュールから、commandsモジュールをインポートしています。commands.Bot(prefix='$')'$'というプレフィックスのBotを作成し、変数botに格納しています。プレフィックスというのは、Botにわたすコマンドの目印のことです。今回のように'$'をプレフィックスに設定すると、Botは$helloや$こんにちはなど、'$'で始まるメッセージを「自分へのコマンドだ!」と認識します。ctx.send(f"どうも、{ctx.message.author.name}さん!")「$こんにちは」というメッセージが投稿されたときに、「どうも、(メッセージの送信者)さん!」と送信するという動作の「コマンド」をbotに追加しています。具体的には、botの持つcommandというデコレータをhelloに適用しています。このデコレータの対象はコルーチンである必要があるため、関数宣言の冒頭にasyncと付けています。送信者の名前を表示する方法ctx.message.author.nameBotは、コマンドの起動時、ctxという引数を受け取ります。ctx.messageはコマンドが起動したトリガになったメッセージが格納されています。このメッセージの送り主をauthorで取得し、その名前をnameで取得しています。ctx.send(f"じゃあね、{ctx.message.author.name}さん!")上記「hello」と同様、botにコマンドを追加している部分です。「$さようなら」というメッセージを受け取ると、別れの挨拶をします。botの動作を開始します。トークンのかわりに、'TOKEN_HERE'という文字列を記述しています。動作確認あなたのサーバーにいるBotと実際に会話してみましょう。サーバーにBotがいない場合、こちらを参考に招待してください。PyCharmメニューより、「Run」→「Run」を実行します。Linuxvimを閉じて、下記コマンドを実行します。bot.pyサーバでBotと会話してみるこんな感じで会話ができたら成功です。うまくうごいたら、コマンドを追加してみたり、返答の内容を変更してみたりしてみてください。この記事は、シリーズ「discord.pyでBotを作ろう」の一部です。discordがうまく行くかを試してみるといいかもしれません。これもうまく動かないようでしたら、discord.pyモジュールのインストールがうまくいっていないということになります。12:49返信discord.pyの最新バージョンではdiscord.ext.commands.Botクラスの宣言の際にprefixで投げるとエラーを吐きますよ。command_prefixで投げる仕様に変更されたようです。12:32返信ご指摘ありがとうございます、助かりました。コメントをキャンセルメールアドレスが公開されることはありません。