Module aethersprite.extensions.base.wipe
Wipe channel extension
Functions
async def on_raw_reaction_add(payload: discord.raw_models.RawReactionActionEvent)
-
Expand source code
async def on_raw_reaction_add(payload: RawReactionActionEvent): """Handle on_reaction_add event.""" assert bot.user assert payload.member assert payload.member.guild if ( payload.user_id == bot.user.id or payload.guild_id not in wipes or wipes[payload.guild_id] != payload.message_id ): return channel: TextChannel = payload.member.guild.get_channel( payload.channel_id # type: ignore ) msg: Message = await channel.fetch_message(payload.message_id) perms = channel.permissions_for(payload.member) if not perms.manage_messages: await msg.remove_reaction(payload.emoji, payload.member) return if payload.emoji.name == PROHIBITED: log.info(f"{payload.member} canceled wipe in {channel}") await msg.delete() del wipes[payload.guild_id] return if payload.emoji.name != CHECK_MARK: await msg.remove_reaction(payload.emoji, payload.member) return log.info(f"{payload.member} began wipe in {channel}") del wipes[payload.guild_id] # stop after a million just to be safe? for _ in range(1_000_000): done = True log.info(f"Deleting up to 100 messages in {channel}") async for m in channel.history(limit=100): done = False await m.delete() if done: break log.info(f"{payload.member} finished wiping {channel}")
Handle on_reaction_add event.
async def setup(bot: discord.ext.commands.bot.Bot)
-
Expand source code
async def setup(bot: Bot): bot.add_command(wipe) bot.add_listener(on_raw_reaction_add)