async def on_ready(self): print(f'{self.bot.user} has connected to Discord!') print('Connected to guilds:') for guild in self.bot.guilds: print(f'\t-{guild.name}(id: {guild.id})') # initialise all members in the guild to the database for member in guild.members: if not member.bot: Users.add_guild(member.id, guild.id)
async def on_member_join(self, member): self.logger.info(f'{member.name} Joined Guild {member.guild.name}') # do nothing if it's a bot if member.bot: return Users.add_guild(member.id, member.guild.id) channel = member.guild.system_channel if channel is not None: await channel.send('It\'s Ya Boi {0.mention}.'.format(member))
async def topTen(self, ctx): self.logger.info( f'{ctx.author.name} getting Top 10 for: {ctx.guild.name}') # Get the top 10 users top_ten = Users.top_ten(ctx.guild.id) # Create an embed myEmbed = discord.Embed(title=f"{ctx.guild.name} Top Ten Members", color=0x0000ff) myEmbed.set_thumbnail(url=ctx.guild.icon_url) # Create a field for all the users for user in top_ten: member = ctx.guild.get_member(int(user['ID'])) if member is None: continue # prefer guild nicknames if member.nick is None: name = member.name else: name = member.nick myEmbed.add_field(name=name, value=f"Lvl: {user['level']}\n" f"Exp: {user['experience']}", inline=True) await ctx.send(embed=myEmbed)
async def removeWarning(self, ctx, member: discord.Member, id: int): self.logger.info(f'{ctx.author} Removing warning {id} for ' f'{member.name}') removed = Users.remove_warning(member.id, id) if removed: await ctx.send("Warning removed") else: await ctx.send("Warning ID not found")
async def editWarning(self, ctx, member: discord.Member, id: int, *, new_warning): self.logger.info(f'{ctx.author} editing warning {id} for ' f'{member.name}') edited = Users.edit_warning_text(member.id, id, new_warning) if edited: await ctx.send("Warning Edited") else: await ctx.send("Warning ID not found")
async def __do_xp_give(self, msg_content, author, channel): # Get the amount of xp gained for the message xp = XP.getXPFromMessage(msg_content) leveledUp, newLevel = Users.GiveXP(str(author.id), xp, channel.guild.id) # If the user leveled up, let them know and congratulate them if(leveledUp): await channel.send(f'Congratulations!!' f' {author.mention}' f' leveled up to lvl: {newLevel}')
async def userInfo(self, ctx, member: discord.Member = None): if (member is None): member = ctx.author self.logger.info(f'{ctx.author.name} getting info for: {member.name}') uInfo = Users.get_info(member.id, ctx.guild.id) myEmbed = discord.Embed(title=f"{member.name}'s info:", color=0x0000ff) myEmbed.set_thumbnail(url=member.avatar_url) for line in uInfo: sLine = line.split(':') myEmbed.add_field(name=sLine[0], value=sLine[1], inline=True) await ctx.send(embed=myEmbed)
async def getWarnings(self, ctx, member: discord.Member): self.logger.info(f'{ctx.author} Getting warnings for {member.name}' f' From {ctx.guild.name}') warnings = Users.get_warnings(member.id, ctx.guild.id) embedVar = discord.Embed(title=f"({len(warnings)}) Warnings for " f"{member.name}", color=0xff0000) for warn in warnings: embedVar.add_field(name=f"{warn['id']} - {warn['dateTime']}", value=warn['warning'], inline=False) await ctx.send(embed=embedVar)
async def expired_warning_timeout(self): now = datetime.now() # if it is 1AM check the warnings if now.hour == 1: self.logger.info("Clearing expired warnings") Users.clear_expired_warnings()
async def on_member_remove(self, member): self.logger.info(f'{member.name} Left Guild {member.guild.name}') Users.remove_guild(member.id, member.guild.id)
async def addWarning(self, ctx, member: discord.Member, *, warning: str): Users.add_warning(member.id, ctx.guild.id, warning) await ctx.send(f"You {member.mention} have been warnned!!") await self.getWarnings(ctx, member)