diff options
Diffstat (limited to 'ATRI/plugins/genshin')
| -rw-r--r-- | ATRI/plugins/genshin/__init__.py | 53 | ||||
| -rw-r--r-- | ATRI/plugins/genshin/data_source.py | 121 | 
2 files changed, 0 insertions, 174 deletions
diff --git a/ATRI/plugins/genshin/__init__.py b/ATRI/plugins/genshin/__init__.py deleted file mode 100644 index 4705e0e..0000000 --- a/ATRI/plugins/genshin/__init__.py +++ /dev/null @@ -1,53 +0,0 @@ -import re -from nonebot.plugin import on_command -from nonebot.typing import Bot, Event - -from ATRI.config import GENSHIN_CONFIG -from ATRI.exceptions import InvalidRequestError -from ATRI.rule import isInBanList, isInDormant, isInService - -from .data_source import Genshin - -__plugin_name__ = 'genshin' - -genshin = on_command(GENSHIN_CONFIG['genshin']['command'][0], -                     aliases=set(GENSHIN_CONFIG['genshin']['command']), -                     rule=isInBanList() & isInDormant() -                     & isInService(__plugin_name__)) - - -@genshin.handle() -async def _(bot: Bot, event: Event, state: dict) -> None: -    args = str(event.message) -     -    if args: -        state['args'] = args - -@genshin.got('args', prompt='请告诉咱id以及是官服还是b服嗷~w\n用空格隔开!!') -async def _(bot: Bot, event: Event, state: dict) -> None: -    args = state['args'].split(' ') -    uid_info = '' -    server_id = '' -     -    if len(args[0]) != 9: -        await genshin.finish('抱歉暂时只支持国服呢...') -    else: -        pass -     -    if re.findall('[Bb官]服', args[1]): -        if re.findall('[Bb]服', args[1]): -            server_id = 'cn_qd01' -        else: -            server_id = 'cn_gf01' -         -        await bot.send(event, '别急,在找!') -        try: -            uid_info = Genshin().jsonAnalysis(Genshin().getInfo(server_id=server_id, uid=args[0])) -        except InvalidRequestError: -            await genshin.finish('找不到呢...咱搜索区域或许出错了...') -         -        msg0 = (f'{args[0]} Genshin INFO:\n' -                f'{uid_info}') -        await genshin.finish(msg0) -    else: -        await genshin.finish('抱歉暂时只支持官服和b服...呐.') diff --git a/ATRI/plugins/genshin/data_source.py b/ATRI/plugins/genshin/data_source.py deleted file mode 100644 index 2bb4572..0000000 --- a/ATRI/plugins/genshin/data_source.py +++ /dev/null @@ -1,121 +0,0 @@ -import time -import json -import random -import string -import hashlib -import requests -from typing import Optional - -from ATRI.request import Request -from ATRI.config import GENSHIN_CONFIG -from ATRI.exceptions import InvalidRequestError - - -mhyVersion = GENSHIN_CONFIG['genshin']['mhyVersion'] - - -class Genshin: -    def md5(self, text: str) -> str: -        md5 = hashlib.md5() -        md5.update(text.encode()) -        return md5.hexdigest() - -    def getDS(self): -        global mhyVersion -        if mhyVersion == '2.1.0': -            n = self.md5(mhyVersion) -        elif mhyVersion == '2.2.1': -            n = "cx2y9z9a29tfqvr1qsq6c7yz99b5jsqt" -        else: -            mhyVersion = "2.2.1" -            n = "cx2y9z9a29tfqvr1qsq6c7yz99b5jsqt" -         -        i = str(int(time.time())) -        r = ''.join(random.sample(string.ascii_lowercase + string.digits, 6)) -        c = self.md5("salt=" + n + "&t="+ i + "&r=" + r) -        return (i + "," + r + "," + c) -     -    def getInfo(self, server_id: str, uid: str) -> str: -        try: -            url = GENSHIN_CONFIG['genshin']['url'] + server_id + "&role_id=" + uid -            print(url) -            headers: dict = { -                'Accept': 'application/json, text/plain, */*', -                'DS': self.getDS(), -                'Origin': 'https://webstatic.mihoyo.com', -                'x-rpc-app_version': mhyVersion, -                'User-Agent': 'Mozilla/5.0 (Linux; Android 9; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 miHoYoBBS/2.2.0', -                'x-rpc-client_type': '4', -                'Referer': 'https://webstatic.mihoyo.com/app/community-game-records/index.html?v=6', -                'Accept-Encoding': 'gzip, deflate', -                'Accept-Language': 'zh-CN,en-US;q=0.8', -                'X-Requested-With': 'com.mihoyo.hyperion' -            } -            result = requests.get(url=url,headers=headers, timeout=10) -            print(result.text) -            return result.text -        except InvalidRequestError: -            raise InvalidRequestError('请求数据出错') -     -    def jsonAnalysis(self, a) -> Optional[str]: -        print(a) -        data = json.loads(a) -        if data['retcode'] != 0: -            raise InvalidRequestError('请求出错,原因:uid错误/不存在/国服之外') -        else: -            pass -         -        character_info = 'Roles:\n' -        character_list = data['data']['avatars'] -        for i in character_list: -            if i["element"] == "None": -                character_type = "无属性" -            elif i["element"] == "Anemo": -                character_type = "风属性" -            elif i["element"] == "Pyro": -                character_type = "火属性" -            elif i["element"] == "Geo": -                character_type = "岩属性" -            elif i["element"] == "Electro": -                character_type = "雷属性" -            elif i["element"] == "Cryo": -                character_type = "冰属性" -            elif i["element"] == "Hydro": -                character_type = "水属性" -            else: -                character_type = "草属性" -             -            if i["name"] == "旅行者": -                if i["image"].find("UI_AvatarIcon_PlayerGirl") != -1: -                    temp_text = f'* {i["name"]}:\n' -                    temp_text += f'  - [萤——妹妹] {i["level"]}级 {character_type}\n' - -                elif i["image"].find("UI_AvatarIcon_PlayerBoy") != -1: -                    temp_text = f'* {i["name"]}:\n' -                    temp_text += f'  - [空——哥哥] {i["level"]}级 {character_type}\n' - -                else: -                    temp_text = f'* {i["name"]}:\n' -                    temp_text += f'  - [性别判断失败] {i["level"]}级 {character_type}\n' -            else: -                temp_text = f'* {i["name"]} {i["rarity"]}★角色:\n' -                temp_text += f'  - {i["level"]}级 好感度({i["fetter"]})级 {character_type}\n' -             -            character_info += temp_text -             -            a1 = data["data"]["stats"]["spiral_abyss"] - -            account_info = 'Account Info:\n' -            account_info += f'- 活跃天数:{data["data"]["stats"]["active_day_number"]} 天\n' -            account_info += f'- 达成成就:{data["data"]["stats"]["achievement_number"]} 个\n' -            account_info += f'- 获得角色:{data["data"]["stats"]["avatar_number"]}个\n' -            account_info += f'- 深渊螺旋:{"没打" if (data["data"]["stats"]["spiral_abyss"] == "-") else f"打到了{a1}"}\n' -            account_info += f'* 收集:\n' -            account_info += f'  - 风神瞳{data["data"]["stats"]["anemoculus_number"]}个 岩神瞳{data["data"]["stats"]["geoculus_number"]}个\n' -            account_info += f'* 解锁:\n' -            account_info += f'  - 传送点{data["data"]["stats"]["way_point_number"]}个 秘境{data["data"]["stats"]["domain_number"]}个\n' -            account_info += f'* 共开启宝箱:\n' -            account_info += f'  - 普通:{data["data"]["stats"]["common_chest_number"]}个 精致:{data["data"]["stats"]["exquisite_chest_number"]}个\n' -            account_info += f'  - 珍贵:{data["data"]["stats"]["luxurious_chest_number"]}个 华丽:{data["data"]["stats"]["precious_chest_number"]}个' -             -            return str(character_info + '\r\n' + account_info)  | 
