Python3使用webhook将图片.png发送到Discord频道



我有一个python 3.6脚本,它生成了一个png图像文件,我只想在python脚本末尾的Discord通道中发布这个图像。我该怎么做?

这是一项令人惊讶的具有挑战性的任务,因为以下解决方案似乎都不适用

  1. 使用CV2将图像放入json主体中。OpenCV库的安装非常痛苦。花了1个小时仍然无法获得

import cv2

在没有错误消息的情况下完成。简单地放弃CV2。

无法导入cv2模块(Python 3.6(安装opencv-python headless需要很长时间新手Python,PyCharm和Anaconda发布

def send_image_to_discord(self, image_file, url):
#   this version requires CV2 which is super painful to install

# this function takes the image and send it to the Discord channel
img = cv2.imread(image_file)
string_img = base64.b64encode(cv2.imencode('.png', img)[1]).decode()
req = {"image": string_img}
res = requests.post(url, json=req)
return res
URL = 'Discord channel webhook' 
self.send_image_to_discord(image_file, URL)
  1. 使用Discord.py,但这更适用于具有等待的BOT

    async def send_image_to_discord(self, image_file, discord_channel_id):
    client = discord.Client()
    channel = client.get_channel(discord_channel_id)
    await channel.send('hello')
    await channel.send(file=discord.File(image_file))
    URL = 'discord channel id'
    self.send_image_to_discord(image_file, url)
    

还有其他方法吗?非常感谢。

一个解决方案是使用discord.py的SyncWebhook。在你想要的频道中创建一个webhook,获取URL,这样的东西应该可以工作:
from discord import SyncWebhook, File
wh = SyncWebhook.from_url(<webhook url>)
wh.send(file=File(image_file))

这个解决方案的好处是,您甚至不需要在服务器中使用机器人应用程序。

相关内容

  • 没有找到相关文章

最新更新