mirror of
https://github.com/neoarz/Syntrel.git
synced 2025-12-25 11:40:12 +01:00
feat(purge): make it able to purge specific user messages
This commit is contained in:
@@ -3,7 +3,6 @@ from discord import app_commands
|
||||
from discord.ext import commands
|
||||
from discord.ext.commands import Context
|
||||
|
||||
|
||||
def purge_command():
|
||||
@commands.hybrid_command(
|
||||
name="purge",
|
||||
@@ -11,16 +10,38 @@ def purge_command():
|
||||
)
|
||||
@commands.has_guild_permissions(manage_messages=True)
|
||||
@commands.bot_has_permissions(manage_messages=True)
|
||||
@app_commands.describe(amount="The amount of messages that should be deleted.")
|
||||
async def purge(self, context, amount: int):
|
||||
await context.send("Deleting messages...")
|
||||
purged_messages = await context.channel.purge(limit=amount + 1)
|
||||
@app_commands.describe(
|
||||
amount="The amount of messages that should be deleted.",
|
||||
user="The user whose messages should be deleted (optional)."
|
||||
)
|
||||
async def purge(self, context, amount: int, user: discord.Member = None):
|
||||
if context.interaction:
|
||||
await context.defer(ephemeral=True)
|
||||
|
||||
if user:
|
||||
deleted_count = 0
|
||||
|
||||
def check(message):
|
||||
nonlocal deleted_count
|
||||
if message.author == user and deleted_count < amount:
|
||||
deleted_count += 1
|
||||
return True
|
||||
return False
|
||||
|
||||
purged_messages = await context.channel.purge(limit=300, check=check)
|
||||
else:
|
||||
purged_messages = await context.channel.purge(limit=amount)
|
||||
|
||||
embed = discord.Embed(
|
||||
title="Purge",
|
||||
description=f"**{context.author}** cleared **{len(purged_messages)-1}** messages!",
|
||||
description=f"**{context.author}** cleared **{len(purged_messages)}** messages!" + (f" from **{user}**" if user else ""),
|
||||
color=0x7289DA,
|
||||
)
|
||||
embed.set_author(name="Moderation", icon_url="https://yes.nighty.works/raw/CPKHQd.png")
|
||||
await context.channel.send(embed=embed)
|
||||
|
||||
if context.interaction:
|
||||
await context.send(embed=embed, ephemeral=True)
|
||||
else:
|
||||
await context.send(embed=embed, delete_after=10)
|
||||
|
||||
return purge
|
||||
return purge
|
||||
Reference in New Issue
Block a user