@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?
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)))