So it seems that my check is not working, I believe the function is setup correctly but I may be wrong how should I go about fixing this error?
@client.command()
@commands.check(is_server_owner)
async def serversetup(guild,ctx):
await guild.create_role(name='safe')
await ctx.send('Please put the safe role above the AntiNuke role so those people will not be punished by the antinuke! | Server is setup!')
Here is the error I am getting
Ignoring exception in command serversetup:
Traceback (most recent call last):
File "/home/runner/AntiNuke/venv/lib/python3.8/site-packages/discord/ext/commands/bot.py", line 939, in invoke
await ctx.command.invoke(ctx)
File "/home/runner/AntiNuke/venv/lib/python3.8/site-packages/discord/ext/commands/core.py", line 855, in invoke
await self.prepare(ctx)
File "/home/runner/AntiNuke/venv/lib/python3.8/site-packages/discord/ext/commands/core.py", line 778, in prepare
raise CheckFailure('The check functions for command {0.qualified_name} failed.'.format(self))
discord.ext.commands.errors.CheckFailure: The check functions for command serversetup failed.
Here is the is_server_owner function
def is_server_owner(ctx):
return ctx.message.author.id == ctx.guild.owner
The problem is that in your check
you check whether the id
of the author is the same as the object of the guild owner, so it will always return false
. To fix this, simply change ctx.message.author.id
to ctx.message.author
.