【Discord】双葉杏BOTの運用 ～Bot導入からPythonのインストール、スケジューラの設定まで～

#双葉杏BOTとは？
モバイル向けアプリ「アイドルマスター シンデレラガールズ スターライトステージ」のゲーム内機能「デレぽ」にて、双葉杏の代わりに挨拶の文を毎朝7時に投稿するbotのことです。このbotの製作者は、プログラミングが趣味の我が担当アイドル、大石泉です。<b>すごく可愛い(語彙力)。</b>
#きっかけ
「これDiscordで再現すれば、毎朝必ず1度はレスが増えるし、ネタとしてもそこそこ優秀だし、
なによりこれを組んだことにより自分が大石泉になれるので一石三鳥では？？？
　一石二鳥ではないか」と思ったため作成しました
#DiscordサーバへのBotの導入
Discord上でBotを運用するには、DiscordへBotの導入をする必要があります。DiscordサーバへのBotの追加は他の記事でも多く取り上げられていますが、あまりこういうことに慣れていないPさんにも利用して頂きたく、他の記事にたらい回しをするのもどうかと思いオールインワンにしちゃってます。慣れている方はいつもの作業の説明になりますので、どんどん飛ばしちゃって構わないです。

<b>！注意！
Botの追加を行うには、該当するサーバ内でも上位の権限を有している必要があります。自身サーバ内での役職を確認し、管理者またはサーバ管理の権限を得ているかを確認して下さい。</b>得ていない場合、上位の権限を持っている方に追加を頼んでトークンを教えてもらうか、一時的に自身の権限を上げてもらうようにしましょう。
![スクリーンショット (132).png](https://qiita-image-store.s3.amazonaws.com/0/322441/66deea30-22f6-e661-da89-c7bfebaac7d0.png)
<br>
始めに、Discordのデベロッパーポータルを開きます。Discordのトップページ[(https://discordapp.com/)](https://discordapp.com/)にアクセスします。上部のタブの「デベロッパー向け」をクリックして、プルダウンメニューより「Developer Portal」を押下して下さい。
![スクリーンショット (123).png](https://qiita-image-store.s3.amazonaws.com/0/322441/dafab477-1573-c737-e3c4-4224260b7397.png)
<br>
次に、開いたページ上にある大きくて目立つ「Create an application」をクリックします。
![スクリーンショット (124).png](https://qiita-image-store.s3.amazonaws.com/0/322441/338b8dec-6f8f-da91-b5e2-2a3f87fdd4eb.png)
<br>
このようなページが開きますので、ここでアプリケーションの基本的な情報を入力できます。といっても、ここではアプリケーション名の変更くらいしかやることがありません。自分が管理しやすい名前にしておきましょう。ここでは「双葉杏BOT」にしています。
![スクリーンショット (133).png](https://qiita-image-store.s3.amazonaws.com/0/322441/3d47187e-4b79-b0de-2e91-53aa4002a359.png)
<br>
ページ左側にあるパズルのピースマークの「Bot」タブをクリックします。以下のような画面が出るので、「Add Bot」をクリックして下さい。
![スクリーンショット (125).png](https://qiita-image-store.s3.amazonaws.com/0/322441/f1b0259c-47c8-8e72-23d0-94a3814b63ef.png)
<br>
確認画面が出ますので、もちろん「Yes, do it!」をクリック
![スクリーンショット (126).png](https://qiita-image-store.s3.amazonaws.com/0/322441/629bc298-e8c2-a87a-ebe6-2af301df043f.png)
<br>
ここでBotの情報を入力できます。Botの名前には基本的にアプリケーション名と同じものが入りますが、アプリケーション名と別に定めることも可能です。また、ICONのところをクリックで、Botのアイコンを設定できます。
また「USERNAME」欄の下部に「TOKEN」という欄がありますね？これはプログラムとBotのアカウントを結びつける大事な文字列です。これが外部に流出すると、<b>他人が勝手にあなたのBotのアカウントを利用できてしまいます。</b>端的に言うのであれば、Botを乗っ取られます。絶対に他人には漏らさないようにしましょう。
ここで、「TOKEN」欄にある「Copy」ボタンをクリックしてトークンの文字列をコピーして、メモ帳かなにかに貼り付けておきましょう。後で使用します。
![スクリーンショット (127).png](https://qiita-image-store.s3.amazonaws.com/0/322441/e19850de-444e-981e-ec5f-4385f36f52c4.png)
<br>
左のタブからレンチマークの「OAuth2」をクリックします。以下のような画面が出るので、画像で赤丸にて目印を付けた「Bot」のチェックボックスをオンにしてください。
![スクリーンショット (128).png](https://qiita-image-store.s3.amazonaws.com/0/322441/2c03e652-bdcd-3e18-8c7c-25272aeaa046.png)
<br>
先程チェックしたボックスの下にメニューが増えたと思いますが、リンクが貼ってありますよね。そのリンク先を開いて下さい。Bot設定のページは閉じてしまっても構いません。
![スクリーンショット (129).png](https://qiita-image-store.s3.amazonaws.com/0/322441/1ffb57d4-9006-8c2b-9ab6-c097fc78e884.png)
<br>
以下のようなページに飛ぶと思います。ここで、Botを追加するサーバを選択します。
ここで、プルダウンメニューにBotを追加したいサーバが無い場合、最初に述べたようにBotの追加に必要な権限を有していないため、追加できません。上位の権限を持っている方に追加を頼んでトークンを教えてもらうか、一時的に自身の権限を上げてもらうようにしましょう。
選択したら、「認証」をクリックして下さい。迫真reCAPTCHA君による確認が入りますが、そのまま進めてしまって構いません。
![スクリーンショット (130).png](https://qiita-image-store.s3.amazonaws.com/0/322441/c2c5a929-3a3c-73f4-d92a-f646eca628f9.png)
<br>
先程選択したサーバのBotが参加した旨のメッセージがあれば導入は成功です。お疲れ様でした。
![スクリーンショット (131).png](https://qiita-image-store.s3.amazonaws.com/0/322441/fd8d26b9-747c-ad30-da87-1f769e69cfe7.png)

#Python3の導入
ここからは、Botを動作させるためのプログラムを実行する為に使用する、Pythonをインストールします。Pythonとはプログラミング言語の一種で、初心者でも比較的わかりやすいのが特徴です。ここでは、Windowsのみ方法の記載をしています。LinuxやMacOSはサポート対象外です。
<br>
Pythonのダウンロードページ([https://www.python.org/downloads/windows/](https://www.python.org/downloads/windows/))に行き、<b>「Python3.6.7」</b>をダウンロードします。<b>DiscordのBotはPython3.7だと動作しないので注意が必要です。</b>
お使いの環境に合ったものをダウンロードして下さい。なんのこっちゃという人は、「Download Windows x86-64 executable installer」を選択すれば多分ハズレはないはずです。
![スクリーンショット (136).png](https://qiita-image-store.s3.amazonaws.com/0/322441/c30b5735-edc1-b48f-13ac-72ded7ee7193.png)
<br>
インストーラを起動し、Pythonのインストールをします。<b>このとき、インストーラ下部にある「Add Python 3.6 to PATH」のチェックボックスをONにするのを忘れないようにして下さい。</b>これを確認したら、「Install Now」をクリックしてインストールを開始します。
![スクリーンショット (137).png](https://qiita-image-store.s3.amazonaws.com/0/322441/458058bc-4cd6-9d12-fb45-ccea23492f80.png)
<br>
ここから少し面倒くさい作業に入ります。Windowsのスタートメニューを開き、「cmd」と入力して、一番上に出てくる「コマンドプロンプト」を開いて下さい。
![スクリーンショット (138).png](https://qiita-image-store.s3.amazonaws.com/0/322441/76f95a1f-3ece-0474-c175-82e8036426e9.png)
<br>
真っ黒い画面が出ますので
`py -m pip install discord.py`
と入力してEneterを押して下さい。DiscordとPythonを結びつけるためのライブラリがインストールされます。
![スクリーンショット (139).png](https://qiita-image-store.s3.amazonaws.com/0/322441/b72cce76-65e6-7e3c-7f54-f5010812bb1f.png)
インストールが完了し、次のコマンドが入力出来るようになったらウィンドウは閉じてしまって構いません。
<br>
#ソースコードの修正
今回は私の方でソースコードを用意して配布していますので、これをダウンロードして使用します。[こちら](https://drive.google.com/file/d/1lDF8N-QjW2qiN1ROMUG9pOSe8LY-4KK2/view?usp=sharing)からダウンロードして下さい。保存先はどこでも構いませんが、できるだけ分かりやすい所が良いでしょう。
Discordで双葉杏BOTを動作させるためには、ダウンロードしたソースコードの一部を修正する必要があります。特段難しいことはありません。

まず、メモ帳等のテキストデータの編集が出来るファイルで、ダウンロードした「anzubot.py」を開いて下さい。普通にダブルクリックすると、Pythonが実行されてしまうので、右クリック→「プログラムから開く」で開くようにして下さい。
<br>

```python

# coding=utf8
import discord,time,sys
token = "とーくん"
channelid = あいでぃー
client = discord.Client()
@client.event
async def on_ready():
   await client.send_message(discord.Object(id=channelid),'みなさん ! おはようございまーっす♪\r\n今日も一日、元気いっぱいがんばろー !')
   time.sleep(3)
   sys.exit()
client.run(token)
```
双葉杏BOTのソースコードは以上のようになっていると思います。
この9行目に、「とーくん」と書かれたところが見えますね？まず、この「とーくん」を、(もう存在を忘れてるかもしれませんが)先程コピーしたトークンで置き換えて下さい。このとき「""」は消さないように注意して下さい。これを行うことで、Botプログラムの実行時に、先ほど作成したBotのアプリケーションとプログラムの関連付けが完了します。このように、トークンを入力するだけでBotを動かすことが出来るので、上にも記述しましたが、<b>トークンは絶対に漏らさないように。</b>特にソースコードの公開時には注意が必要です。
次に、挨拶の文を送信するチャンネルを指定します。4行目に、「あいでぃー」と書かれたところがあるので、そこを送信したいチャンネルのIDに置き換えます。チャンネルIDは、送信したいチャンネルの上で右クリックし「IDをコピー」でコピーできます。
![スクリーンショット (140).png](https://qiita-image-store.s3.amazonaws.com/0/322441/1833d275-08af-a357-af20-879405555def.png)
上記の2つが終わったらファイルを保存して終了して下さい。
<br>
次に、anzubot.pyをダブルクリックして起動します。先程指定したチャンネルに

「みなさん ! おはようございまーっす♪
今日も一日、元気いっぱいがんばろー !」

と表示されれば成功です。されなかった場合、コードを余分に改変していないか確かめて下さい。

#指定した時間に自動的に起動するように設定する
ここまでで、BotをDiscord上で動かす設定までは終了しました。
しかし、双葉杏BOTは朝七時につぶやきます。せっかくだからそれを再現したいですが、いちいち朝7時に手動で起動するのもバカバカしいですよね？そこで、Windowsによって提供されている「タスクスケジューラ」というサービスを利用して、朝7時に自動で送信するようにしてみましょう。
<br>
スタートメニューを開き、「タスクスケジューラ」を検索して起動します。
![スクリーンショット (141).png](https://qiita-image-store.s3.amazonaws.com/0/322441/77b2b0b4-8174-dec0-05eb-2d15a5a3a8da.png)
<br>
右側のメニューから、「基本タスクの作成...」をクリック
![スクリーンショット (142).png](https://qiita-image-store.s3.amazonaws.com/0/322441/7c5a2254-7954-b064-95af-c802c6d63874.png)
<br>
双葉杏BOTを朝7時起動するという一連の流れに名前をつけます。動作に影響はしませんが、できるだけ管理のしやすい名前にしておきましょう。説明はなくても構いません。
![スクリーンショット (145).png](https://qiita-image-store.s3.amazonaws.com/0/322441/390529e3-25ab-103d-feeb-928549d5a423.png)
<br>
今回は1日に1回起動するので「毎日」を選択します
![スクリーンショット (146).png](https://qiita-image-store.s3.amazonaws.com/0/322441/e066e6c4-87f5-712c-885b-66fdefaa1674.png)
<br>
起動する時間を指定します。日付の部分は勝手に調整されるので変更しないで構いません、時間の部分を「7:00:00」に変更しましょう。
![スクリーンショット (147).png](https://qiita-image-store.s3.amazonaws.com/0/322441/aba9d1ef-3588-bf73-8973-a3831c8c5683.png)
<br>
「プログラムの開始」を選択します。
![スクリーンショット (148).png](https://qiita-image-store.s3.amazonaws.com/0/322441/4fa385ef-6082-2a12-577a-0a3d0af147ae.png)
<br>
ここから少し面倒くさい作業に入ります。
まず、Pythonの本体のファイルを指定します。
`C:\Users\ユーザー\AppData\Local\Programs\Python\Python36\python.exe`
今回紹介したインストール方法では、上記の場所にPythonのソフトがインストールされいてますので、これを「プログラム/スクリプト」の欄に、貼付します。アドレス内の「ユーザー」と書かれている場所は、お使いのユーザー名に合わせて適宜変更してください。
次に、プログラムされたPythonのコードのファイル名を「引数の追加」で指定します。今回は「anzubot.py」にしてありますので、それを入力しましょう。
anzbot.pyのファイルが保存されている場所を、「開始」の欄に入力します。私の場合は「D:\Python」に保存してありますが、ここもファイルの保存場所に合わせて適宜変更してください。ファイル名は上にて入力したため必要ありません。
![スクリーンショット (152).png](https://qiita-image-store.s3.amazonaws.com/0/322441/5c4aacaf-efdd-1d31-b039-eb70f4f03253.png)
<br>
最後に、「完了」を押して自動起動の設定は終了です。
![スクリーンショット (150).png](https://qiita-image-store.s3.amazonaws.com/0/322441/d60988f4-7abd-ceb4-ac4b-7ba4f6725a1a.png)
<br>
タスクスケジューラの最初の画面に戻り、自動起動するソフト一覧の中に先程作成したものが入っていれば成功です。念の為に「次回の実行時刻」が一番近くにやってくる朝7時になっているか確認して下さい。
![スクリーンショット (151).png](https://qiita-image-store.s3.amazonaws.com/0/322441/ff48e62d-a065-ef16-0a82-be3b4d18b199.png)
<br>
以上で全ての設定は完了です。これで、朝7時にPCを起動していれば自動的に双葉杏BOTがメッセージを送信してくれます。PCも自動起動したいという方、実は全てのPCに設定出来るわけでは無いのと、私の所有するPCでそれができなかったため説明は割愛します。ご自身で調べてみて下さい。
#おわりに
大石泉アドベントカレンダーの活動の一環としてこれを書きました。Qiita初投稿なので至らない点もあるとは思いますが、そこはお許しください。PythonとかDiscordのBotに詳しくないPの方に向けて書いたため、あまりに長くなってしまったのも反省点です。これを利用したPさん方が、より良いDiscordライフをエンジョイできたらなあと思います。
そして最後に、我が担当である大石泉をよろしくお願いします(隙あらば担当ダイマ)