Esempio n. 1
0
    async def my_characters(self, ctx, user: discord.User = None):
        if user is not None:
            user_ = user
            user_characters: UserCharacters = self.cool_down_checks.get(
                ctx.author.id, None)
            if user_characters is not None:
                rolls = user_characters.rolls_left
            else:
                if ctx.has_voted(user_id=ctx.author.id):
                    rolls = NON_VOTE_ROLLS + VOTE_ROLLS_MOD
                else:
                    rolls = NON_VOTE_ROLLS
            user_characters = UserCharacters(
                user_id=user.id,
                database=self.database,
                rolls=rolls,
                expires_in=self.cool_down_checks.get('expires_in', None),
                callback=self.callback)
            self.bot.cache.store('characters', user.id, user_characters)

        else:
            user_ = ctx.author
            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 = user_characters.rolls_left
                    expires = 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 user_characters.amount_of_items <= 0:
            embed = discord.Embed(color=self.bot.colour) \
                .set_footer(text="Hint: Vote for Crunchy on top.gg to get more perks!")
            embed.description = f"Oops! {'You' if user is None else 'They'} dont " \
                                f"have any collected characters,\n lets get them filling list!"
            embed.set_thumbnail(url=random.choice(SAD_URL))
            embed.set_author(name=f"{user_.name}'s collected characters",
                             icon_url=user_.avatar_url)
            return await ctx.send(embed=embed)
        else:
            embeds = await self.generate_embeds(user=user_,
                                                area=user_characters)
            if len(embeds) > 1:
                pager = Paginator(embed_list=embeds,
                                  bot=self.bot,
                                  message=ctx.message,
                                  colour=self.bot.colour)
                return self.bot.loop.create_task(pager.start())
            else:
                return await ctx.send(embed=embeds[0])
Esempio n. 2
0
    async def my_recommended(self, ctx, option=None):
        """ Get your or someone else's recommended list
            args:
                option - This can be any string but can only be valid as a bool
                         or a member to be used by the member converter but not Both.
                         In this case Member will always be picked over the cycle option.
        """

        cycle = False
        member = None

        if option is not None:
            cycle = option.lower() == "--cycle" or option.lower() == "-c"

            try:
                member = await convert_member(ctx, option)
            except commands.BadArgument:
                member = None

        if cycle:
            user_area = UserRecommended(user_id=ctx.author.id,
                                        database=self.bot.database)
            if user_area.amount_of_items <= 0:
                embed = discord.Embed(color=self.bot.colour) \
                    .set_footer(text="Hint: Vote for Crunchy on top.gg to get more perks!")
                embed.description = f"Oops! {'You' if member is None else 'They'} dont " \
                                    f"have anything in {'your' if member is None else 'their'} recommended,\n" \
                                    f" lets get filling it!"
                embed.set_thumbnail(url=random.choice(SAD_URL))
                embed.set_author(name=f"{ctx.author.name}'s {user_area.type}",
                                 icon_url=ctx.author.avatar_url)
                return await ctx.send(embed=embed)
            return await self.cycle_items(ctx, user_area)

        if member is not None:
            user_ = member
            user_area = UserRecommended(user_id=member.id,
                                        database=self.bot.database)
            if not user_area.is_public:
                return await ctx.send(
                    "Oops! This user has their recommended firewalled (Private)."
                )
        else:
            user_ = ctx.author
            user_area = UserRecommended(user_id=ctx.author.id,
                                        database=self.bot.database)
        if user_area.amount_of_items <= 0:
            embed = discord.Embed(color=self.bot.colour) \
                .set_footer(text="Hint: Vote for Crunchy on top.gg to get more perks!")
            embed.description = f"Oops! {'You' if member is None else 'They'} dont " \
                                f"have anything in {'your' if member is None else 'their'} recommended,\n" \
                                f" lets get filling it!"
            embed.set_thumbnail(url=random.choice(SAD_URL))
            embed.set_author(name=f"{user_.name}'s {user_area.type}",
                             icon_url=user_.avatar_url)
            return await ctx.send(embed=embed)
        else:
            embeds = await self.generate_embeds(user=user_, area=user_area)
            if len(embeds) > 1:
                pager = Paginator(embed_list=embeds,
                                  bot=self.bot,
                                  message=ctx.message,
                                  colour=self.bot.colour)
                return self.bot.loop.create_task(pager.start())
            return await ctx.send(embed=embeds[0])
