Загрузка файлов в Discord API с использованием PUT с использованием запросов PythonPython

Программы на Python
Anonymous
Загрузка файлов в Discord API с использованием PUT с использованием запросов Python

Сообщение Anonymous »

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

Код: Выделить всё

def Upload(link, channel, token):
api_url = 'https://discord.com/api/v9/channels/'+channel+'/attachments'
file_name = link[-10:]
file_id = 1
response = requests.get(link)
open(file_name, "wb").write(response.content)
file_size = os.path.getsize(file_name)
upload = {"files":[{"filename":file_name,"file_size":file_size,"id":file_id}]}
file = open(file_name, 'rb')
header = {'authorization' : token}
response = requests.post(api_url, headers=header, json=upload)
put_url = response.json()['attachments'][0]['upload_url']
put_name = response.json()['attachments'][0]['upload_filename']
put_headers = {'Content-Length': str(file_size), 'Connection': 'keep-alive', 'Content-Type': 'image/png', 'authorization' : token}
response = requests.put(put_url, headers=put_headers, data=file)
return response
На первый взгляд кажется, что все работает. Код ответа — 200, все ок.
Но если я попытаюсь получить заголовки — print(response.headers), то получу следующее сообщение:

{'X-GUploader-UploadID': 'бла-бла-бла', 'ETag': '"бла-бла"', 'x-goog-generation': '1682338706931190', 'x-goog-метагенерация' : '1', 'x-goog-hash': 'bla-bla-bla', 'x-goog-длина-контента': '1112324', 'x-goog-stored-content-encoding': ' identity», «Vary»: «Origin», «Content-Length»: «0», «Date»: «Пн, 24 апреля 2023 г., 12:18:26 по Гринвичу», «Сервер»: «UploadServer», «Content- Тип': 'текст/html; charset=UTF-8'}

У меня есть: 'Content-Length' = '0', 'Content-Type' = 'text/ HTML; кодировка = UTF-8'. И изменение «put_headers» абсолютно на это не влияет. Я отправил 1112324 байт, что за фигня? Я вижу «x-goog-stored-content-length» = «1112324», но не знаю, что происходит не так.
Кроме того, если я пытаюсь использовать «загруженное» вложение в следующем сообщении — Я получаю сообщение об ошибке (неправильный вложение).
Что я делаю не так?
Я пытался использовать POST, но Discord не принимает этот метод для вложений

Подробнее здесь: https://stackoverflow.com/questions/760 ... n-requests

Вернуться в «Python»