async def warn_note(self, ctx, user: typing.Union[discord.Member, discord.User], *, reason): """ Adds a warning to a user without DM'ing them Usage: .warnNote <user> <reason> :param ctx: context object :param user: user to add a note for :param reason: reason for the note """ attachments = [] if len(ctx.message.attachments) > 0: for i in ctx.message.attachments: attachments.append(await i.to_file()) if str(user.id) in self.warns: self.warns[str(user.id)].append(reason) else: self.warns[str(user.id)] = [reason] save_json(os.path.join("config", "warns.json"), self.warns) if isinstance(user, discord.Member): await ctx.send( "Warning added for " + user.display_name + " (" + str(user.id) + "), this is their " + make_ordinal(len(self.warns[str(user.id)])) + " warning" ) else: await ctx.send( "Warning added for " + user.name + " (" + str(user.id) + "), this is their " + make_ordinal(len(self.warns[str(user.id)])) + " warning" )
async def warn(self, ctx, member: discord.Member, *, reason): """ Warns a specific user for given reason Usage: .warn <member> <reason> :param ctx: context object :param member: member of the server to warn :param reason: reason to log and DM """ attachments = [] if len(ctx.message.attachments) > 0: for i in ctx.message.attachments: attachments.append(await i.to_file()) if len(reason) > 0: await member.send("You were warned in the " + ctx.guild.name + ". Reason:\n> " + reason, files=attachments) else: await ctx.send("No warning to send") return if str(member.id) in self.warns: self.warns[str(member.id)].append(reason) else: self.warns[str(member.id)] = [reason] save_json(os.path.join("config", "warns.json"), self.warns) await ctx.send( "Warning sent to " + member.display_name + " (" + str(member.id) + "), this is their " + make_ordinal(len(self.warns[str(member.id)])) + " warning" )