async def _do_evolistmenu(self, ctx, sm): monsters = sm.alt_evos monsters.sort(key=lambda m: m.monster_id) emoji_to_embed = OrderedDict() for idx, m in enumerate(monsters): emoji = char_to_emoji(str(idx)) emoji_to_embed[emoji] = monsterToEmbed(m, self.get_emojis()) if m.monster_id == sm.monster_id: starting_menu_emoji = emoji return await self._do_menu(ctx, starting_menu_emoji, EmojiUpdater(emoji_to_embed), timeout=60)
async def _do_menu(self, ctx, starting_menu_emoji, emoji_to_embed): remove_emoji = self.menu.emoji['no'] emoji_to_embed[remove_emoji] = self.menu.reaction_delete_message try: result_msg, result_embed = await self.menu.custom_menu(ctx, EmojiUpdater(emoji_to_embed), starting_menu_emoji, timeout=20) if result_msg and result_embed: # Message is finished but not deleted, clear the footer result_embed.set_footer(text=discord.Embed.Empty) await self.bot.edit_message(result_msg, embed=result_embed) except Exception as ex: print('Menu failure', ex)
async def leaderskill(self, ctx, left_query: str, right_query: str = None, *, bad=None): """Display the multiplier and leaderskills for two monsters If either your left or right query contains spaces, wrap in quotes. e.g.: ^leaderskill "r sonia" "b sonia" """ if bad: await ctx.send( inline('Too many inputs. Try wrapping your queries in quotes.') ) return # Handle a very specific failure case, user typing something like "uuvo ragdra" if ' ' not in left_query and right_query is not None and ' ' not in right_query and bad is None: combined_query = left_query + ' ' + right_query nm, err, debug_info = self._findMonster(combined_query) if nm and left_query in nm.prefixes: left_query = combined_query right_query = None left_m, left_err, _ = self.findMonster(left_query) if right_query: right_m, right_err, _ = self.findMonster(right_query) else: right_m, right_err, = left_m, left_err err_msg = '{} query failed to match a monster: [ {} ]. If your query is multiple words, wrap it in quotes.' if left_err: await ctx.send(inline(err_msg.format('Left', left_query))) return if right_err: await ctx.send(inline(err_msg.format('Right', right_query))) return emoji_to_embed = OrderedDict() emoji_to_embed[self.ls_emoji] = monstersToLsEmbed(left_m, right_m) emoji_to_embed[self.left_emoji] = monsterToEmbed( left_m, self.get_emojis()) emoji_to_embed[self.right_emoji] = monsterToEmbed( right_m, self.get_emojis()) await self._do_menu(ctx, self.ls_emoji, EmojiUpdater(emoji_to_embed))