def get_blizzardcs_last_tweet(event, context): region = event['pathParameters']['region'] api = twitter.Api(consumer_key=os.getenv("TWITTER_CONSUMER_KEY"), consumer_secret=os.getenv("TWITTER_CONSUMER_SECRET"), application_only_auth=True) status = api.GetUserTimeline(screen_name="blizzardcs" if region.lower() == "us" else "blizzardcseu_en", include_rts=False, exclude_replies=True) date = datetime.strptime(status[0].created_at, "%a %b %d %H:%M:%S +0000 %Y") date = date.replace(tzinfo=simple_utc()) embed = { "thumbnail": { "url": status[0].user.profile_image_url_https }, "author": { "name": status[0].user.screen_name, "url": "https://twitter.com/%s" % status[0].user.screen_name }, "description": status[0].text, "color": Colour.from_rgb(29, 161, 242).value, "timestamp": date.isoformat() } if status[0].media: embed["image"] = {"url": status[0].media[0].media_url_https} return {"statusCode": 200, "body": json.dumps(embed)}
async def server_info(self, ctx: Context): target = ctx.guild embed = Embed(title=target.name, colour=Colour.from_rgb(255, 255, 0), timestamp=datetime.now().astimezone(est)) embed.set_thumbnail(url=target.icon_url) created = target.created_at created = utc.localize(created) fields = [ ("ID", target.id, False), ("Roles", ', '.join([ role.mention for role in target.roles if str(role) != "@everyone" ]), True), ("Region", target.region, False), ("Created", created.astimezone(est).strftime("%d/%m/%Y, %H:%M:%S"), True), ("Total Members", target.member_count, True), ] for name, value, inline in fields: embed.add_field(name=name, value=value, inline=inline) await ctx.reply(embed=embed)
def get_token_price(event, context): region = event['pathParameters']['region'].upper() region = "NA" if region.casefold() == "US".casefold() else region r = requests.get("https://data.wowtoken.info/snapshot.json") jsonEntry = r.json() if region in jsonEntry: region_json = jsonEntry[region]['formatted'] embed = { "title": "Price for 1 WoW Token in the %s region" % region, "thumbnail": { "url": "http://wow.zamimg.com/images/wow/icons/large/wow_token01.jpg" }, "color": Colour.from_rgb(255, 215, 0).value, "fields": [ { "name": "Current Price", "value": region_json['buy'], "inline": True }, { "name": "Minimum 24H", "value": region_json['24min'], "inline": True }, { "name": "Maximum 24H", "value": region_json['24max'], "inline": True }, { "name": "Percentage 24H range", "value": "%s %%" % region_json['24pct'], "inline": True } ], "footer": { "text": "Information taken from https://wowtoken.info", "icon_url": "http://wow.zamimg.com/images/wow/icons/large/wow_token01.jpg" } } response = { "statusCode": 200, "body": json.dumps(embed) } return response response = { "statusCode": 404 } return response
async def add(context: ClickContext, name: str, expression: str, colour: str = None, create_role: bool = False, role_id: str = None): """Add a new meta role.""" discord_context = context.obj["discord_context"] existing_meta_role = await sync_to_async( MetaRoleConfig.objects.filter(name=name).first)() if existing_meta_role: await discord_context.send( (f'Meta role `{name}` is already added to the Guild.\n' 'Use `meta-role update` to update its configuration.')) return expression = _clean_expression(expression) game_configs = await _validate_expression(discord_context, expression) if game_configs is None: return if not create_role and role_id is None: await discord_context.send(( 'You have not provided a role id or enabled the create role flag (-cr).' 'Please provide one.')) return meta_role_config = MetaRoleConfig(name=name, colour=colour, expression=expression, guild_id=discord_context.guild.id) if create_role: role_colour = None if meta_role_config.colour is not None: role_colour = Colour.from_rgb( *meta_role_config.get_colour_as_rgb()) discord_role = await discord_context.guild.create_role( name=name, colour=role_colour) meta_role_config.role_id = discord_role.id await sync_to_async(meta_role_config.save)() await sync_to_async(meta_role_config.games.add)(*game_configs) await discord_context.send(f'Added the `{name}` meta role!')
def get_legion_building(event, context): region = event['pathParameters']['region'].lower() session = HTMLSession() r = session.get("https://wowhead.com") # .attrs['style'].split("(")[1].split(")")[0].replace("//", "https://") status = r.html.find(".tiw-bs-status") states = r.html.find(".tiw-bs-status-state") percents = r.html.find(".tiw-bs-status-progress") if region == "us": embed = { "title": "Broken Shore Building Status", "fields": [ { "name": "Mage Tower", "value": "%s - %s" % (states[0].text, percents[0].text), "inline": True }, { "name": "Command Center", "value": "%s - %s" % (states[1].text, percents[1].text), "inline": True }, { "name": "Nether Disruptor", "value": "%s - %s" % (states[2].text, percents[2].text), "inline": True } ] } if states[0].text == "Completed": embed["color"] = Colour.green().value embed['image'] = { "url": status[0].attrs['style'].split("(")[1].split(")")[0].replace("//", "https://") } elif states[1].text == "Completed": embed["color"] = Colour.green().value embed['image'] = { "url": status[1].attrs['style'].split("(")[1].split(")")[0].replace("//", "https://") } elif states[2].text == "Completed": embed["color"] = Colour.green().value embed['image'] = { "url": status[2].attrs['style'].split("(")[1].split(")")[0].replace("//", "https://") } elif states[0].text == "Under Attack": embed["color"] = Colour.from_rgb(255, 255, 0).value embed['image'] = { "url": status[0].attrs['style'].split("(")[1].split(")")[0].replace("//", "https://") } elif states[1].text == "Under Attack": embed["color"] = Colour.from_rgb(255, 255, 0).value embed['image'] = { "url": status[1].attrs['style'].split("(")[1].split(")")[0].replace("//", "https://") } elif states[2].text == "Under Attack": embed["color"] = Colour.from_rgb(255, 255, 0).value embed['image'] = { "url": status[2].attrs['style'].split("(")[1].split(")")[0].replace("//", "https://") } else: embed["color"] = Colour.red().value embed['image'] = { "url": status[0].attrs['style'].split("(")[1].split(")")[0].replace("//", "https://") } else: embed = { "title": "Broken Shore Building Status", "fields": [ { "name": "Mage Tower", "value": "%s - %s" % (states[3].text, percents[3].text), "inline": True }, { "name": "Command Center", "value": "%s - %s" % (states[4].text, percents[4].text), "inline": True }, { "name": "Nether Disruptor", "value": "%s - %s" % (states[5].text, percents[5].text), "inline": True } ] } if states[3].text == "Completed": embed["color"] = Colour.green().value embed['image'] = { "url": status[3].attrs['style'].split("(")[1].split(")")[0].replace("//", "https://") } elif states[4].text == "Completed": embed["color"] = Colour.green().value embed['image'] = { "url": status[4].attrs['style'].split("(")[1].split(")")[0].replace("//", "https://") } elif states[5].text == "Completed": embed["color"] = Colour.green().value embed['image'] = { "url": status[5].attrs['style'].split("(")[1].split(")")[0].replace("//", "https://") } elif states[3].text == "Under Attack": embed["color"] = Colour.from_rgb(255, 255, 0).value embed['image'] = { "url": status[3].attrs['style'].split("(")[1].split(")")[0].replace("//", "https://") } elif states[4].text == "Under Attack": embed["color"] = Colour.from_rgb(255, 255, 0).value embed['image'] = { "url": status[4].attrs['style'].split("(")[1].split(")")[0].replace("//", "https://") } elif states[5].text == "Under Attack": embed["color"] = Colour.from_rgb(255, 255, 0).value embed['image'] = { "url": status[5].attrs['style'].split("(")[1].split(")")[0].replace("//", "https://") } else: embed["color"] = Colour.red().value embed['image'] = { "url": status[3].attrs['style'].split("(")[1].split(")")[0].replace("//", "https://") } return { "statusCode": 200, "body": json.dumps(embed) }
class Color: LIGHT_RED = Colour.from_rgb(252, 92, 101) RED = Colour.from_rgb(235, 59, 90) LIGHT_BLUE = Colour.from_rgb(69, 170, 242) BLUE = Colour.from_rgb(75, 123, 236) DARK_BLUE = Colour.from_rgb(56, 103, 214) LIGHT_ORANGE = Colour.from_rgb(253, 150, 68) ORANGE = Colour.from_rgb(250, 130, 49) LIGHT_GREEN = Colour.from_rgb(38, 222, 129) GREEN = Colour.from_rgb(32, 191, 107) LIGHT_PURPLE = Colour.from_rgb(165, 94, 234) PURPLE = Colour.from_rgb(136, 84, 208) YELLOW = Colour.from_rgb(254, 211, 48) DARK_YELLOW = Colour.from_rgb(247, 183, 49) LIGHT_GREY = Colour.from_rgb(209, 216, 224) GREY = Colour.from_rgb(165, 177, 194) DARK_GREY = Colour.from_rgb(119, 140, 163)