discord、どう動いてる？

# 動機
普段使用しているpycordはどのようにして動いているのか気になったので。

# 仕組み
ベース：
APIのバージョンは8以上が推奨されています。[参考](https://discord.com/developers/docs/reference#api-versioning)


**下準備**
```python
from pprint import pprint

API_VERSION = 9 
BASE_URL = "https://discord.com/api/v{}".format(API_VERSION)

TOKEN = "YOUR_BOT_TOKEN"
HEADER = {"Authorization": "Bot {}".format(TOKEN)}

APP_ID = 000000000000000000 # BotのID
GUILD_ID = 111111111111111111 # 対象とするサーバーのID
CHANNEL_ID = 222222222222222222 # 対象とするチャンネルのID
```
---
# [メッセージ送信](https://discord.com/developers/docs/resources/channel#create-message)
```python
MESSAGE_SEND = "/channels/{}/messages"

url = BASE_URL + MESSAGE_SEND.format(CHANNEL_ID)

json = {"content": "aaaaa"}

r = requests.post(url=url, json=json, headers=HEADER)
print(r)
pprint(r.json())

###### 出力 ######
<Response [200]>
{'attachments': [],
 'author': {'avatar': None,
            'avatar_decoration': None,
            'bot': True,
            'discriminator': '3837',
            'id': 'BotID',
            'public_flags': 0,
            'username': 'BotName'},
 'channel_id': '222222222222222222',
 'components': [],
 'content': 'aaaaa',
 'edited_timestamp': None,
 'embeds': [],
 'flags': 0,
 'id': 'MessageID',
 'mention_everyone': False,
 'mention_roles': [],
 'mentions': [],
 'pinned': False,
 'referenced_message': None,
 'timestamp': '2022-04-28T10:33:50.150000+00:00', # datetime.datetime
 'tts': False,
 'type': 0}
```

# [メッセージ編集](https://discord.com/developers/docs/resources/channel#edit-message)

```python
MESSAGE_EDIT = "/channels/{}/messages/{}"
MESSAGE_ID = 333333333333333333

url = BASE_URL + MESSAGE_EDIT.format(CHANNEL_ID, MESSAGE_ID)
json = {"content": "message was edited!"}
r = requests.patch(url=url, json=json, headers=HEADER)
print(r)
pprint(r.json())

#### 出力 ####
<Response [200]>
{'attachments': [],
 'author': {'avatar': None,
            'avatar_decoration': None,
            'bot': True,
            'discriminator': '3837',
            'id': 'BotID',
            'public_flags': 0,
            'username': 'BotName'},
 'channel_id': 'ChannelID',
 'components': [],
 'content': 'message was edited!',
 'edited_timestamp': '2022-04-28T11:17:59.394637+00:00',
 'embeds': [],
 'flags': 0,
 'id': 'MessageID',
 'mention_everyone': False,
 'mention_roles': [],
 'mentions': [],
 'pinned': False,
 'timestamp': '2022-04-28T10:14:17.819000+00:00',
 'tts': False,
 'type': 0}
```

# [メッセージ削除](https://discord.com/developers/docs/resources/channel#delete-message)

```python
MESSAGE_DEL = "/channels/{}/messages/{}"
MESSAGE_ID = 333333333333333333

url = BASE_URL + MESSAGE_DEL.format(CHANNEL_ID, MESSAGE_ID)
r = requests.delete(url=url, headers=HEADER)
print(r)

#### 出力 ####
<Response [204]>
```

# [メッセージ削除 (複数)](https://discord.com/developers/docs/resources/channel#bulk-delete-messages)

```python
MESSAGE_BULK = "/channels/{}/messages/bulk-delete"
MESSAGE_LIST = [444444444444444444, 555555555555555555, ...] # 2~100件まで

url = BASE_URL + MESSAGE_BULK.format(CHANNEL_ID)
json = {"messages": MESSAGE_LIST}
r = requests.post(url=url, json=json, headers=HEADER)
print(r)

#### 出力 ####
<Response [204]>
```

次はアプリケーションコマンドについて書こうかなと思います。(最近忙しいので時間がかかります。)

指摘ありましたらお願いします。