一个解决方案是使用discord.py的SyncWebhook。在你想要的频道中创建一个webhook,获取URL,这样的东西应该可以工作:
我有一个python 3.6脚本,它生成了一个png图像文件,我只想在python脚本末尾的Discord通道中发布这个图像。我该怎么做?
这是一项令人惊讶的具有挑战性的任务,因为以下解决方案似乎都不适用
- 使用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)
使用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)
还有其他方法吗?非常感谢。
from discord import SyncWebhook, File
wh = SyncWebhook.from_url(<webhook url>)
wh.send(file=File(image_file))
这个解决方案的好处是,您甚至不需要在服务器中使用机器人应用程序。