pythondiscorddiscord.pypurge

(No errors btw) Why isnt my purge command working?


@bot.command()
async def purge(ctx, limit=100, member: discord.Member=None):
  await ctx.message.delete()
  msg = []
  for m in ctx.channel.history():
    if m.author == member:
      msg.append(m)
  await ctx.channel.delete_messages(msg)

heres my code, this is a purge command with discord.py. Im trying to make it so it purges the message of someone you mention. Any help?


Solution

  • The reason this isn't working is because ctx.channel.history() is an async function, so you'll have to use the async keyword before the loop. Like this:

    @bot.command()
    async def purge(ctx, limit=100, member: discord.Member=None):
      await ctx.message.delete()
      msg = []
      async for m in ctx.channel.history():
        if m.author == member:
          msg.append(m)
      await ctx.channel.delete_messages(msg)
    

    You can also just use the purge function with a lambda instead. If you were to go that route, your code would look like this:

    @bot.command()
    async def purge(ctx, limit=100, member: discord.Member=None):
      await ctx.message.delete()
      deleted = await ctx.channel.purge(limit=100, check=lambda msg: msg.author == member)
      await ctx.channel.send('Deleted {} message(s)'.format(len(deleted)))