Ejemplo n.º 1
0
    async def display_rank(self, ctx):
        ranks = db.records(
            "SELECT * FROM member_exp WHERE guild_id = ? ORDER BY xp DESC;",
            ctx.guild.id)
        fields = []

        for i, rank in enumerate(ranks):
            if i > 9:
                break

            try:
                user = await self.bot.fetch_user(rank[0])
            except NotFound as e:
                i -= 1
                continue

            fields.append(("**Rank**", f"{i+1}", True))
            fields.append(("**Member**", f"{user}", True))
            fields.append(("**LVL (XP)**", f"{rank[3]} ({rank[2]}XP)", True))
        embed = create_embed("Level Ranking",
                             f"Member level rankings for {ctx.guild.name}.",
                             fields=fields,
                             color=Color.magenta())

        await ctx.send(embed=embed)
Ejemplo n.º 2
0
 def __init__(self, client):
     self.client = client
     self.client_color = Color.red()
     self.color_dict = {
         1: [Color.teal(), 'teal'],
         2: [Color.dark_teal(), 'dark_teal'],
         3: [Color.green(), 'green'],
         4: [Color.dark_green(), 'dark_green'],
         5: [Color.blue(), 'blue'],
         6: [Color.dark_blue(), 'dark_blue'],
         7: [Color.purple(), 'purple'],
         8: [Color.dark_purple(), 'dark_purple'],
         9: [Color.magenta(), 'magenta'],
         10: [Color.dark_magenta(), 'dark_magenta'],
         11: [Color.gold(), 'gold'],
         12: [Color.dark_gold(), 'dark_gold'],
         13: [Color.orange(), 'orange'],
         14: [Color.dark_orange(), 'dark_orange'],
         15: [Color.red(), 'red'],
         16: [Color.dark_red(), 'dark_red'],
         17: [Color.lighter_grey(), 'lighter_grey'],
         18: [Color.dark_grey(), 'grey'],
         19: [Color.light_grey(), 'light_grey'],
         20: [Color.darker_grey(), 'darker_grey']
     }
Ejemplo n.º 3
0
def random():
    c = [
        Color.teal(),
        Color.dark_teal(),
        Color.green(),
        Color.dark_green(),
        Color.blue(),
        Color.dark_blue(),
        Color.purple(),
        Color.dark_purple(),
        Color.magenta(),
        Color.dark_magenta(),
        Color.gold(),
        Color.dark_gold(),
        Color.orange(),
        Color.dark_orange(),
        Color.red(),
        Color.dark_red(),
        Color.lighter_grey(),
        Color.darker_grey(),
        Color.blurple(),
        tan,
        icedcoffee,
        chilipepper
    ]
    return c[randint(0, len(c) - 1)]
