Search code examples
discord.pytimeoutpycord

Discord.py new timeout command error: "AttributeError: 'User' object has no attribute 'timeout_for'"


Hello all and happy new year 2022!!

Since the recent add of "timeouts" for discord, I have tried to make the timeout command following some tutorials like:

https://docs.pycord.dev/en/master/api.html?highlight=timeout#discord.Member.timeout

https://youtu.be/c5V4OaTNDtM

But I may get the following error for a reason I don't know:

Ignoring exception in command timeout2:
Traceback (most recent call last):
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 85, in wrapped
    ret = await coro(*args, **kwargs)
  File "/home/runner/Russia-Bot/moderator.py", line 42, in timeout2
    await member.timeout_for(time)
AttributeError: 'Member' object has no attribute 'timeout_for'

The above exception was the direct cause of the following exception:
    Traceback (most recent call last):
      File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/bot.py", line 939, in invoke
        await ctx.command.invoke(ctx)
      File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 863, in invoke
        await injected(*ctx.args, **ctx.kwargs)
      File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 94, in wrapped
        raise CommandInvokeError(exc) from exc
    discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'Member' object has no attribute 'timeout_for'

Here's the command code, i have made 2 different commands but both give the same issue:

Variant 1:

@client.command()
async def timeout(ctx, member: discord.Member, time=None, reason=None):
  time = humanfriendly.parse_timespan(time)
  await member.timeout(until = discord.utils.utcnow() + datetime.timedelta(seconds=time), reason=reason)
  await ctx.send (f"{member} callate un rato anda {time}")

Variant 2

@client.command(pass_context =True)
async def timeout2(ctx, member:discord.User=None, time=None):
  #time = humanfriendly.parse_timespan(time)
 # tiempo = datetime.timedelta(seconds=time)
  user = await client.fetch_user(member)
  #await ctx.send (f"{user}")
  #await ctx.send (f"{member}")

  await user.timeout_for(time)
  await ctx.send (f"{user} callate un rato anda {time}")

Best Regards, Engineer


Solution

  • Update your py-cord library by using pip install -U git+https://github.com/pycord-development/pycord

    If works , pls consider accepting answer