From 43f3f11154c63e28197f575a4ccaf2a61a0a0e9e Mon Sep 17 00:00:00 2001 From: Luke Date: Sat, 14 Dec 2019 14:11:45 -0800 Subject: [PATCH] Adding dad functionality. real high level shit here --- app/dragon-bot.py | 8 ++++ destiny.py | 67 ++++++++++++++++++++++++++++++ ffxiv.py | 103 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 178 insertions(+) create mode 100644 destiny.py create mode 100644 ffxiv.py diff --git a/app/dragon-bot.py b/app/dragon-bot.py index 2c327576..c5b7efc2 100644 --- a/app/dragon-bot.py +++ b/app/dragon-bot.py @@ -215,6 +215,14 @@ async def on_message(message): ) await client.send_message(message.channel, invite) + + if message.content.lower().startswith('im') or message.content.lower().startswith('i\'m'): + subject = ' '.join(message.content.split()[1:]) + await client.send_message( + message.channel, + "Hi %s, I'm dad!" % subject + ) + if message.content.startswith('!issue'): await client.send_message( message.channel, diff --git a/destiny.py b/destiny.py new file mode 100644 index 00000000..32a46241 --- /dev/null +++ b/destiny.py @@ -0,0 +1,67 @@ +from datetime import date +import json +import pprint +import requests + +account_name = 'Truttle%231248' +base_url = 'https://www.bungie.net/Platform/Destiny2' +headers = {'X-API-KEY': '777984975407420ba392ad951e37e406'} +pp = pprint.PrettyPrinter(indent=4) + +def parse_message(message): + """ + parse_message(message) + + Handles the message and looks for the player's name. + """ + # Return the player's name + name = message.content.split()[1] + if len(message.content.split()) > 1: + name = message.content.split()[1:].repalce('#', '%23') + + return get_account_blob(player=name) + + +def get_account_blob(account_name): + initial_blob = requests.get( + "%s/SearchDestinyPlayer/-1/%s" % (base_url, account_name), + headers=headers + ).json() + + character_map = {} + account_metadata = initial_blob['Response'][0] + print(account_metadata) + + # character_map['profile_id'] = account_metadata['membershipId'] + # character_map['account_type'] = account_metadata['membershipType'] + + # account_url = "%s/%s/Profile/%s/?components=100" % (base_url, character_map['account_type'], character_map['profile_id']) + # account_blob = requests.get(account_url, headers=headers).json()['Response']['profile']['data'] + + # character_map['player_name'] = account_blob['userInfo']['displayName'] + # character_map['date_last_played'] = account_blob['dateLastPlayed'] + # character_map['character_ids'] = [int(x) for x in account_blob['characterIds']] + # return character_map + + +def get_character_info(account_type, profile_id, character_id): + character_url = "%s/%s/Profile/%s/Character/%s/?components=200" % (base_url, account_type, profile_id, character_id) + + return requests.get(character_url, headers=headers).json()['Response']['character']['data'] + + +def get_clan_info(account_type, profile_id): + group_url = "https://www.bungie.net/Platform/GroupV2/User/%s/%s/0/1/" % (account_type, str(profile_id)) + print(group_url) + + return requests.get(group_url, headers=headers).json() + +if __name__ == '__main__': + print get_account_blob(account_name) + + # account_type = get_account_blob(account_name)['account_type'], + # profile_id = get_account_blob(account_name)['profile_id'], + + # pp.pprint( + # get_clan_info(account_type, profile_id) + # ) \ No newline at end of file diff --git a/ffxiv.py b/ffxiv.py new file mode 100644 index 00000000..4d2b8d56 --- /dev/null +++ b/ffxiv.py @@ -0,0 +1,103 @@ +import asyncio +import logging +import json +import pprint + +import aiohttp +import xivapi + +pp = pprint.PrettyPrinter(indent=4) + +async def fetch_example_results(session): + client = xivapi.Client(session=session, api_key="189ab21cd81c4516b768aad19be1d0a92cf463254550463f982ac4172f138f67") + + # Search Lodestone for a character + character = await client.character_search( + world="Exodus", + forename="Pizza", + surname="Rolls" + ) + + # Get a character by Lodestone ID with extended data & include their Free Company information, if it has been synced. + character2 = await client.character_by_id( + lodestone_id=character['Results'][0]['ID'], + extended=True, + include_freecompany=True + ) + + pp.pprint(json.dumps(character2)) + + # # Search Lodestone for a free company + # freecompany = await client.freecompany_search( + # world="gilgamesh", + # name="Elysium" + # ) + + # # Fuzzy search XIVAPI game data for a recipe by name. Results will be in English. + # recipe = await client.index_search( + # name="Crimson Cider", + # indexes=["Recipe"], + # columns=["ID", "Name", "Icon", "ItemResult.Description"], + # string_algo="fuzzy" + # ) + + # # Fuzzy search XIVAPI game data for a recipe by name. Results will be in French. + # recipe = await client.index_search( + # name="Cidre carmin", + # indexes=["Recipe"], + # columns=["ID", "Name", "Icon", "ItemResult.Description"], + # string_algo="fuzzy", + # language="fr" + # ) + + # # Get an item by its ID (Omega Rod) and return the data in German + # item = await client.index_by_id( + # index="Item", + # content_id=23575, + # columns=["ID", "Name", "Icon", "ItemUICategory.Name"], + # language="de" + # ) + + # # Get non-npc actions matching a given term (Defiance) + # action = await client.index_search( + # name="Defiance", + # indexes=["Action", "PvPAction", "CraftAction"], + # columns=["ID", "Name", "Icon", "Description", "ClassJobCategory.Name", "ClassJobLevel", "ActionCategory.Name"], + # filters=["ClassJobLevel>=0", "ClassJobCategory.ID>0"], + # string_algo="fuzzy" + # ) + + # # Search ingame data for matches against a given query. Includes item, minion, mount & achievement descriptions, quest dialog & more. + # lore = await client.lore_search( + # query="Shiva", + # language="fr" + # ) + + # # Search for an item using specific filters + # filters = [ + # Filter("LevelItem", "gte", 100) + # ] + + # sort = Sort("Name", True) + + # item = await client.index_search( + # name="Omega Rod", + # indexes=["Item"], + # columns=["ID", "Name", "Icon", "Description", "LevelItem"], + # filters=filters, + # sort=sort, + # language="de" + # ) + + # Get all categories of posts from the Lodestone (cached evert 15 minutes) + lodestone = await client.lodestone_all() + + await session.close() + + +if __name__ == '__main__': + logging.basicConfig(level=logging.INFO, format='%(message)s', datefmt='%H:%M') + + loop = asyncio.get_event_loop() + session = aiohttp.ClientSession(loop=loop) + loop.run_until_complete(fetch_example_results(session))