Files
contest-assistant/bot/helpers.py
Xevion 63f4c594b7 Improved 'leaderboard' command embed formatting
- Added proper vote count to leaderboard
- Supported shared rankings in leaderboard
- New generator in helpers 'ending_iterator'
2021-02-18 09:31:16 -06:00

47 lines
1.6 KiB
Python

import datetime
from typing import Any, Generator, List, Union
import discord
from bot import constants
def is_upvote(emoji: Union[discord.Emoji, discord.PartialEmoji, str]) -> bool:
"""Helper function for checking if the emoji returned is the upvote emoji the bot looks for."""
if isinstance(emoji, (discord.Emoji, discord.PartialEmoji)):
if emoji.id == constants.Emoji.UPVOTE:
return True
return False
def general_embed(title: str = '', message: str = '', color: discord.Color = constants.GENERAL_COLOR,
timestamp: bool = False) -> discord.Embed:
"""A generic mostly unstyled embed with a blue color."""
return discord.Embed(title=title, description=message, timestamp=datetime.datetime.utcnow() if timestamp else discord.Embed.Empty,
color=color)
def error_embed(*args, **kwargs):
"""A generic embed with a light red color."""
kwargs['color'] = constants.ERROR_COLOR
return general_embed(*args, **kwargs)
def success_embed(*args, **kwargs):
"""A generic embed with a light green color."""
kwargs['color'] = constants.SUCCESS_COLOR
return general_embed(*args, **kwargs)
def ending_iterator(items: List[Any]) -> Generator[Any, None, None]:
"""A generator which iterates along the list until it reaches the end, where it continuously yields the final item forever."""
index = 0
length = len(items) - 1
last = items[-1]
while True:
if index == length:
yield last
else:
yield items[index]
index += 1