# ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ # ║ +-+-+-+-+-+-+-+-+ ║ # ║ |H|e|x|a|H|o|s|t| ║ # ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ # ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ # ║ discord ── https://discord.gg/hexahost ║ # ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ import discord from discord.ui import LayoutView, TextDisplay, Separator, Container, Button, ActionRow from discord.ext import commands from utils.cv2 import CV2, build_container from utils.config import STAFF_IDS class SuccessView(LayoutView): def __init__(self, member): super().__init__(timeout=None) self.member = member self.add_item( build_container( TextDisplay("**Message Sent**"), Separator(visible=True), TextDisplay( f"✅ Your message has been successfully sent to **{member.name}**" ), ) ) class ErrorView(LayoutView): def __init__(self, member): super().__init__(timeout=None) self.member = member self.add_item( build_container( TextDisplay("**Delivery Failed**"), Separator(visible=True), TextDisplay( f"❌ Could not send the message. **{member.name}** may have their DMs disabled." ), ) ) class GenericErrorView(LayoutView): def __init__(self, error): super().__init__(timeout=None) self.error = error self.add_item( build_container( TextDisplay("**Error Occurred**"), Separator(visible=True), TextDisplay(f"🤔 Something went wrong. Error: {error}"), ) ) class PermissionErrorView(LayoutView): def __init__(self): super().__init__(timeout=None) self.add_item( build_container( TextDisplay("**Permission Denied**"), Separator(visible=True), TextDisplay("❌ You do not have permission to use this command."), ) ) class StaffDMCog(commands.Cog): def __init__(self, bot): self.bot = bot @commands.hybrid_command(name="dmstaff") async def dm_staff(self, ctx, member: discord.Member, *, message: str): if ctx.author.id not in STAFF_IDS: view = PermissionErrorView() await ctx.reply(view=view) return try: embed = discord.Embed( title="📢 A Message from the Staff Team", description=message, color=0xFF0000, ) embed.set_footer(text=f"This message was sent by {ctx.author.name}.") await member.send(embed=embed) view = SuccessView(member) await ctx.reply(view=view) except discord.Forbidden: view = ErrorView(member) await ctx.reply(view=view) except Exception as e: view = GenericErrorView(str(e)) await ctx.reply(view=view) print(f"Error in dmstaff command: {e}") async def setup(bot): await bot.add_cog(StaffDMCog(bot))