async def _get_fields(ctx: RaidContext) -> List[Dict[str, str]]:
    raid_team = ctx.raid_event.roster.get_team()
    characters_by_status = {roster_status: [] for roster_status in RosterStatus}
    for character in raid_team:
        characters_by_status[character.get_roster_status()].append(character)

    fields = []
    for roster_status in [RosterStatus.Accept, RosterStatus.Undecided, RosterStatus.Extra]:
        characters = [char for char in characters_by_status[roster_status] if not (
                char.get_roster_status() == RosterStatus.Undecided and char.get_signup_status() == SignupStatus.Unknown)]
        if len(characters) > 0:
            fields.append(_get_title_for_roster_status(characters, roster_status))
            fields.extend(await DiscordMessage.show_characters(ctx=ctx, characters=characters))

    declined_characters = [char.name for char in characters_by_status[RosterStatus.Decline]]
    invited_but_not_signed_characters = [char.name for char in characters_by_status[RosterStatus.Undecided]
                                         if char.get_signup_status() == SignupStatus.Unknown]
    if len(invited_but_not_signed_characters) > 20:
        value = f'**Invited**: {", ".join(invited_but_not_signed_characters[:20])}, ...'
        fields.append(field(value, inline=False))
    elif len(invited_but_not_signed_characters) > 0:
        value = f'**Invited**: {", ".join(invited_but_not_signed_characters)}'
        fields.append(field(value, inline=False))
    if len(declined_characters) > 0:
        value = f'**Declined**: {", ".join(declined_characters)}'
        fields.append(field(value, inline=False))

    return fields
async def _get_fields(ctx: DokBotContext, player: Player) -> List[Dict[str, str]]:
    fields = []
    selected_char = player.get_selected_char()
    display_active_char = await ctx.bot.display_character(player.get_selected_char())
    fields.append(field(f'**Active character:**\n {display_active_char}', inline=False))
    other_chars = [char for char in player.characters if char != selected_char]
    if len(other_chars) > 0:
        display_other_chars = '\n'.join(
            ["**Other characters:**"] + [await ctx.bot.display_character(char) for char in other_chars])
        fields.append(field(display_other_chars, inline=False))
    return fields
Esempio n. 3
0
async def _get_fields(ctx: DokBotContext, actions: list) -> List[Dict[str, str]]:
    fields = []
    for action in actions:
        emoji = await ctx.bot.emoji(action.name)
        entry = "{0} {1}".format(emoji, action.value)
        fields.append(field(entry, inline=False))
    return fields
def _get_title_for_roster_status(characters: List[Character], roster_status: RosterStatus):
    title = {
        RosterStatus.Accept: "Roster",
        RosterStatus.Extra: "Standby",
        RosterStatus.Decline: "Declined",
        RosterStatus.Undecided: "Signees"
    }
    return field(f"**__{title[roster_status]}__** ({len(characters)})", inline=False)
 def _get_embed(self, content: str, options: List[str]):
     embed = {
         'title':
         content,
         'fields': [
             field('\n'.join(
                 [f'{i+1}:\t{option}' for i, option in enumerate(options)]),
                   inline=False)
         ],
         'color':
         2171428,
         'type':
         'rich'
     }
     return Embed.from_dict(embed)
def _alt_title_field(alts: List[Character]):
    value = f'__**Alts ({len(alts)})**__'
    return field(value, inline=False)
def _main_title_field(mains: List[Character]):
    value = f'__**Mains ({len(mains)})**__'
    return field(value, inline=False)