import logging from discord.ext import commands LOGGER = logging.getLogger("Discord_Radio_Bot.LinkCop") class ClearMessages(commands.Cog): def __init__(self, bot): self.Bot = bot @commands.command(name='clear', help="Use this command to clear a given number of messages from the channel it is called in.\n" "There is a limit of 100 messages. Please be patient, it may take a while to process a large request." "Example command:\n" "\t@ clear\n" "\t@ clear 10", breif="Clear x messages in the channel it's called in") async def clear(self, ctx, amount=2): member = ctx.author.display_name member_id = ctx.author.id mtn_member = f"<@{member_id}>" if isinstance(amount, int): if not amount > 0: ctx.channel.send(f"{member}, the number needs to be positive...") else: LOGGER.info(f"Clear {amount} messages requested by {member}") authors = {} async for message in ctx.channel.history(limit=amount): if message.author not in authors: authors[message.author] = 1 else: authors[message.author] += 1 await message.delete() msg = f"{mtn_member}, I deleted {sum(authors.values())} messages from {len(authors.keys())} users:\n" LOGGER.debug(f"Deleted {sum(authors.values())} messages from {ctx.message.channel}") for author in authors.keys(): msg += f"\t{str(author).split('#', 1)[0]}: {authors[author]}\n" LOGGER.debug(f"Deleted {authors[author]} messages from {author}") await ctx.channel.send(msg) else: ctx.channel.send(f"{member}, you should check out the 'help' section...") def setup(bot: commands.Bot): bot.add_cog(ClearMessages(bot))