0
Help us understand the problem. What are the problem?

posted at

discord、どう動いてる?

動機

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

仕組み

ベース:
APIのバージョンは8以上が推奨されています。参考

下準備

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

メッセージ送信

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}

メッセージ編集

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}

メッセージ削除

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]>

メッセージ削除 (複数)

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]>

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

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

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?