diff options
author | Samot19 <81269200+Samot19@users.noreply.github.com> | 2021-04-01 04:02:10 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-01 04:02:10 +0000 |
commit | 13bd4e9a67ac4f8e38f973a52c8047ca9452f898 (patch) | |
tree | 5477d8c85aeef4c062d0a6e82ced608d1e3a4bfc /cogs | |
parent | 542c1459d57885a51204f7c583b5e5466eaabbb8 (diff) | |
download | steve-bot-13bd4e9a67ac4f8e38f973a52c8047ca9452f898.tar steve-bot-13bd4e9a67ac4f8e38f973a52c8047ca9452f898.tar.gz steve-bot-13bd4e9a67ac4f8e38f973a52c8047ca9452f898.tar.bz2 steve-bot-13bd4e9a67ac4f8e38f973a52c8047ca9452f898.tar.lz steve-bot-13bd4e9a67ac4f8e38f973a52c8047ca9452f898.tar.xz steve-bot-13bd4e9a67ac4f8e38f973a52c8047ca9452f898.tar.zst steve-bot-13bd4e9a67ac4f8e38f973a52c8047ca9452f898.zip |
Fair Leaderboard
As !fboard. Can be requested either by day or by streak.
Diffstat (limited to 'cogs')
-rwxr-xr-x | cogs/utils.py | 61 |
1 files changed, 53 insertions, 8 deletions
diff --git a/cogs/utils.py b/cogs/utils.py index f772e89..1635b33 100755 --- a/cogs/utils.py +++ b/cogs/utils.py @@ -517,14 +517,59 @@ class Utils(commands.Cog): f"{discord.utils.escape_mentions(ctx.message.author.display_name)} your timezone has been set to {timeZone}" ) - # TODO (this also needs a better name) - # @commands.cooldown(1, 20, commands.BucketType.guild) - # @commands.command() - # async def fairleaderboard(self, ctx, timeZone): - # """show fair leaderboard, ordered by streak, then days?""" - # # get fair object - # with open("fair.json", "r") as f: - # fair = json.load(f) + @commands.cooldown(2, 60, commands.BucketType.guild) + @commands.command() + async def fboard(self, ctx, requested: str = "streak"): + """Show fair leaderboard (day or streak).""" + # get fair object + with open("fair.json", "r") as f: + fair = json.load(f) + + #Detect people who didn't maintain their streak. + for user in fair: + tz = fair[user]["timezone"] + currentdate = datetime.datetime.now(timezone(tz)).date() + if fair[user]["date"] != str(currentdate) and fair[user]["date"] != str(currentdate-timedelta(1)) and fair[user]["streak"] != 1: + fair[user]["streak"] = 1 + fair[user]["date"] = str(currentdate) + await ctx.send(self.bot.get_user(int(user)).mention + ": You lost your streak! <:sad:716629485449117708>") + + with open("fair.json", "w") as f: + json.dump(fair, f, indent=4) + + leaderboard = [] + + #String the requested info with its respective user and store it in our list + if requested.lower() == "day": + for user in fair: + leaderboard.append(str(fair[user]["day"]) + user) + flag = "Day" + + elif requested.lower() == "streak": + for user in fair: + leaderboard.append(str(fair[user]["streak"]) + user) + flag = "Streak" + + else: + await ctx.send("Request the leaderboard by \"day\" or \"streak\".") + return + + #Sort the "info + user" strings as ints. + leaderboard.sort(reverse=True, key=int) + + text = "" + embed = discord.Embed(title="Fair Leaderboard", color=7853978, timestamp=ctx.message.created_at) + + #Get the top 10 entries and extract the info and user from each string + for i in range(10): + entry = leaderboard[i][:-18] + userstr = leaderboard[i][-18:] + text = text + f"{i+1}. {self.bot.get_user(int(userstr))}: {entry} \n" + + embed.add_field(name=flag, value=discord.utils.escape_mentions(text), inline=False) + + await ctx.send(embed=embed) + @commands.cooldown(1, 60, commands.BucketType.member) @commands.command() |