Created quiz leaderboard
This commit is contained in:
@@ -11,7 +11,7 @@ class Leaderboards(commands.Cog):
|
||||
async def top(self, ctx, *args):
|
||||
pass
|
||||
|
||||
def create_leaderboard_embed(self, title, column, time=False):
|
||||
async def create_leaderboard_embed(self, title, column, time=False):
|
||||
|
||||
def seconds_to_time(s):
|
||||
t = timedelta(seconds=s)
|
||||
@@ -27,9 +27,19 @@ class Leaderboards(commands.Cog):
|
||||
res += f"{d.second}s".zfill(3)
|
||||
return res
|
||||
|
||||
playerdb = PlayerDBLinker()
|
||||
top_players = playerdb.get_stats(column)
|
||||
playerdb.close()
|
||||
if column == "quizWins":
|
||||
top_players = []
|
||||
quizplayersdb = QuizPlayersDB()
|
||||
for player in quizplayersdb.get_top_players():
|
||||
discorduser = {}
|
||||
discorduser["playerName"] = (await self.client.fetch_user(player["discordid"])).name
|
||||
discorduser["stat"] = player["stat"]
|
||||
top_players.append(discorduser)
|
||||
quizplayersdb.close()
|
||||
else:
|
||||
playerdb = PlayerDBLinker()
|
||||
top_players = playerdb.get_stats(column)
|
||||
playerdb.close()
|
||||
embed = discord.Embed()
|
||||
embed.colour = discord.Colour.orange()
|
||||
embed.set_author(name="Top")
|
||||
@@ -50,35 +60,48 @@ class Leaderboards(commands.Cog):
|
||||
|
||||
@top.command(name="broken", case_insensitive=True)
|
||||
async def top_broken(self, ctx):
|
||||
await ctx.send(embed=self.create_leaderboard_embed("Broken blocks", "brokenBlocks"))
|
||||
embed = await self.create_leaderboard_embed("Broken blocks", "brokenBlocks")
|
||||
await ctx.send(embed=embed)
|
||||
|
||||
@top.command(name="kills", case_insensitive=True)
|
||||
async def top_kills(self, ctx):
|
||||
await ctx.send(embed=self.create_leaderboard_embed("Kills", "pvpKills"))
|
||||
embed = await self.create_leaderboard_embed("Kills", "pvpKills")
|
||||
await ctx.send(embed=embed)
|
||||
|
||||
@top.command(name="deaths", case_insensitive=True)
|
||||
async def top_deaths(self, ctx):
|
||||
await ctx.send(embed=self.create_leaderboard_embed("Deaths", "pvpDeaths"))
|
||||
embed = await self.create_leaderboard_embed("Deaths", "pvpDeaths")
|
||||
await ctx.send(embed=embed)
|
||||
|
||||
@top.command(name="level", case_insensitive=True)
|
||||
async def top_level(self, ctx):
|
||||
await ctx.send(embed=self.create_leaderboard_embed("Level", "playerLevel"))
|
||||
embed = await self.create_leaderboard_embed("Level", "playerLevel")
|
||||
await ctx.send(embed=embed)
|
||||
|
||||
@top.command(name="placed", case_insensitive=True)
|
||||
async def top_placed(self, ctx):
|
||||
await ctx.send(embed=self.create_leaderboard_embed("Placed blocks", "placedBlocks"))
|
||||
embed = await self.create_leaderboard_embed("Placed blocks", "placedBlocks")
|
||||
await ctx.send(embed=embed)
|
||||
|
||||
@top.command(name="playedtime", aliases=["onlinetime"], case_insensitive=True)
|
||||
async def top_playedtime(self, ctx):
|
||||
await ctx.send(embed=self.create_leaderboard_embed("Played time", "onlineTime", time=True))
|
||||
embed = await self.create_leaderboard_embed("Played time", "onlineTime", time=True)
|
||||
await ctx.send(embed=embed)
|
||||
|
||||
@top.command(name="sailed", case_insensitive=True)
|
||||
async def top_sailed(self, ctx):
|
||||
await ctx.send(embed=self.create_leaderboard_embed("Sailed", "waterTravelledBlocks"))
|
||||
embed = await self.create_leaderboard_embed("Sailed", "waterTravelledBlocks")
|
||||
await ctx.send(embed=embed)
|
||||
|
||||
@top.command(name="walked", case_insensitive=True)
|
||||
async def top_walked(self, ctx):
|
||||
await ctx.send(embed=self.create_leaderboard_embed("Walked", "travelledBlocks"))
|
||||
embed = await self.create_leaderboard_embed("Walked", "travelledBlocks")
|
||||
await ctx.send(embed=embed)
|
||||
|
||||
@top.command(name="quiz", case_insensitive=True)
|
||||
async def top_quiz(self, ctx):
|
||||
embed = await self.create_leaderboard_embed("Quiz wins", "quizWins")
|
||||
await ctx.send(embed=embed)
|
||||
|
||||
|
||||
def setup(client):
|
||||
|
||||
@@ -77,6 +77,12 @@ class QuizPlayersDB:
|
||||
cursor.execute(sql)
|
||||
self.discorddbconn.get_db().commit()
|
||||
|
||||
def get_top_players(self, 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)}"
|
||||
cursor.execute(sql)
|
||||
return list(cursor.fetchall())
|
||||
|
||||
def close(self):
|
||||
self.discorddbconn.close()
|
||||
|
||||
@@ -209,7 +215,6 @@ class PlayerDBLinker:
|
||||
serverdb_cursor.execute(sql)
|
||||
return list(serverdb_cursor.fetchall())
|
||||
|
||||
|
||||
def close(self):
|
||||
self.discorddbconn.close()
|
||||
self.serverdbconn.close()
|
||||
|
||||
Reference in New Issue
Block a user