def embed(cls, state: MonsterListViewState): fields = [] if not cls.has_subqueries(state): fields.append( EmbedField( state.title, Box(*cls.monster_list(state.monster_list, state.current_monster_id, state.query_settings)))) else: cur_subq_id = None cur_mon_list = [] offset = 0 i = 0 for m in state.monster_list: subq_id = state.extra_info.get_subquery_mon(m.monster_id) if cur_mon_list and subq_id != cur_subq_id: title = MonsterHeader.box_with_emoji( state.extra_info.get_monster(cur_subq_id), query_settings=state.query_settings, link=False) fields.append( EmbedField( title, Box(*cls.monster_list(cur_mon_list, state.current_monster_id, state.query_settings, offset=offset)))) cur_mon_list = [] offset += i i = 0 cur_mon_list.append(m) cur_subq_id = subq_id i += 1 title = MonsterHeader.box_with_emoji( state.extra_info.get_monster(cur_subq_id), query_settings=state.query_settings, link=False) fields.append( EmbedField( title, Box(*cls.monster_list(cur_mon_list, state.current_monster_id, state.query_settings, offset=offset)))) fields.append( EmbedField(BoldText('Page'), Box('{} of {}'.format(state.current_page + 1, state.page_count)), inline=True)) return EmbedView(EmbedMain( title=cls.get_title(state), color=state.query_settings.embedcolor, ), embed_footer=embed_footer_with_state(state), embed_fields=fields)
def _pantheon_lines(monsters, base_monster, query_settings): if not len(monsters): return [] return [ MonsterHeader.box_with_emoji(mon, link=mon.monster_id != base_monster.monster_id, query_settings=query_settings) for mon in sorted(monsters, key=lambda x: int(x.monster_id)) ]
def _evo_lines(monsters, current_monster, query_settings): if not len(monsters): return [] return [ MonsterHeader.box_with_emoji( ae, link=ae.monster_id != current_monster.monster_id, query_settings=query_settings) for ae in sorted(monsters, key=lambda x: int(x.monster_id)) ]
def embed(state: LeaderSkillSingleViewState): ls = state.mon.leader_skill return EmbedView(embed_main=EmbedMain( title=ls_single_multiplier_text(ls), description=Box( BoldText( MonsterHeader.box_with_emoji( state.mon, query_settings=state.query_settings)), Text(ls.desc if ls else 'None')), color=state.query_settings.embedcolor), embed_footer=embed_footer_with_state(state))
def monster_list(cls, monsters: List["MonsterModel"], current_monster_id: int, query_settings: QuerySettings): if not len(monsters): return [] return [ MonsterHeader.box_with_emoji(mon, link=True, prefix=cls.get_emoji( i, current_monster_id), query_settings=query_settings) for i, mon in enumerate(monsters) ]
def mat_use_field(mons, title, max_mons=MAX_MONS_TO_SHOW, query_settings: Optional[QuerySettings] = None): text = None if len(mons) == 0: text = "None" elif len(mons) > max_mons: text = f"({len(mons) - max_mons} more monster{'s' if len(mons) - max_mons > 1 else ''}, see `^allmats` for full list)" return EmbedField( title, Box( *(MonsterHeader.box_with_emoji(em, query_settings=query_settings) for em in mons[:max_mons]), text))
def skillup_field(mons, sec, link, query_settings): text = None text2 = None if len(mons) == 0: text = "None" if sec: text2 = Box( f"({max(len(mons) - MAX_MONS_TO_SHOW, 0) + sec} ", LinkedText( f"more monster{'s' if max(len(mons) - MAX_MONS_TO_SHOW, 0) + sec > 1 else ''}", link), f", incl. {sec} alt evo{'s' if sec > 1 else ''})", delimiter="") elif len(mons) > MAX_MONS_TO_SHOW: text2 = f"({len(mons) - MAX_MONS_TO_SHOW} more monsters)" return EmbedField( "Skillups", Box( *(MonsterHeader.box_with_emoji(em, query_settings=query_settings) for em in mons[:MAX_MONS_TO_SHOW]), text, text2))