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 project_embed(projects: dict, me): desc = f"▰▱▰▱▰▱▰▱▰▱▰▱▰▱▰▱▰▱\n\n**Active repositories: **{len(projects)-1}\n" embed = simple_embed(title="Tortoise Community", message=desc, color=get_top_role_color( member=me, fallback_color=Color.light_grey())) embed.set_author( name="Github Stats", icon_url= "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png" ) embed.set_footer(text="Last updated: ") embed.timestamp = projects["last_updated"] for item in projects: if item == "last_updated": continue project = projects[item] embed.add_field( name= f"\n{constants.embed_space}\n{constants.git_repo_emoji} {project.name}", value=f"• [repository]({project.link})\n" f"• [web]({project.web_url})\n" f"• [issues]({project.link+'/issues'})", inline=False) embed.add_field( name="Commits", value=f"{constants.git_commit_emoji} {project.commits}") embed.add_field(name="Stars", value=f"{constants.git_start_emoji} {project.stars}") embed.add_field(name="Forks", value=f"{constants.git_fork_emoji} {project.forks}") return embed
def _create_help_emb(self, name, current): emb = Embed() emb.title = "Option" emb.add_field(name=name, value="Currently: **" + current + "**") emb.colour = Color.light_grey() return emb
async def stalemate(self, board, ctx): embed = Embed( title="Stalemate!", description=f"```\n{', '.join([str(i) for i in board.move_stack])}```", color=Color.light_grey() ) await ctx.send(embed=embed)
async def update(self, *args, **kwargs): if self.module.is_first_loop: msg = self.module.create_discord_embed( subtitle=self.TITLE, info='Collecting the latest information...', color=Color.light_grey()) return await self.send(msg) game_msg = (self.module.GOOD if self.module.game else self.module.UNREACHABLE).format('game server') if not self.module.open: acc_msg = self.module.CLOSED statuses = [acc_msg] else: acc_msg = (self.module.GOOD if self.module.account else self.module.UNREACHABLE).format('account server') statuses = [game_msg, acc_msg] ban_msg = self.module.BANNER.format( self.module.banner) if self.module.banner else None if ban_msg: statuses.append(ban_msg) color = Color.green() color = Color.blue( ) if self.module.banner and self.module.account else color color = Color.gold() if ( not self.module.open and not self.module.banner) or not self.module.account else color color = Color.red() if not self.module.game else color return await self.send( self.module.create_discord_embed(subtitle=self.TITLE, info='\n\n'.join(statuses), color=color))
def __init__(self, webhook): self.webhook = webhook self.level_color = { "INFO": Color.light_grey(), "WARNING": Color.gold(), "ERROR": Color.dark_red(), "CRITICAL": Color.red(), "DEBUG": Color.dark_green(), "NOTSET": Color.dark_grey(), } super(DiscordHandler, self).__init__()
def _set_color(card): if card == 'Free': return Color.light_grey() elif card == 'Common': return Color.lighter_grey() elif card == 'Rare': return Color.blue() elif card == 'Epic': return Color.purple() elif card == 'Legendary': return Color.orange() else: return Color.default()
def __init__(self, bot): self.bot = bot self.bot.get_card = self.get_card # there has to be a better way to do this self.bot.card_get_image = self.card_get_image self.bot.card_replace_symbols = self.replace_symbols self.bot.magic_dict = {} self.bot.card_get_color = self.card_get_color self.color_dict = { "Red": Color.red(), "Blue": Color.blue(), "Green": Color.green(), "Black": Color(0x000000), "White": Color(0xffffff), "Gold": Color.gold(), "Grey": Color.light_grey() }
def get_color(rank: str = 'F') -> Color: """ Gives `discord.Color` based on rank achieved in score :param rank: Rank achieved on score `str` :return: `discord.Color` """ rank = rank.upper() if rank in ['SH', 'SSH']: return Color.light_grey() if rank in ['S', 'SS']: return Color.gold() if rank == 'A': return Color.green() if rank == 'B': return Color.blue() if rank == 'C': return Color.purple() if rank == 'D': return Color.red() return Color.darker_gray()
def changelog_em() -> Embed: return Embed( title=':gear: Changelog', description='https://github.com/AnonymousX86/poland-bot/blob/master/CHANGELOG.md#changelog', color=Color.light_grey() )
async def ph(ctx, *args): if args: url = "https://www.pornhub.com/video/search?search=" + "+".join(args) await client.say(embed=Embed(description="**[PornHub](%s)**" % url, color=Color.light_grey())) await client.delete_message(ctx.message)
async def update(self, *args, **kwargs): if self.module.is_first_loop: msg = self.module.create_discord_embed(title=self.TITLE, info='Collecting the latest information...', color=Color.light_grey()) return await self.send(msg) megainvs = [] invs = [] for inv in self.module.invasions: if inv.mega_invasion: megainvs.append(inv) else: invs.append(inv) megainvs = sorted(megainvs, key=lambda k: -k.start_time) invs = sorted(invs, key=lambda k: (-k.etr if k.etr != -1 else (k.defeated/k.total))) invs = megainvs + invs if time.time() >= (assert_type(self.module.last_updated, int, otherwise=0) + 300): desc = 'We\'re experiencing some technical difficulties.\nInvasion tracking will be made reavailable as soon as possible.' msg = self.module.create_discord_embed(title=self.TITLE, info=desc, color=Color.light_grey()) msg.set_footer(text='We apologize for the inconvenience.') elif len(invs) > 0: cogs = [] districts = [] etrs = [] progress = [] for inv in invs: if inv.etr != -1: etr = get_time_from_seconds(inv.etr) etr = 'A few seconds' if inv.etr < 0 else etr etr = 'Calculating...' if time.time() - inv.start_time < 60 else etr etr = 'Mega Invasion!' if inv.mega_invasion else etr etrs.append(etr) else: p = int((inv.defeated/inv.total) * 10) # Pray this never has to be debugged. progress.append('[{}{}]'.format('■' * p, (' '*(10-p))+(' '*ceil((10-p)/2)))) cogs.append(inv.cog.plural()) districts.append(inv.district) fields = [ {'name': 'Cog', 'value': '\n'.join(cogs)}, {'name': 'District', 'value': '\n'.join(districts)}, {'name': 'Time Remaining', 'value': '\n'.join(etrs)} if etrs else {'name': 'Progress', 'value': '\n'.join(progress)} ] msg = self.module.create_discord_embed(title=self.TITLE, title_url=self.module.route[1], color=Color.light_grey(), fields=fields) else: desc = 'No invasions to report.\nThe last invasion seen was __{} ago__.'.format( get_time_from_seconds(int(time.time()) - self.module.drought_start)) msg = self.module.create_discord_embed(title=self.TITLE, info=desc, color=Color.light_grey()) return await self.send(msg)
import asyncio import datetime import typing import pytz import discord from discord import Color from cogs.misc import LikeUser, FakeMember colours = { 'unban': Color.green(), 'unmute': Color.dark_green(), 'note': Color.light_grey(), 'warn': Color.orange(), 'mute': Color.dark_purple(), 'kick': Color.dark_orange(), 'softban': Color.red(), 'ban': Color.dark_red() } async def ban(victim: discord.Member, reason: str = None): await victim.guild.ban(victim, reason=reason) async def softban(victim: discord.Member, reason: str = None): await victim.guild.ban(victim, reason=reason) await victim.guild.unban(victim, reason=reason)
async def fetch_track(self): """Task for fetching warzone matches of tracked users.""" logging.info("Starting warzone tracking...") tracked = session.query(wz_model).filter_by(track=True).all() if not len(tracked): return embed_color = [ Color.gold(), Color.light_grey(), Color.dark_orange(), Color.dark_red() ] matches = dict() async with aiohttp.ClientSession() as aiosession: try: await aiosession.get("https://profile.callofduty.com/cod/login" ) cookies = aiosession.cookie_jar.filter_cookies( "https://callofduty.com") params = { "username": getenv("COD_USERNAME"), "password": getenv("COD_PASSWORD"), "remember_me": "true", "_csrf": cookies["XSRF-TOKEN"].value, } await aiosession.post( "https://profile.callofduty.com/do_login?new_SiteId=cod", params=params, allow_redirects=False) except Exception as e: logging.error("Could not acquire session for warzone tracking") return for t in tracked: try: battletag = requests.utils.quote(t.battletag) url = f"https://my.callofduty.com/api/papi-client/crm/cod/v2/title/mw/platform/battle/gamer/{battletag}/matches/wz/start/0/end/0/details?limit=1" async with aiosession.get(url) as resp: response = await resp.json() player_match = response["data"]["matches"][0] player_match["channel_id"] = t.channel_id now = int(datetime.utcnow().strftime("%s")) if t.last_match == player_match[ "matchID"] or now - player_match[ "utcEndSeconds"] > 30 * 60: continue matches.setdefault(player_match["matchID"], dict()).setdefault( player_match["player"]["team"], list()).append(player_match) t.last_match = player_match["matchID"] except Exception as e: logging.error( f"Could not retrieve warzone history for {t.battletag}", exc_info=e) for match in matches.values(): for team in match.values(): p0 = team[0] channel = self.bot.get_channel(p0["channel_id"]) ordinal = lambda n: f'{n}{"tsnrhtdd"[(n//10%10!=1)*(n%10<4)*n%10::4]}' placement = int(p0["playerStats"]["teamPlacement"]) placement_color = placement - 1 if placement < 4 else -1 embed = Embed( title= f"{p0['player']['username']}'s team finished in __{ordinal(placement)}__ against {p0['teamCount']} teams.", color=embed_color[placement_color], timestamp=datetime.fromtimestamp(p0["utcStartSeconds"]), ) embed.add_field( name="Match duration", value=f"{int(p0['duration'] // 60000)} minutes", inline=True) embed.add_field( name="Team survived", value= f"{int(p0['playerStats']['teamSurvivalTime']) // 60000} minutes", inline=True, ) embed.add_field(name=chr(173), value=chr(173), inline=True) # field skip for player in team: stats = f"""**KDA:** {round(player["playerStats"]["kdRatio"], 2)} **Kills:** {int(player["playerStats"]["kills"])} **Deaths:** {int(player["playerStats"]["deaths"])} **Damage:** {int(player["playerStats"]["damageDone"])} """ embed.add_field(name=player["player"]["username"], value=inspect.cleandoc(stats), inline=True) await channel.send(embed=embed) session.commit() logging.info("Warzone tracking finished.")