Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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))