commit 2aa6e6832241ce1f1c18bcd508b84fa0f34b0f53
parent a9a27d212bb1fb0e3e09664f9b6bd01420d3db76
Author: AsherMorgan <59518073+AsherMorgan@users.noreply.github.com>
Date: Tue, 23 Mar 2021 13:23:27 -0700
Allow users to use mentions in leaderboard command
Diffstat:
| M | bot.py | | | 43 | ++++++++++++++++++++----------------------- |
1 file changed, 20 insertions(+), 23 deletions(-)
diff --git a/bot.py b/bot.py
@@ -995,37 +995,34 @@ async def leaderboard(ctx, user=None):
embed.add_field(name="Numbers", value=rules, inline=True)
embed.add_field(name="Points", value=values, inline=True)
else:
- try:
- rank = int(user) - 1 # zero-based rank
- if (rank < 0 or rank >= len(leaderboard)):
- embed.color = COLORS["error"]
- embed.description = f"Invalid rank: `{rank+1}`"
- await ctx.send(embed=embed)
- return
- except:
- # Get usernames from IDs
+ rank = None
+ if (re.match("^\d+$", user) and int(user) > 0 and int(user) <= len(leaderboard)):
+ # Get user from rank
+ rank = int(user) - 1
+ elif (re.match("^<@!\d+>$", user) and int(user[3:-1]) in [x["author"] for x in leaderboard]):
+ # Get user from mention
+ rank = [x["author"] for x in leaderboard].index(int(user[3:-1]))
+ else:
+ # Get user from username
for contributor in leaderboard:
- contributor["name"] = await getUsername(contributor["author"])
-
- # Find user
- temp = [x["name"].lower().startswith(user.lower()) for x in leaderboard]
- if (True not in temp):
- # Get nicknames from IDs
+ username = await getUsername(contributor["author"])
+ if (username.lower().startswith(user.lower())):
+ rank = leaderboard.index(contributor)
+
+ if (rank == None):
+ # Get user from nickname
for contributor in leaderboard:
- contributor["nick"] = await getNickname(channel["server"], contributor["author"])
-
- # Find user
- temp = [x["nick"].lower().startswith(user.lower()) for x in leaderboard]
- if (True not in temp):
+ nickname = await getNickname(channel["server"], contributor["author"])
+ if (nickname.lower().startswith(user.lower())):
+ rank = leaderboard.index(contributor)
+
+ if (rank == None):
# User not found
embed.color = COLORS["error"]
embed.description = f"User not found: `{user}`"
await ctx.send(embed=embed)
return
- # Get user rank
- rank = temp.index(True)
-
# Add description
embed.description = f"**Countdown Channel:** <#{id}>\n\n"
embed.description += f"**User:** <@{leaderboard[rank]['author']}>\n"