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)
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'] }
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)]
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)
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)
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, ])
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, ])
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)
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)))
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
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, )
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
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)
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
def get_embed(description: str, title: str = '', color: Color = Color.magenta()): return Embed(title=title, description=description, color=color)
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",
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'})
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)
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=