Skip to content

Commit 582f93c

Browse files
committed
modify scamkick to delete last day of messages
modify scamkick to delete last day of messages scans last 50 messages in channels to curtail unnecessary calls and rate limiting more stupid ban reasons scamkick testing in prod lel scamkick testing in prod lel [2] traceback who? maybe it's not searching by newest first
1 parent 61cebcc commit 582f93c

File tree

1 file changed

+35
-2
lines changed

1 file changed

+35
-2
lines changed

β€Žcogs/kickban.pyβ€Ž

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,20 +70,49 @@ async def kick_member(self, ctx: GuildContext, member: discord.Member, *, reason
7070
@commands.bot_has_permissions(kick_members=True)
7171
@commands.command(name="scamkick")
7272
async def scamkick(self, ctx: GuildContext, member: discord.Member):
73-
"""Kicks a user, logs automatically, informs of reason for kick."""
73+
"""Kicks a user, logs automatically, informs of reason for kick, and deletes their last 24h of messages."""
7474
if await check_bot_or_staff(ctx, member, "kick"):
7575
return
76+
7677
reason = "Sending or linking scams or spam content, and/or compromised account."
7778
msg = f"You were kicked from {ctx.guild.name}."
7879
msg += "\n\nYou were kicked because your account has been compromised and has sent spam or scams in the server."
7980
msg += "\n\nYou are able to rejoin the server, but please secure your account and consider adding two-factor authentication."
8081
await send_dm_message(member, msg, ctx)
82+
83+
after = discord.utils.utcnow() - datetime.timedelta(days=1)
84+
deleted_count = 0
85+
failures: list[str] = []
86+
87+
for channel in ctx.guild.text_channels:
88+
try:
89+
deleted = await channel.purge(
90+
limit=50,
91+
after=after,
92+
oldest_first=False,
93+
check=lambda m: m.author.id == member.id,
94+
reason=f"scamkick: {reason}",
95+
bulk=True,
96+
)
97+
deleted_count += len(deleted)
98+
99+
except (discord.Forbidden, discord.HTTPException) as e:
100+
status = getattr(e, "status", None)
101+
code = getattr(e, "code", None)
102+
failures.append(f"#{channel.name}: {type(e).__name__} (status={status}, code={code})")
103+
81104
try:
82105
await member.kick(reason=reason)
83106
except discord.errors.Forbidden:
84107
await ctx.send("πŸ’’ I don't have permission to do this.")
85108
return
86-
await ctx.send(f"{member} is now gone. πŸ‘Œ")
109+
110+
if failures:
111+
text = "⚠️ purge issues:\n" + "\n".join(failures)
112+
for i in range(0, len(text), 1800):
113+
await ctx.send("```" + text[i:i+1800] + "```")
114+
115+
await ctx.send(f"{member} is now gone, and I removed ~{deleted_count} messages from last 24h. πŸ‘Œ")
87116
await self.bot.logs.post_action_log(ctx.author, member, 'kick', reason=reason)
88117

89118
@is_staff("OP")
@@ -102,6 +131,10 @@ async def ban_member(self, ctx: GuildContext, member: discord.Member | discord.U
102131
f"{member} has encountered an error, and needs to close. πŸ‘",
103132
f"{member} is not responding, and has been terminated. πŸ‘",
104133
f"{member} ran into a problem and needs to restart. Please refer to my dick and balls for more information. πŸ‘",
134+
f"{member} has been defenestrated. πŸ‘",
135+
f"{member} was ejected, and was An Impostor. πŸ‘",
136+
f"{member} has been sent to Brazil. πŸ‘",
137+
f"{member} > /dev/null 2>&1 πŸ‘",
105138
f"{member} has been 360 noscoped on Rust. πŸ‘"]
106139
if await check_bot_or_staff(ctx, member, "ban"):
107140
return

0 commit comments

Comments
Β (0)