async def warn(self, ctx, member: discord.Member, *, reason): """ Warns a member. Reason length is maximum of 200 characters. """ if len(reason) > 200: await ctx.send( embed=failure("Please shorten the reason to 200 characters."), delete_after=3) return embed = infraction_embed(ctx, member, constants.Infraction.warning, reason) embed.add_field( name="**NOTE**", value=("If you are planning to repeat this again, " "the mods may administer punishment for the action.")) try: await self.bot.api_client.add_member_warning( ctx.author.id, member.id, reason) except Exception as e: msg = "Could not apply warning, problem with API." logger.info(f"{msg} {e}") await ctx.send(embed=failure( f"{msg}\nInfraction member should not think he got away.")) else: await self.deterrence_log_channel.send(f"{member.mention}", delete_after=0.5) await self.deterrence_log_channel.send(embed=embed) await ctx.send(embed=success("Warning successfully applied.", ctx.me), delete_after=5) await asyncio.sleep(5) await ctx.message.delete()
async def kick(self, ctx, member: discord.Member, *, reason="No specific reason"): """Kicks member from the guild.""" await member.kick(reason=reason) await ctx.send(embed=success(f"{member.name} successfully kicked."), delete_after=5) deterrence_embed = infraction_embed(ctx, member, constants.Infraction.kick, reason) await self.deterrence_log_channel.send(embed=deterrence_embed) dm_embed = deterrence_embed dm_embed.add_field( name="Repeal", value="If this happened by a mistake contact moderators." ) await member.send(embed=dm_embed)
async def _ban_helper(self, ctx: commands.Context, member: Union[GetFetchUser, User, Member], reason: str): await ctx.guild.ban(member, reason=reason) deterrence_embed = infraction_embed(ctx, member, constants.Infraction.ban, reason) await self.deterrence_log_channel.send(embed=deterrence_embed) dm_embed = deterrence_embed dm_embed.add_field( name="Repeal", value="If this happened by a mistake contact moderators.") try: await member.send(embed=dm_embed) except discord.Forbidden: pass # ignore closed DMs
async def ban(self, ctx, user: GetFetchUser, *, reason="Reason not stated."): """Bans member from the guild.""" await ctx.guild.ban(user=user, reason=reason) await ctx.send(embed=success(f"{user} successfully banned."), delete_after=5) deterrence_embed = infraction_embed(ctx, user, constants.Infraction.ban, reason) await self.deterrence_log_channel.send(embed=deterrence_embed) dm_embed = deterrence_embed dm_embed.add_field( name="Repeal", value="If this happened by a mistake contact moderators.") await user.send(embed=dm_embed)