Skip to content

Commit

Permalink
Snipe update
Browse files Browse the repository at this point in the history
  • Loading branch information
stekc committed Sep 5, 2024
1 parent 3211bfd commit 0577ad7
Showing 1 changed file with 30 additions and 7 deletions.
37 changes: 30 additions & 7 deletions cogs/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,20 @@ def __init__(self, bot):
async def on_message_delete(self, message):
if not message.guild:
return
self.last_deleted_messages[message.channel.id] = message
if message.channel.id not in self.last_deleted_messages:
self.last_deleted_messages[message.channel.id] = []
self.last_deleted_messages[message.channel.id].append(message)

asyncio.create_task(self.remove_deleted_message(message.channel.id))
asyncio.create_task(self.remove_deleted_message(message.channel.id, message))

async def remove_deleted_message(self, channel_id):
await asyncio.sleep(60)
self.last_deleted_messages.pop(channel_id, None)
async def remove_deleted_message(self, channel_id, message):
await asyncio.sleep(120)
if channel_id in self.last_deleted_messages:
self.last_deleted_messages[channel_id] = [
m for m in self.last_deleted_messages[channel_id] if m.id != message.id
]
if not self.last_deleted_messages[channel_id]:
del self.last_deleted_messages[channel_id]

@commands.hybrid_command(
name="steal",
Expand Down Expand Up @@ -96,15 +103,17 @@ async def info(self, context: Context) -> None:
@commands.has_permissions(manage_messages=True)
@app_commands.guild_only()
async def snipe(self, context: Context) -> None:
message = self.last_deleted_messages.get(context.channel.id)
if message is None:
messages = self.last_deleted_messages.get(context.channel.id, [])
if not messages:
embed = discord.Embed(
description="There are no recently deleted messages in this channel.",
color=discord.Color.red(),
)
await context.send(embed=embed, ephemeral=True)
return

message = messages.pop()

embed = discord.Embed(
description=message.content,
color=await get_color(message.author.avatar.url),
Expand All @@ -115,6 +124,20 @@ async def snipe(self, context: Context) -> None:
)
embed.timestamp = message.created_at

if message.attachments:
embed.description += "\n\n-# These attachments will be removed by Discord soon, download them quickly."
attachment_list = []
for i, attachment in enumerate(message.attachments, 1):
attachment_list.append(f"[{attachment.filename}]({attachment.url})")
if i == 1:
embed.set_image(url=attachment.url)

embed.add_field(
name="Attachments" if len(message.attachments) > 1 else "Attachment",
value="\n".join(attachment_list),
inline=False,
)

await context.send(embed=embed)


Expand Down

0 comments on commit 0577ad7

Please sign in to comment.