What is the Solution to MissingRequiredArgument Error in discord.py Module?

I want to create a bot that will display server information such as server name, server owner's name, total number of members, etc. whenever called upon. I read up on the module's document many times and tried many things. Regardless of all attempts, I have been getting this error whenever I invoke the bot by command. I am using Python 3.9.2 and discord.py module of version 1.6.0, by the way. How can I solve the issue? Thanks in advance!

My Code:

@bot.command()
async def server(ctx, guild: discord.Guild):
    await ctx.send(guild.name)
    await ctx.send(guild.owner)
    await ctx.send(guild.owner_id)
    await ctx.send(guild.members)
    await ctx.send(guild.member_count)

Error:

Ignoring exception in command server:
Traceback (most recent call last):
  File "...\AppData\Roaming\Python\Python39\site-packages\discord\ext\commands\bot.py", line 902, in invoke
    await ctx.command.invoke(ctx)
  File "...\AppData\Roaming\Python\Python39\site-packages\discord\ext\commands\core.py", line 856, in invoke
    await self.prepare(ctx)
  File "...\AppData\Roaming\Python\Python39\site-packages\discord\ext\commands\core.py", line 790, in prepare
    await self._parse_arguments(ctx)
  File "...\AppData\Roaming\Python\Python39\site-packages\discord\ext\commands\core.py", line 706, in _parse_arguments
    kwargs[name] = await self.transform(ctx, param)
  File "...\AppData\Roaming\Python\Python39\site-packages\discord\ext\commands\core.py", line 542, in transform
    raise MissingRequiredArgument(param)
discord.ext.commands.errors.MissingRequiredArgument: guild is a required argument that is missing.

Upvotes: 0

Views: 88

Answers (2)

ChocolateEye
ChocolateEye

Reputation: 46

You have requested 2 arguments , ctx and guild : discord.Guild when you run the command , you have to use the command in the format !server <guild id/name> , since you didn't mention the <guild id/name> the error was triggered , either you can remove the argument as mentioned in answer given by @PythonProgrammer or you can mention the guild you want to request info of

Upvotes: 1

NetherMoon
NetherMoon

Reputation: 331

Do you need the guild parameter, why don't you just do:

@bot.command()
async def server(ctx): 
    await ctx.send(ctx.guild.name)
    await ctx.send(ctx.guild.owner)
    await ctx.send(ctx.guild.owner_id)
    await ctx.send(ctx.guild.members)
    await ctx.send(ctx.guild.member_count) 

Upvotes: 2

Related Questions