Ejemplo n.º 4
0
    async def add_xp(self, message, xp, lvl):
        xp_to_add = randint(5, 15)
        new_lvl = int(((xp + xp_to_add) // 42)**0.55)
        points_to_add = new_lvl * 10

        # exp lock set to 1 min for now
        db.execute(
            "UPDATE member_exp SET xp = xp + ?, level = ?, xp_lock = ? WHERE member_id = ? AND guild_id = ?;",
            xp_to_add, new_lvl,
            (datetime.utcnow() + timedelta(seconds=60)).isoformat(),
            message.author.id, message.guild.id)

        if new_lvl > lvl:
            # awarding points for leveling up
            db.execute(
                "UPDATE member_points SET points = points + ? WHERE member_id = ? AND guild_id = ?;",
                points_to_add, message.author.id, message.guild.id)
            db.commit(
            )  # users are probably immediately going to check for points

            # level notification enabled?
            if guild_lvl_enabled(message.guild.id):
                embed = create_embed(
                    f"Level Up!",
                    f"Yay! {message.author.mention}, you've reached level {new_lvl:,}. \n{points_to_add} points have been awarded to your account.",
                    color=Color.magenta(),
                    image_url=message.author.avatar_url)

                # if notifications are toggled, will send to specific channel if exists, otherwise the channel
                # with the message that leveled the user
                lvl_channel = self.bot.get_guild_lvl_channel(message.guild.id)
                if lvl_channel is not None:
                    await lvl_channel.send(embed=embed)
                else:
                    await message.channel.send(embed=embed)
Ejemplo n.º 5
0
async def embd(ctx, *args):
    colors = {
        "red": Color.red(),
        "green": Color.green(),
        "gold": Color.gold(),
        "orange": Color.orange(),
        "blue": Color.blue(),
        "purple": Color.purple(),
        "teal": Color.teal(),
        "magenta": Color.magenta(),
        "grey": Color.lighter_grey()
    }
    if args:
        argstr = " ".join(args)
        if "-c " in argstr:
            text = argstr.split("-c ")[0]
            color_str = argstr.split("-c ")[1]
            color = colors[
                color_str] if color_str in colors else Color.default()
        else:
            text = argstr
            color = Color.default()

            await client.say(embed=Embed(color=color, description=text))
            await client.delete_message(ctx.message)
Ejemplo n.º 6
0
def random():
    # type: () -> Color

    chilipepper = Color(0x9B1B30)
    tan = Color(0xBEAA3E)
    icedcoffee = Color(0xB18F6A)

    return choice([
        Color.teal(),
        Color.dark_teal(),
        Color.green(),
        Color.dark_green(),
        Color.blue(),
        Color.dark_blue(),
        Color.purple(),
        Color.dark_purple(),
        Color.magenta(),
        Color.dark_magenta(),
        Color.gold(),
        Color.dark_gold(),
        Color.orange(),
        Color.dark_orange(),
        Color.red(),
        Color.dark_red(),
        Color.lighter_grey(),
        Color.darker_grey(),
        Color.blurple(),
        tan,
        icedcoffee,
        chilipepper,
    ])
Ejemplo n.º 7
0
def random():
    # type: () -> Color

    tan = Color(0xBEAA3E)

    return choice([
        Color.teal(),
        Color.dark_teal(),
        Color.green(),
        Color.dark_green(),
        Color.blue(),
        Color.dark_blue(),
        Color.purple(),
        Color.dark_purple(),
        Color.magenta(),
        Color.dark_magenta(),
        Color.gold(),
        Color.dark_gold(),
        Color.orange(),
        Color.dark_orange(),
        Color.red(),
        Color.dark_red(),
        Color.lighter_grey(),
        Color.darker_grey(),
        Color.blurple(),
        tan,
    ])
Ejemplo n.º 8
0
    async def reload(self, ctx: Context, *, file: str) -> None:
        # Reload bot Extensions

        m = await ctx.send("Reloading...")

        reload = "Succesful!"

        # Reload all extensions.
        if file.lower() == "all":
            embed = Embed(title="Reload All Extensions", color=Color.magenta())

            extensions = set(EXTENSIONS)

            for i in extensions:  # Try to reload each extension one by one, and check the result.
                v = "Succesful!"
                try:
                    self.bot.reload_extension(i)
                except Exception as e:
                    v = e

                embed.add_field(name=i, value=v)
            await m.edit(content=reload, embed=embed)
            return

        # Only one extension
        elif "exts." not in file:
            file = f"exts.{file}"

        try:
            self.bot.reload_extension(file)
        except Exception as e:
            reload = e
        await m.edit(content=reload)
Ejemplo n.º 9
0
 async def ping(self, ctx: CommandContext):
     channel: TextChannel = ctx.channel
     message: Message = ctx.message
     now = datetime.utcnow()
     ping: timedelta = now - message.created_at
     ping = ping.microseconds / 1000
     await channel.send(
         embed=Embed(color=Color.magenta(),
                     description='My Ping is `{:.2f}ms`'.format(ping)))
Ejemplo n.º 10
0
 async def _base_embed(self, ctx: Context, code: str) -> Embed:
     # Get base embed of Admin Eval command
     embed = Embed(title="Evaluate Command",
                   description=f"Run by {ctx.author.mention}",
                   colour=Color.magenta(),
                   timestamp=ctx.message.created_at)
     embed.add_field(name="Input:",
                     value=f"```python\n\n{code}\n\n\n```",
                     inline=False)
     return embed
Ejemplo n.º 11
0
        def get_gradient_color(percentage):

            percentage = 50 + int(percentage) / 2
            return gradient(
                Color.red(),
                Color.magenta(),
                Color.lighter_grey(),
                Color.teal(),
                Color.green(),
                percentage=percentage,
            )
Ejemplo n.º 12
0
def send_meme(webhook: Webhook, subreddits: List[str]) -> bool:
    meme_subreddit = reddit.subreddit(random.choice(subreddits))
    meme = meme_subreddit.random()
    if not any((meme.url.endswith(i) for i in REDDIT_ALLOWED_FORMATS)):
        return False
    embed = Embed(title=meme.title, color=Color.magenta())
    embed.set_image(url=meme.url)
    embed.set_footer(
        text=f"\U0001f44d {meme.ups} \u2502 \U0001f44e {meme.downs}")
    webhook.send(embed=embed)
    return True
Ejemplo n.º 13
0
    async def ping(self, ctx: Context) -> None:
        """Display API ping and Command Process time."""
        discord_ping = f"{ (self.bot.latency*1000):.{3}f} ms"

        bot_ping = (datetime.utcnow() -
                    ctx.message.created_at).total_seconds() * 1000
        bot_ping = f"{bot_ping:.{3}f} ms"

        embed = Embed(title="Pong!", color=Color.magenta())

        for des, val in zip(DESCRIPTION, [discord_ping, bot_ping]):
            embed.add_field(name=des, value=val, inline=False)

        await ctx.send(embed=embed)
Ejemplo n.º 14
0
def send_memes(webhook: Webhook, subreddits: List[str], quantity: int):
    sent = 0
    skipped = 0
    while sent < quantity:
        meme_subreddit = reddit.subreddit(random.choice(SUBREDDITS))
        meme = meme_subreddit.random()
        if not any((meme.url.endswith(i) for i in REDDIT_ALLOWED_FORMATS)):
            skipped += 1
            continue
        embed = Embed(title=meme.title, color=Color.magenta())
        embed.set_image(url=meme.url)
        embed.set_footer(text=f"\U0001f44d {meme.ups} \u2502 \U0001f44e {meme.downs}")
        webhook.send(embed=embed)
        sent += 1
    return sent, skipped
Ejemplo n.º 15
0
def get_embed(description: str,
              title: str = '',
              color: Color = Color.magenta()):
    return Embed(title=title, description=description, color=color)
Ejemplo n.º 16
0
import discord
from discord.ext import commands
import random
from discord import Color as c

teal = c.teal()
magenta = c.magenta()


class Load(commands.Cog):
    def __init__(self, client):
        self.client = client

    @commands.command()
    async def info(self, ctx):
        em = discord.Embed(color=teal)
        em.add_field(
            name="Thimabo's Server!",
            value=
            'Welcome to thimabos server. Make sure you say hello in general!',
            inline=False)
        em.add_field(name="Rules",
                     value='Makes sure you read our `rules` channel.',
                     inline=False)
        em.add_field(
            name='What do we do? ',
            value=
            "Thimabos server is a great place to chill and chat, also provides big giveaways, and downloads!",
            inline=False)
        em.set_author(
            name="Information",
Ejemplo n.º 17
0
 def __init__(self, bot):
     self.colors = (Color.red(), Color.gold(), Color.green(),
                    Color.magenta(), Color.teal(), Color.dark_blue())
     self.bot = bot
     self.session = aiohttp.ClientSession(
         headers={'User-agent': 'RedditCrawler'})
Ejemplo n.º 18
0
    async def game_loop(self):
        inactive_time = 0.0
        time = 0.0
        minutes = 5

        await self.bot.send_message(
            self.channel,
            embed=utils.get_embed("New game created.\nType `\\taboo join` to enter the game")
        )

        while True:
            await asyncio.sleep(0.01)
            time += 0.01

            message = self.queue.get_nowait() if not self.queue.empty() else TabooMsg()

            # Quit game
            if message.type == TabooMsg.Type.stop:
                await self.bot.send_message(
                    self.channel,
                    embed=utils.get_embed('Game cancelled.')
                )
                break

            # Start game
            if message.type == TabooMsg.Type.start:
                if len(self.players) < 4:
                    await self.bot.send_message(
                        self.channel,
                        embed=utils.get_embed('You need at least 4 players to start a new game.')
                    )
                    self.send_message(TabooMsg.Type.stop)
                    continue
                random.shuffle(self.cards)
                self.current_card = self.cards.pop()

                random.shuffle(self.players)
                for i, player in enumerate(self.players):
                    if i % 2 == 0:
                        self.team_a.append(player)
                    else:
                        self.team_b.append(player)
                self.turns = self.players[:]
                self.giver = self.turns.pop(0)

                await self.dm_current_card()

                description = 'Is Team\'s {} turn.'.format(
                    'A' if self.giver in self.team_a else 'B'
                )

                description += "\n<@{}> is the **giver**.".format(self.giver)

                embed = Embed(description=description, title='Game has started',
                              color=Color.magenta())
                embed.add_field(name='Team A', value=self.get_team('a'))
                embed.add_field(name='Team B', value=self.get_team('b'))
                await self.bot.send_message(
                    self.channel,
                    embed=embed
                )
                self.playing = True
                continue

            if not self.playing:
                if time > 60:
                    time = 0
                    minutes -= 1
                    if minutes:
                        await self.bot.send_message(
                            self.channel,
                            embed=utils.get_embed(
                                "{} minutes before the game starts.".format(minutes)
                            )
                        )
                    else:
                        self.queue.put_nowait(TabooMsg(TabooMsg.Type.start))
            else:

                # # Inactive time
                # if message.type == TabooMsg.Type.none:
                #     inactive_time += 0.01
                #     if inactive_time > self.seconds:
                #         await self.bot.send_message(
                #             self.channel, embed=utils.get_embed("Game canceled due to inactivity.")
                #         )
                #         break
                # else:
                #     inactive_time = 0

                # Next turn
                if time > self.seconds:
                    await  self.next_turn()
                    time = 0

                # Guess card
                elif message.type == TabooMsg.Type.guess:
                    if (self.giver in self.team_a and message.author in self.team_a) or\
                       (self.giver in self.team_b and message.author in self.team_b):
                        await self.guess(message.content, message.author)

                # Skip card
                elif message.type == TabooMsg.Type.skip_card:
                    if self.giver == message.author:
                        await self.skip_card()
                        await self.dm_current_card()

                # Buzz
                elif message.type == TabooMsg.Type.buzz:
                    team = self.team_a if self.giver not in self.team_b else self.team_b
                    if message.author in team:
                        await self.buzz(message.content)

                # Game Over
                elif message.type == TabooMsg.Type.game_over:
                    embed = Embed(title='Game Over!')
                    if self.team_a_score > self.team_b_score:
                        embed.description = "The winner is Team A :tada:"
                        for i, member in enumerate(self.team_a):
                            embed.description += '\n{}. <@{}>'.format(i+1, member)
                    elif self.team_b_score > self.team_a_score:
                        embed.description = "The winner is Team B :tada:"
                        for i, member in enumerate(self.team_b):
                            embed.description += '\n{}. <@{}>'.format(i + 1, member)
                    else:
                        embed.description = "Nobody won! Everyone's a looser :tada:"
                    await self.bot.send_message(self.channel, embed=embed)
                    break

        self.callback(self.server_id)
Ejemplo n.º 19
0
import discord
from discord.ext import commands
import random
from discord import Color as c

teal = c.teal()
magenta = c.magenta(
)  #choose any colour, but be mindful of the discord.Color colours, they are wierd, unless you go with a custom RGB "system"


class Load(commands.Cog):
    def __init__(self, client):
        self.client = client

    @commands.command()
    async def commands(self, ctx):
        em = discord.Embed(color=teal)
        em.add_field(name="`Prefix`",
                     value='**My Prefix Is** - <',
                     inline=False)
        em.add_field(
            name="Commands",
            value=
            'Do <Commands to get a list of the finest commands i have to offer.',
            inline=False)
        em.add_field(name='Developer',
                     value="Do <dev to see who made me!",
                     inline=False)
        em.set_author(
            name="Command Information",
            icon_url=