Skip to content

Commit 7452d1e

Browse files
committed
feat: add bulk delete command for removing user messages in a channel
1 parent f997fa4 commit 7452d1e

File tree

4 files changed

+55
-0
lines changed

4 files changed

+55
-0
lines changed

bot.py

+46
Original file line numberDiff line numberDiff line change
@@ -1356,6 +1356,52 @@ async def mute(ctx, member: discord.Member, *, reason=None):
13561356
)
13571357

13581358

1359+
@bot.slash_command(
1360+
guild_only=True,
1361+
name="bulkdelete",
1362+
description="Removes all messages from a user in a channel",
1363+
)
1364+
@discord.default_permissions(manage_messages=True, )
1365+
async def bulkdelete(ctx, channel: discord.TextChannel, member: discord.Member, *, reason=None):
1366+
await SendMetric("builkdelete")
1367+
guild = ctx.guild
1368+
1369+
if reason == None:
1370+
reason = await GetTranslatedText(ctx.guild.id,
1371+
"punishment_default_reason")
1372+
1373+
1374+
await ctx.defer()
1375+
msgcount = 0
1376+
try:
1377+
# delete msg on channel from user
1378+
async for message in channel.history():
1379+
if message.author == member:
1380+
msgcount+=1
1381+
await message.delete()
1382+
except Exception as e:
1383+
await ctx.respond(
1384+
embed=ErrorEmbed(await GetTranslatedText(ctx.guild.id, "error_no_permission")),
1385+
ephemeral=True,
1386+
)
1387+
return
1388+
1389+
embed = discord.Embed(
1390+
title=await GetTranslatedText(ctx.guild.id,
1391+
"bulkdelete_title",
1392+
CHANNEL=channel,
1393+
MEMBER=filterMember(member)),
1394+
description=await GetTranslatedText(ctx.guild.id,
1395+
"bulkdelete_description",
1396+
CHANNEL=channel,
1397+
AMOUNT=msgcount,
1398+
MEMBER=filterMember(member),
1399+
REASON=reason),
1400+
colour=discord.Colour.red(),
1401+
)
1402+
await ctx.respond(embed=embed)
1403+
1404+
13591405
# description="Unmutes a specified user."
13601406
@bot.slash_command(
13611407
guild_only=True,

langs/cat.json

+3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"footer_executed_by": "Hammer | Comanda executada per {USERNAME}",
1717
"hello_command": "El Hammer ha tornat!",
1818
"error_deliver_msg": "No s'ha pogut lliurar el missatge a l'usuari {USERNAME}\n Això pot ser a causa que l'usuari sigui un bot, hagi bloquejat el bot o hagi desactivat els missatges directes. \n\n**Però l'usuari ha estat advertit** i s'ha guardat a la meva inoblidable base de dades.",
19+
"error_no_permission": "No tinc els permisos suficients per fer això :( :hammer:",
1920
"automod_warn_title": "{USERNAME} ha estat advertit! :hammer_pick:",
2021
"automod_warn_description": "L'usuari {USERNAME} ha estat advertit perquè ha dit una paraula obscena prohibida",
2122
"automod_warn_footer": "Hammer | Servei d'AutoMod",
@@ -68,6 +69,8 @@
6869
"setdelay_title": "Retard {M} a #{CHANNEL} :hammer_pick:",
6970
"for": "per ",
7071
"setdelay_description": "Aquest canal té ara un retard de **{SECONDS}** segons {REASON}",
72+
"bulkdelete_title": "Eliminació massiva a #{CHANNEL} de @{MEMBER} :hammer_pick:",
73+
"bulkdelete_description": "Tots els missatges de l'usuari @{MEMBER} han estat eliminats, hi havien {AMOUNT} missatges al canal #{CHANNEL}",
7174
"mute_title": "Usuari Silenciat: {MEMBER}",
7275
"mute_description": "L'usuari {MENTION} ha estat silenciat per {REASON}",
7376
"mute_msg": ":no_entry: Has estat silenciat de: {GUILD} per {REASON}",

langs/en.json

+3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"footer_executed_by": "Hammer | Command executed by {USERNAME}",
1717
"hello_command": "Hammer is back!",
1818
"error_deliver_msg": "Could not deliver the message to the user {USERNAME}\n This may be caused because the user is a bot, has blocked me or has the DMs turned off. \n\n**But the user is warned** and I have saved it into my beautiful unforgettable database",
19+
"error_no_permission": "I don't have enough permission to do that :( :hammer:",
1920
"automod_warn_title": "{USERNAME} has been warned! :hammer_pick:",
2021
"automod_warn_description": "The user {USERNAME} has been warned because said a banned swear word",
2122
"automod_warn_footer": "Hammer | Automod service",
@@ -68,6 +69,8 @@
6869
"setdelay_title": "Delay {M} on #{CHANNEL} :hammer_pick:",
6970
"for": "for ",
7071
"setdelay_description": "This channel now has a delay of **{SECONDS}** seconds {REASON}",
72+
"bulkdelete_title": "Bulk delete in #{CHANNEL} of @{MEMBER} :hammer_pick:",
73+
"bulkdelete_description": "All messages from user @{MEMBER} have been deleted, there were {AMOUNT} messages in the channel #{CHANNEL}",
7174
"mute_title": "User Muted: {MEMBER}",
7275
"mute_description": "User {MENTION} has been muted for {REASON}",
7376
"mute_msg": ":no_entry: You have been muted from: {GUILD} for {REASON}",

langs/es.json

+3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"footer_executed_by": "Hammer | Comando ejecutado por {USERNAME}",
1717
"hello_command": "¡Hammer ha vuelto!",
1818
"error_deliver_msg": "No se pudo entregar el mensaje al usuario {USERNAME}\n Esto puede deberse a que el usuario es un bot, me ha bloqueado o ha desactivado los MD. \n\n**Pero el usuario ha sido advertido** y lo he guardado en mi inolvidable y hermosa base de datos",
19+
"error_no_permission": "No tengo suficientes permisos para hacer eso :( :hammer:",
1920
"automod_warn_title": "¡{USERNAME} ha sido advertido! :hammer_pick:",
2021
"automod_warn_description": "El usuario {USERNAME} ha sido advertido por haber dicho una palabra prohibida",
2122
"automod_warn_footer": "Hammer | Servicio de AutoMod",
@@ -68,6 +69,8 @@
6869
"setdelay_title": "Retraso {M} en #{CHANNEL} :hammer_pick:",
6970
"for": "por ",
7071
"setdelay_description": "Este canal ahora tiene un retraso de **{SECONDS}** segundos por {REASON}",
72+
"bulkdelete_title": "Eliminación masiva en #{CHANNEL} de @{MEMBER} :hammer_pick:",
73+
"bulkdelete_description": "Todos los mensajes del usuario @{MEMBER} han sido eliminados, había {AMOUNT} mensajes en el canal #{CHANNEL}",
7174
"mute_title": "Usuario Silenciado: {MEMBER}",
7275
"mute_description": "El usuario {MENTION} ha sido silenciado por {REASON}",
7376
"mute_msg": ":no_entry: Has sido silenciado de: {GUILD} por {REASON}",

0 commit comments

Comments
 (0)