@@ -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 \n You were kicked because your account has been compromised and has sent spam or scams in the server."
7980 msg += "\n \n You 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