Отправка аудио через webhook в Discord с использованием Python - PullRequest
0 голосов
/ 17 марта 2020

У меня есть файл, который связан с другой из моих программ, и после запуска он отправляет встраивание в Discord, используя следующий код:

    payload = {"embeds": [
        {
          "author": {
            "name": "EAS Software",
            "icon_url": "https://www.fema.gov/sites/default/files/styles/unicorn_rotator/public/uni-rotator-imgs/eas_logo_rev1_3.png?itok=56iK9r2a"
          },
          "title": lines,
          "description": "Issued "+datetime.now().strftime('%m/%d/%Y %H:%M:%S') + " " + TMZ,
          "color": 0xff9900,
          "fields": [
            {
              "name": "Text Data:",
              "value": args.text
            },
            {
              "name": "EAS Protocol Data:",
              "value": "ZCZC-"+args.org+"-"+args.event+"-"+args.fips+"+"+args.time+"-"+ts_val+"-"+args.calls+"-"
            },
          ],
          "timestamp" : datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.000Z'),
          "footer": {
            "text": "Nerp EAS Logger System"
            }
        }
      ]
    }
    header_data = {'content-type': 'application/json'}
    requests.post(webhook1, json.dumps(payload), headers=header_data)

    print("Succesfully posted.")

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

Вот код, который я использую чтобы отправить файл:

    dataList = []
    boundary = 'wL36Yn8afVp8Ag7AmP8qZ0SA4n1v9T'
    dataList.append('--' + boundary)
    dataList.append('Content-Disposition: form-data; name=file; filename={0}'.format('C:\Users\Brigan\Desktop\EAS-APPS\Encoder\combined.wav'))
    fileType = mimetypes.guess_type('C:\Users\Brigan\Desktop\EAS-APPS\Encoder\combined.wav')[0] or 'application/octet-stream'
    dataList.append('Content-Type: {}'.format(fileType))
    dataList.append('')
    with open('C:\Users\Brigan\Desktop\EAS-APPS\Encoder\combined.wav') as f:
      dataList.append(f.read())
    dataList.append('--'+boundary+'--')
    dataList.append('')
    body = '\r\n'.join(dataList)
    payload = body
    headers = {
      'Content-Type': 'multipart/form-data; boundary=--------------------------248330258300818905783969',
      'Content-type': 'multipart/form-data; boundary={}'.format(boundary)
    }
    conn.request("POST", "/api/webhooks/688944637209083926/vAv6UScav_j1AUun8GZ1RnYlYd2JvcvGvR1Wv5Db7_av3NhrBTsLWLlxH5PT8b0yQlpy", payload, headers)
    res = conn.getresponse()
    data = res.read()
    print(data.decode("utf-8"))

Кто-нибудь знает, как отправить файл .WAV на Discord в Python, или мне просто не повезло?

** РЕДАКТИРОВАТЬ Я узнал что система с именем discord-webhooks является кроссплатформенной, поэтому я использовал ее, используя следующий код:

#Post Json Embed to Discord!
webhook = DiscordWebhook(url='webhook1')
embed = DiscordEmbed(title=lines, description="Issued "+datetime.now().strftime('%m/%d/%Y %H:%M:%S') + " " + TMZ, color=0xff9900)
embed.set_author(name='EAS Software', icon_url='https://www.fema.gov/sites/default/files/styles/unicorn_rotator/public/uni-rotator-imgs/eas_logo_rev1_3.png?itok=56iK9r2a')
embed.set_footer(text='NERP EAS Logger System')
embed.set_timestamp()
embed.add_embed_field(name='EAS Text Data:', value=args.text, inline=False)
embed.add_embed_field(name='EAS Protocol Data:', value="ZCZC-"+args.org+"-"+args.event+"-"+args.fips+"+"+args.time+"-"+ts_val+"-"+args.calls+"-", inline=False)
webhook.add_embed(embed)
response = webhook.execute()
webhook = DiscordWebhook(url='webhook1')
with open("Output/FULL-ALERT-DATA.wav", "rb") as f:
    webhook.add_file(file=f.read(), filename='Alert-Audio.wav')
response = webhook.execute()
print("Succesfully posted.")

Спасибо за помощь!

...