从 Discord 消息下载图像

时间:2021-04-03 04:58:10

标签: python python-3.x discord discord.py

我怎么能下载不和谐消息中的所有图像,但有一个随机名称,所以我没有 2 个不同的 image.jpegs 或 image.png ??

注意: 我想从消息中获取图像 如果他们通过 url 发送图像而不是从那里获取图像消息 url

请帮忙 谢谢。

2 个答案:

答案 0 :(得分:3)

它会下载所有类型的图像/gif,请参阅image_extensions

使用网址并通过聊天发送图像。

您可以选择保存图片的路径 - 例如 images

import discord
import os
import aiohttp

@client.event
async def on_message(message: discord.Message):
    if valid_image_url(message.content):
        await download_image(message.content, "images")

    for attachment in message.attachments:
        if valid_image_url(attachment.url):
            await attachment.save(os.path.join("images", attachment.filename))


def valid_image_url(url: str):
    image_extensions = ['png', 'jpg', 'jpeg', 'gif']
    for image_extension in image_extensions:
        if url.endswith('.' + image_extension):
            return True
    return False


async def download_image(url: str, images_path: str = ""):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as resp:
            if resp.status == 200:
                image_name = os.path.basename(url)
                with open(os.path.join(images_path, image_name), "wb") as f:
                    f.write(await resp.read())

答案 1 :(得分:-2)

好吧,如果你想下载 dms 中的每一个不和谐图像,我无法帮助你,但我知道一种通过编写代码来下载图像的方法。此脚本将使用您选择的名称创建一个新的 png,并在您编码的任何 ide 或文本编辑器中使其成为图像。

import requests

r = requests.get("Image link")

with open("your_specified_picture_name.png", 'wb') as f:
    f.write(r.content)