示例#1
0
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)}
示例#2
0
文件: info.py 项目: Asi4nn/Shiver-Bot
    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)
示例#3
0
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
示例#4
0
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!')
示例#5
0
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)
    }
示例#6
0
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)