async def get_fleet_users_stars_from_info(ctx: commands.Context, fleet_info: dict, fleet_users_infos: dict, retrieved_date: datetime = None, as_embed: bool = settings.USE_EMBEDS) -> list: fleet_name = fleet_info[FLEET_DESCRIPTION_PROPERTY_NAME] division = lookups.DIVISION_DESIGN_ID_TO_CHAR[fleet_info[top.DIVISION_DESIGN_KEY_NAME]] fleet_users_infos = util.sort_entities_by(list(fleet_users_infos.values()), [('AllianceScore', int, True), (user.USER_KEY_NAME, int, False)]) fleet_users_infos_count = len(fleet_users_infos) title = f'{fleet_name} member stars (division {division})' lines = [] for i, user_info in enumerate(fleet_users_infos, 1): stars = user_info['AllianceScore'] user_name = util.escape_markdown(user_info[user.USER_DESCRIPTION_PROPERTY_NAME]) fleet_membership = user_info.get('AllianceMembership') if i < fleet_users_infos_count: difference = int(user_info['AllianceScore']) - int(fleet_users_infos[i]['AllianceScore']) else: difference = 0 user_rank = lookups.get_lookup_value_or_default(lookups.ALLIANCE_MEMBERSHIP, fleet_membership, default=fleet_membership) lines.append(f'**{i}.** {stars} (+{difference}) {emojis.star} {user_name} ({user_rank})') footer_text = util.get_historic_data_note(retrieved_date) if as_embed: colour = util.get_bot_member_colour(ctx.bot, ctx.guild) icon_url = await sprites.get_download_sprite_link(fleet_info.get('AllianceSpriteId')) result = util.create_basic_embeds(title, description=lines, colour=colour, icon_url=icon_url, footer=footer_text) return result else: if retrieved_date is not None: lines.append(f'```{footer_text}```') return lines
def get_fleet_users_stars_from_info(fleet_info: dict, fleet_users_infos: dict, retrieved_date: datetime = None) -> list: fleet_name = fleet_info[FLEET_DESCRIPTION_PROPERTY_NAME] division = lookups.DIVISION_DESIGN_ID_TO_CHAR[ fleet_info['DivisionDesignId']] fleet_users_infos = util.sort_entities_by(list( fleet_users_infos.values()), [('AllianceScore', int, True), (user.USER_KEY_NAME, int, False)]) fleet_users_infos_count = len(fleet_users_infos) lines = [f'**{fleet_name} member stars (division {division})**'] for i, user_info in enumerate(fleet_users_infos, 1): stars = user_info['AllianceScore'] user_name = util.escape_markdown( user_info[user.USER_DESCRIPTION_PROPERTY_NAME]) if i < fleet_users_infos_count: difference = int(user_info['AllianceScore']) - int( fleet_users_infos[i]['AllianceScore']) else: difference = 0 lines.append( f'**{i}.** {stars} (+{difference}) {emojis.star} {user_name}') if retrieved_date is not None: lines.append(util.get_historic_data_note(retrieved_date)) return lines
def get_name_at_username(self, escape_markdown=False): if self.username: result = "{} @{}".format(self.name, self.username) else: result = self.name if escape_markdown: return escape_markdown(result) return result
def _get_division_stars_as_text(division_letter: str, fleet_infos: list) -> list: lines = [f'__**Division {division_letter.upper()}**__'] fleet_infos = util.sort_entities_by(fleet_infos, [('Score', int, True)]) fleet_infos_count = len(fleet_infos) for i, fleet_info in enumerate(fleet_infos, start=1): fleet_name = util.escape_markdown(fleet_info['AllianceName']) if 'Trophy' in fleet_info.keys(): trophies = fleet_info['Trophy'] trophy_str = f' ({trophies} {emojis.trophy})' else: trophy_str = '' stars = fleet_info['Score'] if i < fleet_infos_count: difference = int(stars) - int(fleet_infos[i]['Score']) else: difference = 0 lines.append(f'**{i:d}.** {stars} (+{difference}) {emojis.star} {fleet_name}{trophy_str}') return lines
def _get_top_captains_as_text(captain_data: dict, take: int = 100): headline = f'**Top {take} captains**' lines = [headline] position = 0 for entry in captain_data.values(): position += 1 name = util.escape_markdown(entry['Name']) trophies = entry['Trophy'] fleet_name = entry['AllianceName'] trophy_txt = f'{trophies} {emojis.trophy}' line = f'**{position}.** {name} ({fleet_name}): {trophy_txt}' lines.append(line) if position == take: break return lines
def _get_top_fleets_as_text(alliance_data: dict, take: int = 100): tourney_running = tourney.is_tourney_running() headline = f'**Top {take} fleets**' lines = [headline] position = 0 for entry in alliance_data.values(): position += 1 name = util.escape_markdown(entry['AllianceName']) trophies = entry['Trophy'] stars = entry['Score'] trophy_txt = f'{trophies} {emojis.trophy}' if tourney_running: stars_txt = f', {stars} {emojis.star}' else: stars_txt = '' line = f'**{position}.** {name} ({trophy_txt}{stars_txt})' lines.append(line) return lines
def get_creator_name(self): creator_name = self.players_names[0] return escape_markdown(creator_name)
def get_username(self, escape_markdown=True): if self.username is None: return None return utility.escape_markdown( self.username) if escape_markdown else self.name
def get_first_name(self, escape_markdown=True): return utility.escape_markdown( self.name) if escape_markdown else self.name
MSG_CONTINUE = "🔁 Vuoi continuare?" MSG_TOO_EARLY = "⏰ Troppo presto... prova a pensarci ancora un po'." MSG_SEND_PHOTO_NOT_DOCUMENT = "⛔️ Mandami l'immagine come *Foto* e non come documento." MSG_WRONG_INPUT_OLD_KEYBOARD = "⛔️ Input non valido, probabilmente hai premuto un tasto che non è più valido nell'interfaccia aggiornata. Sarai reindirizzato/a nella schermata iniziale." MSG_WRONG_INPUT_ONLY_TEXT_ACCEPTED = "⛔️ Input non valido, devi inserire solo del testo." MSG_WRONG_INPUT_USE_TEXT = '⛔ Input non valido, per favore inserisci del testo.' MSG_WRONG_INPUT_USE_TEXT_OR_BUTTONS = '⛔️ Input non valido, per favore inserisci del testo o usa i pulsanti 🎛' MSG_WRONG_INPUT_INSRT_NUMBER = '⛔️🔢 Input non valido, per favore inserisci un numero.' MSG_WRONG_INPUT_INSRT_NUMBER_BETWEEN = '⛔️🔢 Input non valido, per favore inserisci un numero da {} a {}.' MSG_WRONG_INPUT_USE_BUTTONS = '⛔️ Input non valido, per favore usa i pulsanti 🎛' MSG_WRONG_INPUT_USE_BUTTONS_TEXT_PHOTO = '⛔️ Input non valido, per favore usa i pulsanti, testo o immagini.' MSG_WRONG_BUTTON_INPUT = '⛔️ Input non valido, probabilmente hai premuto un tasto due volte.' MSG_INPUT_TOO_SHORT = '⛔️ Input troppo corto.' MSG_INPUT_CONTAINS_SPACE_OR_MARKDOWN = '⛔️ Input non può conotenere spazi o i caratteri: "{}".'.format( utility.escape_markdown(utility.MARKDOWN_CHARS)) MSG_INPUT_NO_MARKDOWN = '⛔️ Il testo non può contenere i caratteri: {}'.format( utility.escape_markdown(utility.MARKDOWN_CHARS)) MSG_COMMAND_NOT_RECOGNIZED = '⛔️ Comando non riconosciuto.' MSG_REFRESH_INTERFACE = "🤖 Il chatbot è stato aggiornato." ALL_BUTTONS_TEXT_LIST = [ v for k, v in globals().items() if k.startswith('BUTTON_') ] def text_is_button(text): return text in ALL_BUTTONS_TEXT_LIST
def get_name_and_id(self, escape_md=True): result = "{} ({})".format(self.name, self.serial_id) if escape_markdown: return escape_markdown(result) return result
def get_name(self, escape_md=True): if escape_md: return escape_markdown(self.name) return self.name
'it': '⛔️ Input non valido, per favore usa i pulsanti 🎛' } MSG_WRONG_BUTTON_INPUT = { 'en': '⛔️ Wrong input, you probably pressed a button twice.', 'it': '⛔️ Input non valido, probabilmente hai premuto un tasto due volte.' } MSG_INPUT_TOO_SHORT = { 'en': '⛔️ Input too short.', 'it': '⛔️ Input troppo corto.' } MSG_NAME_TOO_LONG = { 'en': '⛔️ Input too long, please insert a text with max {} characters.', 'it': '⛔️ Input troppo lungo, inserisci un nome con al massimo {} caratteri.' } MSG_GAME_NAME_ERROR = { 'en': '⛔️ Game name cannot contain spaces or the following characters: "{}".'.format(utility.escape_markdown(utility.MARKDOWN_CHARS_SLASH)), 'it': '⛔️ Il nome del gioco non può conotenere spazi o i caratteri: "{}".'.format(utility.escape_markdown(utility.MARKDOWN_CHARS_SLASH)) } MSG_INPUT_NO_MARKDOWN = { 'en': '⛔️ Input cannot contain the following characters: {}'.format(utility.escape_markdown(utility.MARKDOWN_CHARS)), 'it': '⛔️ Il testo non può contenere i caratteri: {}'.format(utility.escape_markdown(utility.MARKDOWN_CHARS)) } MSG_CHAT_MSG_NO_MARKDOWN = { 'en': '⛔️ The chat message cannot contain the following characters: {}'.format(utility.escape_markdown(utility.MARKDOWN_CHARS)), 'it': '⛔️ Il testo del messaggio non può contenere i caratteri: {}'.format(utility.escape_markdown(utility.MARKDOWN_CHARS)) } MSG_INPUT_NO_UNDERSCORES = { 'en': '⛔️ The text you have inserted does not contain the sequence of 3 underscores (\'___\').', 'it': '⛔️ Il testo inserito non contiene la sequenza di 3 trattini bassi (\'___\').' } MSG_INPUT_NO_SYNONYM = {