【自分用】DiscordBotの作成と24時間運用

## DiscordBotの作成方法
[Discord Developer Portal](https://discord.com/developers/applications)にアクセスする
**New Application**をクリック
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/4122a54c-c3cd-47b1-bd16-422d6512d45a.png)
好きな名前を入力し**Create**をクリック
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/c0e37045-cc46-492a-8b25-1286c30002f0.png)
左側の**Installation**をクリックし一番下まで行く
**Guild Install**の欄の**SCOPES**に**bot**を追加し**PERMISSIONS**に**Administrator**を追加する
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/00c4de3a-46cf-4b6d-9ace-6e1bcff41a3c.png)
左側の**OAuth2**をクリックし**Client information**の欄にある**CLIENT ID**をコピーしてメモしておく
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/7c1ab9a2-cc91-4a26-96d8-6438186b023e.png)
左側の**BOT**をクリックし**TOKEN**の下にある**Reset Token**をクリックする
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/0e22d50e-7ae1-45aa-8e97-c8d6f740ba28.png)
でてきたトークンをコピーしメモしておく(トークンは絶対に他人に見せない)
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/ac282e02-53b2-4376-8134-2b1718128b69.png)
真ん中あたりまでスクロールし**Privileged Gateway Intents**の欄をすべてONにする
(お好みで上の**Authorization Flow**の**PUBLIC BOT**をONにする)
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/a9fec835-d1fb-4334-aa8d-9fc05c25ab0b.png)
## DiscordBotを招待する
下記のリンクの**client_id=** の後(ClientID_hereの部分)に先ほどコピーした **CLIENT ID**をいれて自分のDiscordサーバーからアクセスする。
```
https://discord.com/oauth2/authorize?client_id=ClientID_here&permissions=8&integration_type=0&scope=applications.commands+bot
```
**アクセス例**
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/79476be5-0525-4325-a467-264570a12d5c.png)
招待するとこのようなオフラインのボット君がサーバーに来る
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/1a4e79a3-9202-4f77-b904-003eef970463.png)
# GlitchとBotのプロセス
Botの処理及び運用は[**Glitch**](https://glitch.com)で行う
アカウントがない場合は作成しておく
こちらの[テンプレート](https://glitch.com/edit/#!/discord-bot-template-onglitch)に飛び右上の**Remix**をクリックしプロジェクトをコピーする
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/8ce7c5a5-e1ae-4b52-8d93-1e33eea0f6f9.png)
プロジェクトをコピーし終わったら環境変数(.env)に**Client ID**と**TOKEN**を入力する
入力が終わったら右上の**Share**をクリックする
(今回はコマンドを追加せずデフォルトのままだが追加したい場合はCommandディレクトリ配下にjsファイルを追加する)
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/d91ad99f-96b1-4bf5-bb92-460e8f74be96.png)
下にある２つのリンクのうち**上のリンク**(Live Site)をコピーしメモしておく
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/2a151d74-72a6-4d99-9349-535f5a83aaaf.png)
## Botをビンタし続ける(24時間運用)
**Glitch**のプロジェクトは一定時間操作がないとスリープ状態になるので
Botをどうにかして起こし続けなければいけません(鬼畜)
そこでGoogle様が提供している[**Google Apps Script**](https://script.google.com/)から定期的にリクエストを送信し、サーバーのスリープを阻止します。
リンクに飛び新しいプロジェクトをクリック
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/567570ef-ba7f-468f-ad92-6df8ee450202.png)
以下のスクリプトをコピーして**コード.gs**にペーストした後
1行目の**GLITCH_URL=**""の後に**先ほどコピーしたリンク**(Live Site)を貼り付けます
```
var GLITCH_URL = "Glitchのリンクをここへ";
function wakeGlitch(){
 var params = {
   'contentType' : 'application/json; charset=utf-8',
   'method' : 'post',
   'muteHttpExceptions': true
 };
 response = UrlFetchApp.fetch(GLITCH_URL, params);
}
```
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/7c8603b1-f946-49b9-acb2-9c8742a4f3d6.png)
これだけでは起こし続けられないのでトリガーを設定します
左側からトリガーをクリックして右下のトリガーを追加をクリック
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/8c2155b5-1f43-4961-9cff-d51d058a93d4.png)
下画像の赤枠部分を変更する
**時間ベースのトリガータイプを選択を分ベースのタイマーに設定**
**時間間隔を選択(分)を1分おきに設定**
設定後保存を押しトリガーが作成できているか確認する
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/4a5f6362-ba5a-4570-b1f6-f4578e371baf.png)
これにより1分毎にリクエストを送信する仕組みが完成した
![17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/aca79ae7-f16d-4e00-89d1-578fa5534d36.png)
## Googleにサインインを求められた場合
自分のアカウントにログイン
![20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/c5ffff96-36dd-4779-8693-5d6558546917.png)
このような警告文が出た場合は左下の**Advanced**をクリック
(出ない場合は下にスクロールして**Allow**をクリック)
![21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/e5fe88b2-4fe8-4369-92ef-89ff23ec4941.png)
この文字が出てきたら**Go to ~(プロジェクト名)unsafe**をクリック
その後下にスクロールして**Allow**をクリックすればトリガーが作成できる
![22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/5f44f190-26ba-447f-95ce-01de4f6f4809.png)
## 動作確認
Botがオンラインになっていてコマンドに反応したら成功！！
![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/4cafc1a9-d353-4020-804f-e2cdb12d149d.png)
![19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3962558/510ba6fa-2a3e-4299-8cca-c11973b46864.png)