# -*- coding: utf-8 -*- import discord class DismissView(discord.ui.View): def __init__(self, author: discord.Member): super().__init__(timeout=1800) # 30 minute timeout self.author = author self.message: discord.Message = None async def interaction_check(self, interaction: discord.Interaction) -> bool: if interaction.user.id != self.author.id: await interaction.response.send_message("You are not authorized to dismiss this message.", ephemeral=True) return False return True @discord.ui.button(label="Dismiss", style=discord.ButtonStyle.grey, emoji="??") async def dismiss_button(self, interaction: discord.Interaction, button: discord.ui.Button): await self.message.delete() self.stop() async def on_timeout(self): if self.message: try: await self.message.delete() except (discord.NotFound, discord.Forbidden): pass # Message was already deleted or permissions are missing self.stop()