Esempio n. 3
0
    async def help(self, ctx, sub_sec: str = None):
        if sub_sec is not None:
            return await self.get_sub_page(ctx, sub_sec)
        else:
            embed1 = discord.Embed(
                description=
                f"Do `{ctx.prefix}help <command> for more info on each command`",
                color=self.bot.colour)
            embed1.set_author(
                name=f"{ctx.author.name} - Crunchy's Commands: | Page 1 / 2",
                icon_url=ctx.author.avatar_url)
            f1 = f"<:discord:642859572524220427>  **General Commands**  <:discord:642859572524220427>\n" \
                 f"" + "\n".join(self.GENERAL_COMMANDS)

            f4 = f"<:gelati_cute:704784002355036190>  **Watch List Commands & Favourites**  <:gelati_cute:704784002355036190>\n" \
                 f"" + "\n".join(self.TRACKING_COMMANDS)

            f3_2 = f"⚙️  **User config**  ⚙️\n" \
                   f"" + "\n".join(self.CONFIG_COMMANDS)

            embed1.add_field(name="\u200b", value=f1, inline=False)
            embed1.add_field(name="\u200b", value=f4, inline=False)
            embed1.add_field(name="\u200b", value=f3_2, inline=False)

            embed2 = discord.Embed(
                description=
                f"Do `{ctx.prefix}help <command> for more info on each command`",
                color=self.bot.colour)
            embed2.set_author(
                name=f"{ctx.author.name} - Crunchy's Commands: | Page 2 / 2",
                icon_url=ctx.author.avatar_url)

            f2 = f"<:9887_ServerOwner:653722257356750889>  **Anime Commands**  <:9887_ServerOwner:653722257356750889>\n" \
                 f"" + "\n".join(self.ANIME_COMMANDS)

            f3 = f"<:CrunchyRollLogo:676087821596885013>  **Live Feeds**  <:CrunchyRollLogo:676087821596885013>\n" \
                 f"" + "\n".join(self.LIVE_COMMANDS)

            f5 = f"<:HimeHappy:677852789074034691>  **Character Collection**  <:HimeHappy:677852789074034691>\n" \
                 f"" + "\n".join(self.CHARACTER_COMMANDS)

            embed2.add_field(name="\u200b", value=f3, inline=False)
            embed2.add_field(name="\u200b", value=f5, inline=False)
            embed2.add_field(name="\u200b", value=f2, inline=False)

            if ctx.guild_config is not None:
                if ctx.guild_config.nsfw_enabled:
                    f6 = f"🔞  **NSFW**  🔞\n" \
                         f"" + "\n".join(self.NSFW_COMMANDS)
                    embed2.add_field(name="\u200b", value=f6, inline=False)
            else:
                f6 = f"🔞  **NSFW**  🔞\n" \
                     f"" + "\n".join(self.NSFW_COMMANDS)
                embed2.add_field(name="\u200b", value=f6, inline=False)
            embed1.set_footer(
                text=
                "Part of the Crunchy the Crunchyroll Discord bot, Powered by CF8"
            )
            embed2.set_footer(
                text=
                "Part of the Crunchy the Crunchyroll Discord bot, Powered by CF8"
            )
            pager = Paginator(embed_list=[embed1, embed2],
                              bot=self.bot,
                              message=ctx.message,
                              colour=self.bot.colour)
            return self.bot.loop.create_task(pager.start())