diff options
author | Kyomotoi <[email protected]> | 2020-11-08 01:09:59 +0800 |
---|---|---|
committer | Kyomotoi <[email protected]> | 2020-11-08 01:09:59 +0800 |
commit | 50e9fbd8b7ce4cb72ffaca44aff1789a318cd5db (patch) | |
tree | 99735b6d37f447d401dfdebd764034e970c9e82f /ATRI/plugins/plugin_utils | |
parent | 4ce5a0c4d00e1ba2568b97f0503ef12d7febb23d (diff) | |
download | ATRI-50e9fbd8b7ce4cb72ffaca44aff1789a318cd5db.tar.gz ATRI-50e9fbd8b7ce4cb72ffaca44aff1789a318cd5db.tar.bz2 ATRI-50e9fbd8b7ce4cb72ffaca44aff1789a318cd5db.zip |
[Update]
Diffstat (limited to 'ATRI/plugins/plugin_utils')
-rw-r--r-- | ATRI/plugins/plugin_utils/__init__.py | 67 | ||||
-rw-r--r-- | ATRI/plugins/plugin_utils/genshin.py | 119 | ||||
-rw-r--r-- | ATRI/plugins/plugin_utils/roll.py | 59 |
3 files changed, 242 insertions, 3 deletions
diff --git a/ATRI/plugins/plugin_utils/__init__.py b/ATRI/plugins/plugin_utils/__init__.py index 3c813cb..4435b81 100644 --- a/ATRI/plugins/plugin_utils/__init__.py +++ b/ATRI/plugins/plugin_utils/__init__.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 # -*- encoding: utf-8 -*- - ''' @File : __init__.py @Time : 2020/11/07 14:20:08 @@ -12,6 +11,7 @@ __author__ = 'kyomotoi' import os +import re import json import random from pathlib import Path @@ -23,8 +23,12 @@ from datetime import datetime, timedelta from nonebot.plugin import on_command from nonebot.adapters.cqhttp import Bot, Event +from utils.utils_error import errorRepo from utils.utils_rule import check_banlist, check_switch +from .roll import roll_dice +from .genshin import GetInfo, JsonAnalysis + file = Path('.') / 'ATRI' / 'data' / 'data_IDcard' / 'main.bin' @@ -61,9 +65,9 @@ def numberID(area: int, sex: int, birth: int) -> str: return fullCode -plugin_name = "one-key-adult" +plugin_name_0 = "one-key-adult" generateID = on_command("我要转大人,一天打25小时游戏", - rule=check_banlist() & check_switch(plugin_name)) + rule=check_banlist() & check_switch(plugin_name_0)) @generateID.handle() # type: ignore @@ -87,3 +91,60 @@ async def _(bot: Bot, event: Event, state: dict) -> None: msg0 += " 2、不适用于网易和腾讯。" await generateID.finish(msg0) + + +rollD = on_command("roll", rule=check_banlist()) + + [email protected]() # type: ignore +async def _(bot: Bot, event: Event, state: dict) -> None: + args = str(event.message).strip() + + if args: + state['resu'] = args + + [email protected]("resu", + prompt="roll 参数不能为空~!\ndemo:1d10 或 2d10+2d10") # type: ignore +async def _(bot: Bot, event: Event, state: dict) -> None: + resu = state['resu'] + match = re.match(r'^([\dd+\s]+?)$', resu) + + if not match: + await rollD.finish("请输入正确的参数!!\ndemo:1d10 或 2d10+2d10") + + await rollD.finish(roll_dice(resu)) + + +plugin_name_1 = 'genshin-search' +genshinInfo = on_command('genshin', + rule=check_banlist() & check_switch(plugin_name_1)) + + [email protected]() # type: ignore +async def _(bot: Bot, event: Event, state: dict) -> None: + args = str(event.message).strip() + + if args: + state['uid'] = args + + [email protected]('uid', prompt='请告诉咱需要查询的UID,暂时只支持国服嗷~(') # type: ignore +async def _(bot: Bot, event: Event, state: dict) -> None: + uid = str(state['uid']) + + if (len(uid) == 9 and uid[0] == '1'): + await bot.send(event, '别急,在搜索了!') + uid_info = '' + + try: + uid_info = JsonAnalysis(GetInfo(uid)) + except: + await genshinInfo.finish(errorRepo("数据请求错误,原因可能为ID输入错误或不存在")) + + msg0 = f'{uid} Genshin Info:\n' + msg0 += uid_info + await genshinInfo.finish(msg0) + + else: + await genshinInfo.finish('UID检查未通过,请确保此ID为9位数或者是否为国服ID~!') diff --git a/ATRI/plugins/plugin_utils/genshin.py b/ATRI/plugins/plugin_utils/genshin.py new file mode 100644 index 0000000..d8bcf2f --- /dev/null +++ b/ATRI/plugins/plugin_utils/genshin.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python3 +# -*- encoding: utf-8 -*- +''' +@File : genshin.py +@Time : 2020/11/07 22:34:58 +@Author : Kyomotoi +@Contact : [email protected] +@Github : https://github.com/Kyomotoi +@License : Copyright © 2018-2020 Kyomotoi, All Rights Reserved. +@Docs : Fork from https://github.com/Womsxd/YuanShen_User_Info +''' +__author__ = 'kyomotoi' + +import json +import time +import string +import random +import hashlib +import requests + + +def md5(text: str) -> str: + """text 转 md5""" + md5 = hashlib.md5() + md5.update(text.encode()) + return md5.hexdigest() + + +def DSGet() -> str: + mhyVersion = "2.1.0" + n = md5(mhyVersion) + i = str(int(time.time())) + r = ''.join(random.sample(string.ascii_lowercase + string.digits, 6)) + c = md5("salt=" + n + "&t=" + i + "&r=" + r) + return i + "," + r + "," + c + + +def GetInfo(uid: str) -> str: + """请求API""" + req = requests.get( + url= + f"https://api-takumi.mihoyo.com/game_record/genshin/api/index?server=cn_gf01&role_id={uid}", + headers={ + 'Accept': 'application/json, text/plain, */*', + 'DS': DSGet(), + 'Origin': 'https://webstatic.mihoyo.com', + 'x-rpc-app_version': '2.1.0', + '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' + }) + return req.text + + +def JsonAnalysis(JsonText) -> str: + """解析数据""" + data = json.loads(JsonText) + + Character_Info = "Roles:\n" + Character_List = [] + 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): + TempText = f'* {i["name"]}:\n' + TempText += f' - [萤——妹妹] {i["level"]}级 {Character_Type}\n' + + elif (i["image"].find("UI_AvatarIcon_PlayerBoy") != -1): + TempText = f'* {i["name"]}:\n' + TempText += f' - [空——哥哥] {i["level"]}级 {Character_Type}\n' + + else: + TempText = f'* {i["name"]}:\n' + TempText += f' - [性别判断失败] {i["level"]}级 {Character_Type}\n' + else: + TempText = f'* {i["name"]} {i["rarity"]}★角色:\n' + TempText += f' - {i["level"]}级 好感度({i["fetter"]})级 {Character_Type}\n' + + Character_Info = Character_Info + TempText + + 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"]}个' + + print(Character_Info + "\r\n" + Account_Info) + return Character_Info + "\r\n" + Account_Info
\ No newline at end of file diff --git a/ATRI/plugins/plugin_utils/roll.py b/ATRI/plugins/plugin_utils/roll.py new file mode 100644 index 0000000..bf87aa3 --- /dev/null +++ b/ATRI/plugins/plugin_utils/roll.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 +# -*- encoding: utf-8 -*- +''' +@File : roll.py +@Time : 2020/11/07 15:56:02 +@Author : Kyomotoi +@Contact : [email protected] +@Github : https://github.com/Kyomotoi +@License : Copyright © 2018-2020 Kyomotoi, All Rights Reserved. +''' +__author__ = 'kyomotoi' + +import re +from random import randint + + +def roll_dice(par: str) -> str: + """掷骰子""" + result = 0 + proc = '' + proc_list = [] + p = par.split('+') + + # 计算每个单独的roll + for i in p: + args = re.findall(r"(\d{0,10})(?:(d)(\d{1,10}))", i) + args = list(args[0]) + + if not args[0]: + args[0] = 1 + + if int(args[0]) >= 5000 or int(args[2]) >= 5000: + return '阿..好大...' + + for a in range(1, int(args[0]) + 1): + rd = randint(1, int(args[2])) + result = result + rd + + if len(proc_list) <= 10: + proc_list.append(rd) + + if len(proc_list) == 10: + temp_list = [] + for i in proc_list: + if len(temp_list) == 9: + proc += str(i) + else: + proc += str(i) + '+' + temp_list.append(i) + + elif len(proc_list) >= 10: + proc += '太长了不展示了' + + else: + proc += str(result) + + result = f"{par}=({proc})={result}" + + return str(result) |