I have a grayscale command to turn an image into grayscale. I'm using bytes to save the image and send it.
Code snippet
#  attachment is a parameter in the command in previous lines that is an image
            temp = io.BytesIO()
            await attachment.save(temp)   # save attachment to temp
            img = Image.open(
                temp).convert(
                'RGBA')  # https://stackoverflow.com/questions/24996518/what-size-to-specify-to-pil-image-frombytes
            imgdata = img.getdata()
            # grayscale
            grayscale = []
            for x in imgdata:
                Y = int(x[0] * 0.299) + int(x[1] * 0.587) + int(x[
                                                                    2] * 0.114)  # Helpful website: https://www.dynamsoft.com/blog/insights/image-processing/image-processing-101-color-space-conversion/
                if inverse:
                    Y = 255 - Y  # create inverse
                grayscale.append((Y, Y, Y))  # append data to grayscale list of rgb
            img.putdata(grayscale)  # save grayscale list of rgb to image
            with io.BytesIO() as output:  # open iobytes
                img.save(output, format="PNG")  # save img into iobytes
                output.seek(0)
                await ctx.respond(file=discord.File(output, filename="grayscale.png"))  # send image
What I want to do
In the last line, I want to send the image in an embed. However, in the pycord docs:

It shows that an image needs a URL. However, if I'm using bytes, how do I send the image in an embed?
Saving the image to a folder then sending is possible, however I don't find this efficient (I'm using a server with limited storage). Therefore, I want to use bytes to use RAM instead. However, if this is not possible, then that would be a sufficient answer.
Full code For MRE
    @command_group.command(name="grayscale", description="Converts image to grayscale")
    async def grayscale(self, ctx,
                        attachment: discord.Option(discord.Attachment, required=True,
                                                   description="Convert image to grayscale"),
                        inverse: discord.Option(bool, required=False, description="Invert image grayscale")):
        try:
            if not self.check_image_size(attachment):
                return await ctx.respond(
                    "Image too big. If you want image compression added, make a suggestion in the main server `/botinfo`",
                    ephemeral=True)
            await ctx.defer()
            temp = io.BytesIO()
            await attachment.save(temp)
            img = Image.open(
                temp).convert(
                'RGBA')  # https://stackoverflow.com/questions/24996518/what-size-to-specify-to-pil-image-frombytes
            imgdata = img.getdata()
            # grayscale
            grayscale = []
            for x in imgdata:
                Y = int(x[0] * 0.299) + int(x[1] * 0.587) + int(x[
                                                                    2] * 0.114)  # Helpful website: https://www.dynamsoft.com/blog/insights/image-processing/image-processing-101-color-space-conversion/
                if inverse:
                    Y = 255 - Y  # create inverse
                grayscale.append((Y, Y, Y))
            img.putdata(grayscale)
            with io.BytesIO() as output:
                img.save(output, format="PNG")
                output.seek(0)
                await ctx.respond(file=discord.File(output, filename="grayscale.png"))
        except PIL.UnidentifiedImageError:
            print(attachment.content_type)
            await ctx.respond("This is not a valid image!", ephemeral=True)
