首页 > 解决方案 > 从 Discord 消息下载图像

问题描述

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

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

请帮忙谢谢。

标签: pythonpython-3.xdiscorddiscord.py

解决方案


它下载所有类型的图像/GIF 参见image_extensions.

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

您可以选择将图像保存在哪个路径中 -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())


推荐阅读