4
votes

I am trying to make my discord bot send a jpg file to my discord server, but I keep getting an error that seems pretty uncommon as I can not find any solutions to it on the internet...

the error is... discord.ext.commands.errors.CommandInvokeError: Command raised an exception: ClientRequestError: Can not write request body for https://discordapp.com/api/v6/channels/454374995758678029/messages

My imports are

import time

import discord
from discord.ext import commands
from discord.ext.commands import Bot
import asyncio

The code that I will pull out that the error is related to is

@bot.command(pass_context = True)

async def image(ctx):

        await bot.send_file(ctx.message.channel, open('halogen.jpg'))

Am I just missing an import or is there an actual problem with my code?

Thanks guys

2
Sidenote: passing open(...) to a function is usually a bad idea, since that image might never get closed, so if this command is run multiple times, you could leak file handles and eventually crash your bot.Ash
Josh, you were right... I got rid of open and my code instantly worked... always the small thingsEnzo Romano
You should be opening your object in 'rb' mode. You can also just pass the path to the file instead of a file object. See the send_file documentationPatrick Haugh

2 Answers

7
votes

I was researching the same thing and I found this to work:

    await ctx.send(file=discord.File(r'c:\location\of\the_file_to\send.png'))

Here is where I found it: link

2
votes

Try doing it this way.

@bot.command(pass_context=True)
async def send(ctx):
    area=ctx.message.channel
    await bot.send_file(area, r"c:\location\of\the_file_to\send.png",filename="Hello",content="Message test")

You can refer to the discord documentation for it here link