【備忘録】DiscordBot① Bot作成 ～ 特定の内容に返信

# Discord Developer PortalでBotを作成する

## Discordにログイン
[Discord Developer Portal](https://discord.com/developers/applications)にアクセスしDiscordのアカウントでログイン。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/446312/0b4de2f9-624f-3b7a-053e-9787f686788c.png)

Applicationタブに飛ばされる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/446312/79e33099-537a-d79b-2612-0bd02f3a0edb.png)

## New Application の作成
右上の New Applicationをクリックして新規BotをDiscord側で作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/446312/a3cff96e-dc5d-af09-0ea2-881dcef0a1e7.png)

作成したBotの基本設定画面に飛ばされる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/446312/f599ea5e-c8af-b3bf-8468-00cfa3b8afe0.png)

画面左Botタブをクリック
画面右上Add botボタンをクリックした後yesをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/446312/367a6a1d-d77e-a64b-e534-8c7855482409.png)

Copyをクリックしてメモ帳か何かに書き写しておく。
※ほかの人にこの文字列が渡るとbotを導入したサーバーを荒らされる可能性があるため漏れないように。
　漏れたと思ったときはRegenerateをクリックしてトークンを再生成するなどして対応すること。

画面左OAth2タブをクリック
SCOPES枠内真ん中あたりにあるbotにチェックを入れる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/446312/43d1dc46-80dd-f232-eb70-947cc622db76.png)

下にスクロールしてBot PermissionsでBotに与える権限を選ぶ。
自分で作ったテストサーバーに導入して遊ぶ分にはAdministrator(管理者権限)でかまわない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/446312/9847aa30-d085-5787-85cf-e3b05eba554b.png)

権限を与えた後はSCOPE枠内の下に出てきたリンクをコピーしてアクセスする。
アクセスしたらBOTを追加する場所を選択しはいを押す。
また、管理者権限を与えている場合管理者権限を与えてよいか確認メッセージが出る。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/446312/6047e67f-a803-b6a2-e531-5d8cb3c0356e.png)

# PythonでBotの内容を書く

##環境

Windows10 x64
Python3.7.7 x64
discord.py 1.2.5

## Pythonを導入
[Python公式](https://www.python.org/)のDownloadsから対応バージョンのpythonをダウンロード。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/446312/a0165761-f184-81ef-2502-5f47ab33ff23.png)
Filesの内環境に合ったものをダウンロード。
今回はWin x64なので[Windows x86-64 executable installer](https://www.python.org/ftp/python/3.7.7/python-3.7.7-amd64.exe)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/446312/5245a76c-9b4c-986a-e575-2d26b79497ef.png)

インストール画面はとりあえずOK連打

##エディタを導入
今回は[VisualStudioCode](https://azure.microsoft.com/ja-jp/products/visual-studio-code/)を使用。
Downloadからバージョンにあったものを使用。

## discord.pyをPIPで入れる
コマンドラインにて下記コマンドを実行
```pip install discord.py
```

## 動かす
下記コードをDiscordBot.pyで保存し実行(async/await版)

```python
# -*- coding: utf-8 -*-

# ライブラリのインポート
import discord
import asyncio

TOKEN = 'ここにコピーしたトークンを貼り付ける'
client = discord.Client()

# ボットの起動時に実行されるイベントハンドラを定義
@client.event
async def on_ready():
    print('Bot Launched')

# メッセージの送信時に実行されるイベントハンドラを定義
@client.event
async def on_message(message):
    if message.author.bot:
        pass
    elif message.content.startswith('こんにちは！'):
        send_message = f'{message.author.mention}さん、こんにちは！'
        await message.channel.send(send_message)

#ボットを実行
client.run(TOKEN)
#ここより下に書かれた処理はボットが停止するまで実行されない
```

コマンドラインで下記コマンドをファイルのある場所で実行
```python DiscordBot.py```

動作の様子
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/446312/27e64e8f-a444-d77d-1b68-8543e692303d.png)