diff --git a/cogs/info.py b/cogs/info.py new file mode 100644 index 0000000..a20a97c --- /dev/null +++ b/cogs/info.py @@ -0,0 +1,28 @@ +import discord +from discord.ext import commands +from mcstatus import MinecraftServer + +class ServerInfo(commands.Cog): + def __init__(self, client): + self.client = client + + @commands.command(name="info") + async def info(self, ctx): + port = "25201" + ip = "81.82.224.207" + server = MinecraftServer.lookup(f"{ip}:{port}") + # List of colours for the amount of servers that are online + + embed = discord.Embed() + embed.set_author(name="Info") + embed.colour = discord.Colour.orange() + embed.add_field(name="Ip", value=f"play.worldcraft.us", inline=False) + embed.add_field(name="Dynmap", value=f"https://map.worldcraft.us/", inline=False) + embed.add_field(name="Online", value=f"There are **{server.status().players.online}** players online!", inline=False) + + await ctx.send(embed=embed) + + + +def setup(client): + client.add_cog(ServerInfo(client)) diff --git a/cogs/leaderboards.py b/cogs/leaderboards.py index 53b33b8..0b75a6a 100755 --- a/cogs/leaderboards.py +++ b/cogs/leaderboards.py @@ -31,7 +31,25 @@ class Leaderboards(commands.Cog): if column == "quizWins": top_players = [] quizplayersdb = QuizPlayersDB() - for player in quizplayersdb.get_top_players(): + for player in quizplayersdb.get_top_players("wins"): + discorduser = {} + discorduser["playerName"] = deEmojify((await self.client.fetch_user(player["discordid"])).name).strip() + discorduser["stat"] = player["stat"] + top_players.append(discorduser) + quizplayersdb.close() + elif column == "max_streak": + top_players = [] + quizplayersdb = QuizPlayersDB() + for player in quizplayersdb.get_top_players("max_streak"): + discorduser = {} + discorduser["playerName"] = deEmojify((await self.client.fetch_user(player["discordid"])).name).strip() + discorduser["stat"] = player["stat"] + top_players.append(discorduser) + quizplayersdb.close() + elif column == "streak_count": + top_players = [] + quizplayersdb = QuizPlayersDB() + for player in quizplayersdb.get_top_players("streak_count"): discorduser = {} discorduser["playerName"] = deEmojify((await self.client.fetch_user(player["discordid"])).name).strip() discorduser["stat"] = player["stat"] @@ -104,6 +122,16 @@ class Leaderboards(commands.Cog): embed = await self.create_leaderboard_embed("Quiz wins", "quizWins") await ctx.send(embed=embed) + @top.command(name="streak", case_insensitive=True) + async def top_streak(self, ctx): + embed = await self.create_leaderboard_embed("Longest streak", "max_streak") + await ctx.send(embed=embed) + + @top.command(name="streakcount", case_insensitive=True) + async def top_streak_count(self, ctx): + embed = await self.create_leaderboard_embed("Streak count", "streak_count") + await ctx.send(embed=embed) + def setup(client): client.add_cog(Leaderboards(client)) diff --git a/data/DatabaseConnection.py b/data/DatabaseConnection.py index f160ea4..7aa806d 100755 --- a/data/DatabaseConnection.py +++ b/data/DatabaseConnection.py @@ -98,9 +98,9 @@ class QuizPlayersDB: cursor.execute(sql) self.discorddbconn.get_db().commit() - def get_top_players(self, limit = 20): + def get_top_players(self, column, limit = 20): cursor = self.discorddbconn.get_cursor(dictionary=True) - sql = f"SELECT discordid, wins as stat FROM {self.tablename} ORDER BY wins DESC LIMIT {str(limit)}" + sql = f"SELECT discordid, {column} as stat FROM {self.tablename} ORDER BY {column} DESC LIMIT {str(limit)}" cursor.execute(sql) return list(cursor.fetchall())