400 Плохой запрос - Discord.com - Python - PullRequest
0 голосов
/ 03 августа 2020

Я, наверное, просто очень глуп, но у меня просто не получается заставить это работать, я пытался создать терминальный клиент Discord (который уже существует, я знаю. Я просто хочу научиться у него). Чтобы отправлять сообщения, мне нужно отправить запрос на почту. Для проверки я скопировал запросы, которые отображались на вкладке сети в консоли разработчика на chrome, однако, когда я пытаюсь опубликовать эти запросы, он всегда возвращает ошибку 400, я не могу заставить его работать, и у меня много чего перепробовал. Кто-нибудь может мне помочь? (Я закодировал запрос в python и попробовал cUrl, но ни один из этих вариантов не работал, я хочу, чтобы клиент терминала был в python, поэтому, пожалуйста, не предлагайте никаких решений на других языках, спасибо.)

Мой код (мой токен и некоторые другие вещи «размыты», некоторые части я не уверен, можно ли публиковать sh на inte rnet, поэтому они тоже размыты):

import requests

headers = {
    'authority': 'discord.com',
    'x-super-properties': 'eyJvcyI6IldpbmRvd3M********************************************************************************************************************************************************************************************************************************************VyY2UiOm51bGx9',
    'authorization': '******7FOoZMP-GlzymbHeg4*************************************2MXFSXtrTG5*******YwWk',
    'accept-language': 'en-US',
    'user-agent': 'Mozil*************************************************** Gecko) Chrome/8************5 Safari/5****6',
    'content-type': 'application/json',
    'accept': '*/*',
    'origin': 'https://discord.com',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-mode': 'cors',
    'sec-fetch-dest': 'empty',
    'referer': 'https://discord.com/channels/7251259663********/725257987*********',
    'cookie': '__cfduid=d12b36c3528456******************01596480532; _refreshuid=cba4432f-738b-4add***********d90ed7c; _ga=GA1.2.677491712.1596480536; _gid=GA1.2.994510***********536; __cfruid=0***************************17a6a6ac7b12-1596480535; locale=en-US',
}

data = '^{^\\^content^\\^:^\\^MessageContentHere^\\^,^\\^nonce^\\^:^\\^7399203802********^\\^,^\\^tts^\\^:false^}'

response = requests.post('https://discord.com/api/v6/channels/72525798**********/messages', headers=headers, data=data)

print(response.text)

Это всегда возвращает: "{" message ":" 400: Bad Request "," code ": 0}" btw.

EDIT: Я только что получил кое-что, чтобы не возвращать ошибку плохого запроса, однако на самом деле это не отправляет сообщение в канале, в котором говорится, что оно отправлено.

EDIT2: Как сказал kingkupps, вместо установки данных на '^{^\\^content^\\^:^\\^MessageContentHere^\\^,^\\^nonce^\\^:^\\^7399203802********^\\^,^\\^tts^\\^:false^}' вы можете использовать data = {"content":"MessageContentHere","nonce":"7399203802********","tts":False} (обратите внимание, как False с заглавными буквами, чтобы он работал в python), а затем отправьте запрос с requests.post('https://discord.com/api/v6/channels/72525798**********/messages', headers=headers, json=data) («json» вместо «data»).

EDIT: Я обнаружил проблему, но у меня есть не знаю, как это решить. Похоже, он отправляет предыдущее сообщение, которое я отправлял несколько раз. Когда я отправляю сообщение, а затем отправляю другое, повторно запустив сценарий с другим содержимым, он возвращает тот же идентификатор сообщения. У меня такое ощущение, что мой запрос неправильно отправляется.

...