Exemplo n.º 1
0
 def submit_character(self, character: Character):
     if self._db.characters.find_one({'_id': self.user_id}) is not None:
         self.characters.append(character.to_dict())
         self._db.update_characters(self.user_id, self.characters)
     else:
         self.characters.append(character.to_dict())
         self._db.add_characters(
             self.user_id, {
                 'characters': self.characters,
                 'rank': self.rank,
                 'balance': self.bank
             })
Exemplo n.º 2
0
 def challenge_rating(self):
     total_level = 0
     for i, char in enumerate(self._selected_party.values()):
         if char.get('id'):
             char = self.user_area.get_character(id_=char.get('id'))
         else:
             char = self.user_area.get_character(search=char.get('name'))
         char = Character().from_dict(char)
         self._loaded_party[i] = char
         total_level += char.level
     return (total_level // 5) + 1
Exemplo n.º 3
0
    async def character(self, ctx):
        user_characters: UserCharacters = self.bot.cache.get(
            'characters', ctx.author.id)
        if user_characters is None:
            user_characters: UserCharacters = self.cool_down_checks.get(
                ctx.author.id, None)
            if user_characters is not None:
                rolls, expires = user_characters.rolls_left, user_characters.expires_in
            else:
                if ctx.has_voted(user_id=ctx.author.id):
                    rolls, expires = NON_VOTE_ROLLS + VOTE_ROLLS_MOD, None
                else:
                    rolls, expires = NON_VOTE_ROLLS, None
            user_characters = UserCharacters(user_id=ctx.author.id,
                                             database=self.database,
                                             rolls=rolls,
                                             expires_in=expires,
                                             callback=self.callback)
            self.bot.cache.store('characters', ctx.author.id, user_characters)

        if not Checks.has_rolls(user_characters):
            if not ctx.has_voted(user_id=ctx.author.id, force_db=True):
                return await ctx.send(
                    "<:HimeSad:676087829557936149> Oops! You dont have any more rolls left,"
                    " upvote Crunchy to get more rolls and other awesome perks!\n"
                    "https://top.gg/bot/656598065532239892/vote")
            else:
                if self.cool_down_checks.get(ctx.author.id):
                    return await ctx.send(
                        f"<:HimeSad:676087829557936149> Oops! You dont have any more rolls left,"
                        f" come back in {user_characters.expires_in} hours when ive found some more characters!"
                    )
                else:
                    user_characters.update_rolls(VOTE_ROLLS_MOD)

        c = random.choice(self.group)
        character_obj = Character(name=c['name'], icon=c['url'])
        embed = discord.Embed(title=character_obj.name, color=self.bot.colour)
        embed.set_image(url=character_obj.icon)
        embed.set_footer(
            text=f"You have {user_characters.rolls_left - 1} rolls left!")
        message = await ctx.send(embed=embed)
        user_characters.update_rolls(modifier=-1)
        await self.submit_wait_for(message, character_obj, user_characters,
                                   ctx.author, ctx.channel)
Exemplo n.º 4
0
    def __init__(self, bot, ctx: commands.Context, user_area: UserCharacters,
                 **options):
        self.bot = bot
        self.ctx = ctx
        self.user_area = user_area
        self._characters = list(
            map(lambda c: Character().from_dict(c), user_area.characters))

        amount, rem = divmod(len(self._characters), 10)
        if rem:
            amount += 1
        self._total_pages = amount - 1

        self._db = Database.db

        data = self._db.get_party(ctx.author.id)
        if data is not None:
            self._selected_party = data.get('party_choice')
        else:
            self._selected_party = {
                '0': {},
                '1': {},
                '2': {},
                '3': {},
            }
        self._users = []

        self._active_message = None
        self._pointer = 0
        self._page_no = 0
        self._temp_characters = []

        self.select_emoji = {
            '⬆️': self.up,
            '⬇️': self.down,
            '<:True:688518995997098063>': self.select,
            '<:False:688518995997098058>': self.un_select,
            '◀️': self.page_left,
            '▶️': self.page_right,
            '⚔️': self.confirm,
        }

        self._loaded_party = {}
Exemplo n.º 5
0
    async def character_details(self, ctx, *, character_name: str = None):
        if character_name is None:
            command = self.bot.get_command("viewcharacters")
            await ctx.send(
                "<:HimeSad:676087829557936149> You didnt give me anyone to get. Check your list here:"
            )
            return await command.invoke(ctx)

        user_area = UserCharacters(user_id=ctx.author.id,
                                   database=self.database)
        character_dict = user_area.get_character(search=character_name)
        if character_dict is None:
            return await ctx.send(
                "<:HimeSad:676087829557936149> Sorry! >_< I couldn't find that character "
                "in your area, Time to get rolling and collecting more!")

        character = Character().from_dict(character_dict)
        details = Display(self.bot, character, ctx)
        await ctx.send(embed=details.generate_pages())
        user_area.update_character(character)
Exemplo n.º 6
0
 def update_character(self, character: Character) -> Character:
     for i, char in enumerate(self.characters):
         if character.id == char['id']:
             self.characters[i] = character.to_dict()
     self._db.update_characters(self.user_id, self.characters)
     return character