From 30ea0b99cb96d1111270bb85a9851a46c725f95c Mon Sep 17 00:00:00 2001 From: omg-xtao <100690902+omg-xtao@users.noreply.github.com> Date: Sat, 22 Apr 2023 21:14:31 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=9A=20Isolated=20recognize=20method?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/tools/recognize.py | 59 +++++++++++++ plugins/tools/sign.py | 55 +----------- poetry.lock | 170 ++++++++++++++++++------------------- requirements.txt | 36 ++++---- 4 files changed, 165 insertions(+), 155 deletions(-) create mode 100644 plugins/tools/recognize.py diff --git a/plugins/tools/recognize.py b/plugins/tools/recognize.py new file mode 100644 index 0000000..c9cc659 --- /dev/null +++ b/plugins/tools/recognize.py @@ -0,0 +1,59 @@ +from json import JSONDecodeError +from typing import Optional + +from httpx import AsyncClient, TimeoutException + +from core.config import config +from utils.log import logger + + +class RecognizeSystem: + REFERER = ( + "https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?" + "bbs_auth_required=true&act_id=e202009291139501&utm_source=bbs&utm_medium=mys&utm_campaign=icon" + ) + + @staticmethod + async def recognize(gt: str, challenge: str, referer: str = None, uid: int = None) -> Optional[str]: + if not referer: + referer = RecognizeSystem.REFERER + if not gt or not challenge or not uid: + return None + pass_challenge_params = { + "gt": gt, + "challenge": challenge, + "referer": referer, + } + if config.pass_challenge_app_key: + pass_challenge_params["appkey"] = config.pass_challenge_app_key + headers = { + "Accept": "*/*", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) " + "Chrome/107.0.0.0 Safari/537.36", + } + try: + async with AsyncClient(headers=headers) as client: + resp = await client.post( + config.pass_challenge_api, + params=pass_challenge_params, + timeout=60, + ) + logger.debug("recognize 请求返回:%s", resp.text) + data = resp.json() + status = data.get("status") + if status != 0: + logger.error("recognize 解析错误:[%s]%s", data.get("code"), data.get("msg")) + if data.get("code", 0) != 0: + raise RuntimeError + logger.info("recognize 解析成功") + return data["data"]["validate"] + except JSONDecodeError: + logger.warning("recognize 请求 JSON 解析失败") + except TimeoutException as exc: + logger.warning("recognize 请求超时") + raise exc + except KeyError: + logger.warning("recognize 请求数据错误") + except RuntimeError: + logger.warning("recognize 请求失败") + return None diff --git a/plugins/tools/sign.py b/plugins/tools/sign.py index abedef9..2ccd704 100644 --- a/plugins/tools/sign.py +++ b/plugins/tools/sign.py @@ -3,13 +3,12 @@ import datetime import random import time from enum import Enum -from json import JSONDecodeError from typing import Optional, Tuple, List, TYPE_CHECKING from aiohttp import ClientConnectorError from genshin import Game, GenshinException, AlreadyClaimed, Client, InvalidCookies from genshin.utility import recognize_genshin_server -from httpx import AsyncClient, TimeoutException +from httpx import TimeoutException from telegram import InlineKeyboardButton, InlineKeyboardMarkup from telegram.constants import ParseMode from telegram.error import Forbidden, BadRequest @@ -23,6 +22,7 @@ from core.services.sign.services import SignServices from core.services.users.services import UserService from modules.apihelper.client.components.verify import Verify from plugins.tools.genshin import GenshinHelper, CookiesNotFoundError, PlayerNotFoundError +from plugins.tools.recognize import RecognizeSystem from utils.log import logger if TYPE_CHECKING: @@ -49,11 +49,6 @@ class NeedChallenge(Exception): class SignSystem(Plugin): - REFERER = ( - "https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?" - "bbs_auth_required=true&act_id=e202009291139501&utm_source=bbs&utm_medium=mys&utm_campaign=icon" - ) - def __init__( self, redis: RedisDB, @@ -107,50 +102,6 @@ class SignSystem(Plugin): ) return InlineKeyboardMarkup([[InlineKeyboardButton("请尽快点我进行手动验证", url=url)]]) - async def recognize(self, gt: str, challenge: str, referer: str = None) -> Optional[str]: - if not referer: - referer = self.REFERER - if not gt or not challenge: - return None - pass_challenge_params = { - "gt": gt, - "challenge": challenge, - "referer": referer, - } - if config.pass_challenge_app_key: - pass_challenge_params["appkey"] = config.pass_challenge_app_key - headers = { - "Accept": "*/*", - "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) " - "Chrome/107.0.0.0 Safari/537.36", - } - try: - async with AsyncClient(headers=headers) as client: - resp = await client.post( - config.pass_challenge_api, - params=pass_challenge_params, - timeout=60, - ) - logger.debug("recognize 请求返回:%s", resp.text) - data = resp.json() - status = data.get("status") - if status != 0: - logger.error("recognize 解析错误:[%s]%s", data.get("code"), data.get("msg")) - if data.get("code", 0) != 0: - raise RuntimeError - logger.info("recognize 解析成功") - return data["data"]["validate"] - except JSONDecodeError: - logger.warning("recognize 请求 JSON 解析失败") - except TimeoutException as exc: - logger.warning("recognize 请求超时") - raise exc - except KeyError: - logger.warning("recognize 请求数据错误") - except RuntimeError: - logger.warning("recognize 请求失败") - return None - async def start_sign( self, client: Client, @@ -235,7 +186,7 @@ class SignSystem(Plugin): _gt = _request_daily_reward.get("gt", "") _challenge = _request_daily_reward.get("challenge", "") logger.info("UID[%s] 创建验证码\ngt[%s]\nchallenge[%s]", client.uid, _gt, _challenge) - _validate = await self.recognize(_gt, _challenge) + _validate = await RecognizeSystem.recognize(_gt, _challenge, uid=client.uid) if _validate: logger.success("recognize 通过验证成功\nchallenge[%s]\nvalidate[%s]", _challenge, _validate) request_daily_reward = await client.request_daily_reward( diff --git a/poetry.lock b/poetry.lock index 7727f7b..c59bb75 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. [[package]] name = "aiofiles" @@ -357,22 +357,22 @@ files = [ [[package]] name = "attrs" -version = "22.2.0" +version = "23.1.0" description = "Classes Without Boilerplate" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, - {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, + {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, + {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, ] [package.extras] -cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"] -tests = ["attrs[tests-no-zope]", "zope.interface"] -tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] [[package]] name = "backports-zoneinfo" @@ -405,14 +405,14 @@ tzdata = ["tzdata"] [[package]] name = "beautifulsoup4" -version = "4.12.1" +version = "4.12.2" description = "Screen-scraping library" category = "main" optional = false python-versions = ">=3.6.0" files = [ - {file = "beautifulsoup4-4.12.1-py3-none-any.whl", hash = "sha256:e44795bb4f156d94abb5fbc56efff871c1045bfef72e9efe77558db9f9616ac3"}, - {file = "beautifulsoup4-4.12.1.tar.gz", hash = "sha256:c7bdbfb20a0dbe09518b96a809d93351b2e2bcb8046c0809466fa6632a10c257"}, + {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"}, + {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"}, ] [package.dependencies] @@ -705,31 +705,31 @@ development = ["black", "flake8", "mypy", "pytest", "types-colorama"] [[package]] name = "cryptography" -version = "40.0.1" +version = "40.0.2" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "cryptography-40.0.1-cp36-abi3-macosx_10_12_universal2.whl", hash = "sha256:918cb89086c7d98b1b86b9fdb70c712e5a9325ba6f7d7cfb509e784e0cfc6917"}, - {file = "cryptography-40.0.1-cp36-abi3-macosx_10_12_x86_64.whl", hash = "sha256:9618a87212cb5200500e304e43691111570e1f10ec3f35569fdfcd17e28fd797"}, - {file = "cryptography-40.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a4805a4ca729d65570a1b7cac84eac1e431085d40387b7d3bbaa47e39890b88"}, - {file = "cryptography-40.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63dac2d25c47f12a7b8aa60e528bfb3c51c5a6c5a9f7c86987909c6c79765554"}, - {file = "cryptography-40.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0a4e3406cfed6b1f6d6e87ed243363652b2586b2d917b0609ca4f97072994405"}, - {file = "cryptography-40.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1e0af458515d5e4028aad75f3bb3fe7a31e46ad920648cd59b64d3da842e4356"}, - {file = "cryptography-40.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:d8aa3609d337ad85e4eb9bb0f8bcf6e4409bfb86e706efa9a027912169e89122"}, - {file = "cryptography-40.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cf91e428c51ef692b82ce786583e214f58392399cf65c341bc7301d096fa3ba2"}, - {file = "cryptography-40.0.1-cp36-abi3-win32.whl", hash = "sha256:650883cc064297ef3676b1db1b7b1df6081794c4ada96fa457253c4cc40f97db"}, - {file = "cryptography-40.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:a805a7bce4a77d51696410005b3e85ae2839bad9aa38894afc0aa99d8e0c3160"}, - {file = "cryptography-40.0.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cd033d74067d8928ef00a6b1327c8ea0452523967ca4463666eeba65ca350d4c"}, - {file = "cryptography-40.0.1-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d36bbeb99704aabefdca5aee4eba04455d7a27ceabd16f3b3ba9bdcc31da86c4"}, - {file = "cryptography-40.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:32057d3d0ab7d4453778367ca43e99ddb711770477c4f072a51b3ca69602780a"}, - {file = "cryptography-40.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:f5d7b79fa56bc29580faafc2ff736ce05ba31feaa9d4735048b0de7d9ceb2b94"}, - {file = "cryptography-40.0.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7c872413353c70e0263a9368c4993710070e70ab3e5318d85510cc91cce77e7c"}, - {file = "cryptography-40.0.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:28d63d75bf7ae4045b10de5413fb1d6338616e79015999ad9cf6fc538f772d41"}, - {file = "cryptography-40.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6f2bbd72f717ce33100e6467572abaedc61f1acb87b8d546001328d7f466b778"}, - {file = "cryptography-40.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cc3a621076d824d75ab1e1e530e66e7e8564e357dd723f2533225d40fe35c60c"}, - {file = "cryptography-40.0.1.tar.gz", hash = "sha256:2803f2f8b1e95f614419926c7e6f55d828afc614ca5ed61543877ae668cc3472"}, + {file = "cryptography-40.0.2-cp36-abi3-macosx_10_12_universal2.whl", hash = "sha256:8f79b5ff5ad9d3218afb1e7e20ea74da5f76943ee5edb7f76e56ec5161ec782b"}, + {file = "cryptography-40.0.2-cp36-abi3-macosx_10_12_x86_64.whl", hash = "sha256:05dc219433b14046c476f6f09d7636b92a1c3e5808b9a6536adf4932b3b2c440"}, + {file = "cryptography-40.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4df2af28d7bedc84fe45bd49bc35d710aede676e2a4cb7fc6d103a2adc8afe4d"}, + {file = "cryptography-40.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dcca15d3a19a66e63662dc8d30f8036b07be851a8680eda92d079868f106288"}, + {file = "cryptography-40.0.2-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:a04386fb7bc85fab9cd51b6308633a3c271e3d0d3eae917eebab2fac6219b6d2"}, + {file = "cryptography-40.0.2-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:adc0d980fd2760c9e5de537c28935cc32b9353baaf28e0814df417619c6c8c3b"}, + {file = "cryptography-40.0.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:d5a1bd0e9e2031465761dfa920c16b0065ad77321d8a8c1f5ee331021fda65e9"}, + {file = "cryptography-40.0.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a95f4802d49faa6a674242e25bfeea6fc2acd915b5e5e29ac90a32b1139cae1c"}, + {file = "cryptography-40.0.2-cp36-abi3-win32.whl", hash = "sha256:aecbb1592b0188e030cb01f82d12556cf72e218280f621deed7d806afd2113f9"}, + {file = "cryptography-40.0.2-cp36-abi3-win_amd64.whl", hash = "sha256:b12794f01d4cacfbd3177b9042198f3af1c856eedd0a98f10f141385c809a14b"}, + {file = "cryptography-40.0.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:142bae539ef28a1c76794cca7f49729e7c54423f615cfd9b0b1fa90ebe53244b"}, + {file = "cryptography-40.0.2-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:956ba8701b4ffe91ba59665ed170a2ebbdc6fc0e40de5f6059195d9f2b33ca0e"}, + {file = "cryptography-40.0.2-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4f01c9863da784558165f5d4d916093737a75203a5c5286fde60e503e4276c7a"}, + {file = "cryptography-40.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3daf9b114213f8ba460b829a02896789751626a2a4e7a43a28ee77c04b5e4958"}, + {file = "cryptography-40.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48f388d0d153350f378c7f7b41497a54ff1513c816bcbbcafe5b829e59b9ce5b"}, + {file = "cryptography-40.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c0764e72b36a3dc065c155e5b22f93df465da9c39af65516fe04ed3c68c92636"}, + {file = "cryptography-40.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:cbaba590180cba88cb99a5f76f90808a624f18b169b90a4abb40c1fd8c19420e"}, + {file = "cryptography-40.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7a38250f433cd41df7fcb763caa3ee9362777fdb4dc642b9a349721d2bf47404"}, + {file = "cryptography-40.0.2.tar.gz", hash = "sha256:c33c0d32b8594fa647d2e01dbccc303478e16fdd7cf98652d5b3ed11aa5e5c99"}, ] [package.dependencies] @@ -764,7 +764,7 @@ pydantic = "*" type = "git" url = "https://github.com/mrwan200/EnkaNetwork.py" reference = "HEAD" -resolved_reference = "68482c394bcce9d5e42896e4c3a17d0022283c7b" +resolved_reference = "0cda4c1098aa3bc63ccab6f1683499ce53afe4d2" [[package]] name = "et-xmlfile" @@ -815,14 +815,14 @@ lua = ["lupa (>=1.14,<2.0)"] [[package]] name = "fastapi" -version = "0.95.0" +version = "0.95.1" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "fastapi-0.95.0-py3-none-any.whl", hash = "sha256:daf73bbe844180200be7966f68e8ec9fd8be57079dff1bacb366db32729e6eb5"}, - {file = "fastapi-0.95.0.tar.gz", hash = "sha256:99d4fdb10e9dd9a24027ac1d0bd4b56702652056ca17a6c8721eec4ad2f14e18"}, + {file = "fastapi-0.95.1-py3-none-any.whl", hash = "sha256:a870d443e5405982e1667dfe372663abf10754f246866056336d7f01c21dab07"}, + {file = "fastapi-0.95.1.tar.gz", hash = "sha256:9569f0a381f8a457ec479d90fa01005cfddaae07546eb1f3fa035bc4797ae7d5"}, ] [package.dependencies] @@ -1180,14 +1180,14 @@ files = [ [[package]] name = "importlib-metadata" -version = "6.1.0" +version = "6.5.0" description = "Read metadata from Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "importlib_metadata-6.1.0-py3-none-any.whl", hash = "sha256:ff80f3b5394912eb1b108fcfd444dc78b7f1f3e16b16188054bd01cb9cb86f09"}, - {file = "importlib_metadata-6.1.0.tar.gz", hash = "sha256:43ce9281e097583d758c2c708c4376371261a02c34682491a8e98352365aad20"}, + {file = "importlib_metadata-6.5.0-py3-none-any.whl", hash = "sha256:03ba783c3a2c69d751b109fc0c94a62c51f581b3d6acf8ed1331b6d5729321ff"}, + {file = "importlib_metadata-6.5.0.tar.gz", hash = "sha256:7a8bdf1bc3a726297f5cfbc999e6e7ff6b4fa41b26bba4afc580448624460045"}, ] [package.dependencies] @@ -1570,14 +1570,14 @@ et-xmlfile = "*" [[package]] name = "packaging" -version = "23.0" +version = "23.1" description = "Core utilities for Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"}, - {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"}, + {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, + {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, ] [[package]] @@ -1816,14 +1816,14 @@ files = [ [[package]] name = "pygments" -version = "2.14.0" +version = "2.15.1" description = "Pygments is a syntax highlighting package written in Python." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "Pygments-2.14.0-py3-none-any.whl", hash = "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717"}, - {file = "Pygments-2.14.0.tar.gz", hash = "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297"}, + {file = "Pygments-2.15.1-py3-none-any.whl", hash = "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1"}, + {file = "Pygments-2.15.1.tar.gz", hash = "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c"}, ] [package.extras] @@ -1864,14 +1864,14 @@ websockets = ">=10.0,<11.0" [[package]] name = "pyrogram" -version = "2.0.102" +version = "2.0.104" description = "Elegant, modern and asynchronous Telegram MTProto API framework in Python for users and bots" category = "main" optional = true python-versions = "~=3.7" files = [ - {file = "Pyrogram-2.0.102-py3-none-any.whl", hash = "sha256:fc5e4d234312a99a69ff325159d674d232a21d2717b97935f755d35693dd9df3"}, - {file = "Pyrogram-2.0.102.tar.gz", hash = "sha256:9cdd259022deb66d2545eac027aeca4f7e2ccdda0eaa706cb7114b763beb67d1"}, + {file = "Pyrogram-2.0.104-py3-none-any.whl", hash = "sha256:20f9bebd3a42f6bf9e90b798a431ccc065a19baa3dd3ff94be6ee32e5ed038bd"}, + {file = "Pyrogram-2.0.104.tar.gz", hash = "sha256:c8588d3f379efbacbeead42d31745dc2482de6dbcc19c46ebfb2bf25b780a67e"}, ] [package.dependencies] @@ -1893,14 +1893,14 @@ files = [ [[package]] name = "pytest" -version = "7.3.0" +version = "7.3.1" description = "pytest: simple powerful testing with Python" category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "pytest-7.3.0-py3-none-any.whl", hash = "sha256:933051fa1bfbd38a21e73c3960cebdad4cf59483ddba7696c48509727e17f201"}, - {file = "pytest-7.3.0.tar.gz", hash = "sha256:58ecc27ebf0ea643ebfdf7fb1249335da761a00c9f955bcd922349bcb68ee57d"}, + {file = "pytest-7.3.1-py3-none-any.whl", hash = "sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362"}, + {file = "pytest-7.3.1.tar.gz", hash = "sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3"}, ] [package.dependencies] @@ -1961,7 +1961,7 @@ files = [ ] [package.dependencies] -aiolimiter = {version = ">=1.0.0,<1.1.0", optional = true, markers = "extra == \"ext\""} +aiolimiter = {version = ">=1.0.0,<1.1.0", optional = true, markers = "extra == \"ext\" or extra == \"rate-limiter\""} APScheduler = {version = ">=3.10.1,<3.11.0", optional = true, markers = "extra == \"ext\""} cachetools = {version = ">=5.3.0,<5.4.0", optional = true, markers = "extra == \"ext\""} httpx = ">=0.23.3,<0.24.0" @@ -2120,14 +2120,14 @@ idna2008 = ["idna"] [[package]] name = "rich" -version = "13.3.3" +version = "13.3.4" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" category = "main" optional = false python-versions = ">=3.7.0" files = [ - {file = "rich-13.3.3-py3-none-any.whl", hash = "sha256:540c7d6d26a1178e8e8b37e9ba44573a3cd1464ff6348b99ee7061b95d1c6333"}, - {file = "rich-13.3.3.tar.gz", hash = "sha256:dc84400a9d842b3a9c5ff74addd8eb798d155f36c1c91303888e0a66850d2a15"}, + {file = "rich-13.3.4-py3-none-any.whl", hash = "sha256:22b74cae0278fd5086ff44144d3813be1cedc9115bdfabbfefd86400cb88b20a"}, + {file = "rich-13.3.4.tar.gz", hash = "sha256:b5d573e13605423ec80bdd0cd5f8541f7844a0e71a13f74cf454ccb2f490708b"}, ] [package.dependencies] @@ -2140,14 +2140,14 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "sentry-sdk" -version = "1.19.1" +version = "1.20.0" description = "Python client for Sentry (https://sentry.io)" category = "main" optional = false python-versions = "*" files = [ - {file = "sentry-sdk-1.19.1.tar.gz", hash = "sha256:7ae78bd921981a5010ab540d6bdf3b793659a4db8cccf7f16180702d48a80d84"}, - {file = "sentry_sdk-1.19.1-py2.py3-none-any.whl", hash = "sha256:885a11c69df23e53eb281d003b9ff15a5bdfa43d8a2a53589be52104a1b4582f"}, + {file = "sentry-sdk-1.20.0.tar.gz", hash = "sha256:a3410381ae769a436c0852cce140a5e5e49f566a07fb7c2ab445af1302f6ad89"}, + {file = "sentry_sdk-1.20.0-py2.py3-none-any.whl", hash = "sha256:0ad6bbbe78057b8031a07de7aca6d2a83234e51adc4d436eaf8d8c697184db71"}, ] [package.dependencies] @@ -2182,14 +2182,14 @@ tornado = ["tornado (>=5)"] [[package]] name = "setuptools" -version = "67.6.1" +version = "67.7.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-67.6.1-py3-none-any.whl", hash = "sha256:e728ca814a823bf7bf60162daf9db95b93d532948c4c0bea762ce62f60189078"}, - {file = "setuptools-67.6.1.tar.gz", hash = "sha256:257de92a9d50a60b8e22abfcbb771571fde0dbf3ec234463212027a4eeecbe9a"}, + {file = "setuptools-67.7.1-py3-none-any.whl", hash = "sha256:6f0839fbdb7e3cfef1fc38d7954f5c1c26bf4eebb155a55c9bf8faf997b9fb67"}, + {file = "setuptools-67.7.1.tar.gz", hash = "sha256:bb16732e8eb928922eabaa022f881ae2b7cdcfaf9993ef1f5e841a96d32b8e0c"}, ] [package.extras] @@ -2247,14 +2247,14 @@ files = [ [[package]] name = "soupsieve" -version = "2.4" +version = "2.4.1" description = "A modern CSS selector implementation for Beautiful Soup." category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "soupsieve-2.4-py3-none-any.whl", hash = "sha256:49e5368c2cda80ee7e84da9dbe3e110b70a4575f196efb74e51b94549d921955"}, - {file = "soupsieve-2.4.tar.gz", hash = "sha256:e28dba9ca6c7c00173e34e4ba57448f0688bb681b7c5e8bf4971daafc093d69a"}, + {file = "soupsieve-2.4.1-py3-none-any.whl", hash = "sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8"}, + {file = "soupsieve-2.4.1.tar.gz", hash = "sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea"}, ] [[package]] @@ -2309,7 +2309,7 @@ files = [ ] [package.dependencies] -greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} +greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and platform_machine == \"aarch64\" or python_version >= \"3\" and platform_machine == \"ppc64le\" or python_version >= \"3\" and platform_machine == \"x86_64\" or python_version >= \"3\" and platform_machine == \"amd64\" or python_version >= \"3\" and platform_machine == \"AMD64\" or python_version >= \"3\" and platform_machine == \"win32\" or python_version >= \"3\" and platform_machine == \"WIN32\""} [package.extras] aiomysql = ["aiomysql", "greenlet (!=0.4.17)"] @@ -2334,14 +2334,14 @@ sqlcipher = ["sqlcipher3-binary"] [[package]] name = "sqlalchemy2-stubs" -version = "0.0.2a32" +version = "0.0.2a34" description = "Typing Stubs for SQLAlchemy 1.4" category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "sqlalchemy2-stubs-0.0.2a32.tar.gz", hash = "sha256:2a2cfab71d35ac63bf21ad841d8610cd93a3bd4c6562848c538fa975585c2739"}, - {file = "sqlalchemy2_stubs-0.0.2a32-py3-none-any.whl", hash = "sha256:7f5fb30b0cf7c6b74c50c1d94df77ff32007afee8d80499752eb3fedffdbdfb8"}, + {file = "sqlalchemy2-stubs-0.0.2a34.tar.gz", hash = "sha256:2432137ab2fde1a608df4544f6712427b0b7ff25990cfbbc5a9d1db6c8c6f489"}, + {file = "sqlalchemy2_stubs-0.0.2a34-py3-none-any.whl", hash = "sha256:a313220ac793404349899faf1272e821a62dbe1d3a029bd444faa8d3e966cd07"}, ] [package.dependencies] @@ -2478,23 +2478,23 @@ files = [ [[package]] name = "tornado" -version = "6.2" +version = "6.3" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." category = "main" optional = false -python-versions = ">= 3.7" +python-versions = ">= 3.8" files = [ - {file = "tornado-6.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:20f638fd8cc85f3cbae3c732326e96addff0a15e22d80f049e00121651e82e72"}, - {file = "tornado-6.2-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:87dcafae3e884462f90c90ecc200defe5e580a7fbbb4365eda7c7c1eb809ebc9"}, - {file = "tornado-6.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba09ef14ca9893954244fd872798b4ccb2367c165946ce2dd7376aebdde8e3ac"}, - {file = "tornado-6.2-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8150f721c101abdef99073bf66d3903e292d851bee51910839831caba341a75"}, - {file = "tornado-6.2-cp37-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3a2f5999215a3a06a4fc218026cd84c61b8b2b40ac5296a6db1f1451ef04c1e"}, - {file = "tornado-6.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5f8c52d219d4995388119af7ccaa0bcec289535747620116a58d830e7c25d8a8"}, - {file = "tornado-6.2-cp37-abi3-musllinux_1_1_i686.whl", hash = "sha256:6fdfabffd8dfcb6cf887428849d30cf19a3ea34c2c248461e1f7d718ad30b66b"}, - {file = "tornado-6.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:1d54d13ab8414ed44de07efecb97d4ef7c39f7438cf5e976ccd356bebb1b5fca"}, - {file = "tornado-6.2-cp37-abi3-win32.whl", hash = "sha256:5c87076709343557ef8032934ce5f637dbb552efa7b21d08e89ae7619ed0eb23"}, - {file = "tornado-6.2-cp37-abi3-win_amd64.whl", hash = "sha256:e5f923aa6a47e133d1cf87d60700889d7eae68988704e20c75fb2d65677a8e4b"}, - {file = "tornado-6.2.tar.gz", hash = "sha256:9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13"}, + {file = "tornado-6.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:6cfff1e9c15c79e106b8352269d201f8fc0815914a6260f3893ca18b724ea94b"}, + {file = "tornado-6.3-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6164571f5b9f73143d1334df4584cb9ac86d20c461e17b6c189a19ead8bb93c1"}, + {file = "tornado-6.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4546003dc8b5733489139d3bff5fa6a0211be505faf819bd9970e7c2b32e8122"}, + {file = "tornado-6.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c659ab04d5aa477dbe44152c67d93f3ad3243b992d94f795ca1d5c73c37337ce"}, + {file = "tornado-6.3-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:912df5712024564e362ecce43c8d5862e14c78c8dd3846c9d889d44fbd7f4951"}, + {file = "tornado-6.3-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:c37b6a384d54ce6a31168d40ab21ad2591ddaf34973075cc0cad154402ecd9e8"}, + {file = "tornado-6.3-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:c9114a61a4588c09065b9996ae05462350d17160b92b9bf9a1e93689cc0424dc"}, + {file = "tornado-6.3-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:4d349846931557b7ec92f224b5d598b160e2ba26ae1812480b42e9622c884bf7"}, + {file = "tornado-6.3-cp38-abi3-win32.whl", hash = "sha256:d7b737e18f701de3e4a3b0824260b4d740e4d60607b8089bb80e80ffd464780e"}, + {file = "tornado-6.3-cp38-abi3-win_amd64.whl", hash = "sha256:720f53e6367b38190ae7fa398c25c086c69d88b3c6535bd6021a126b727fb5cd"}, + {file = "tornado-6.3.tar.gz", hash = "sha256:d68f3192936ff2c4add04dc21a436a43b4408d466746b78bb2b9d0a53a18683f"}, ] [[package]] @@ -2944,10 +2944,10 @@ docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [extras] -all = ["pytest", "pytest-asyncio", "flaky", "Pyrogram", "TgCrypto", "aiosqlite"] +all = ["Pyrogram", "TgCrypto", "aiosqlite", "flaky", "pytest", "pytest-asyncio"] pyro = ["Pyrogram", "TgCrypto"] sqlite = ["aiosqlite"] -test = ["pytest", "pytest-asyncio", "flaky"] +test = ["flaky", "pytest", "pytest-asyncio"] [metadata] lock-version = "2.0" diff --git a/requirements.txt b/requirements.txt index 93c15b5..df589d8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,8 +2,8 @@ aiofiles==23.1.0 ; python_version >= "3.8" and python_version < "4.0" aiohttp==3.8.4 ; python_version >= "3.8" and python_version < "4.0" aiolimiter==1.0.0 ; python_version >= "3.8" and python_version < "4.0" aiosignal==1.3.1 ; python_version >= "3.8" and python_version < "4.0" -aiosqlite[sqlite]==0.18.0 ; python_version >= "3.8" and python_version < "4.0" -alembic==1.10.2 ; python_version >= "3.8" and python_version < "4.0" +aiosqlite[sqlite]==0.19.0 ; python_version >= "3.8" and python_version < "4.0" +alembic==1.10.3 ; python_version >= "3.8" and python_version < "4.0" anyio==3.6.2 ; python_version >= "3.8" and python_version < "4.0" appdirs==1.4.4 ; python_version >= "3.8" and python_version < "4.0" apscheduler==3.10.1 ; python_version >= "3.8" and python_version < "4.0" @@ -11,9 +11,9 @@ arko-wrapper==0.2.8 ; python_version >= "3.8" and python_version < "4.0" async-lru==2.0.2 ; python_version >= "3.8" and python_version < "4.0" async-timeout==4.0.2 ; python_version >= "3.8" and python_version < "4.0" asyncmy==0.2.7 ; python_version >= "3.8" and python_version < "4.0" -attrs==22.2.0 ; python_version >= "3.8" and python_version < "4.0" +attrs==23.1.0 ; python_version >= "3.8" and python_version < "4.0" backports-zoneinfo==0.2.1 ; python_version >= "3.8" and python_version < "3.9" -beautifulsoup4==4.12.0 ; python_version >= "3.8" and python_version < "4.0" +beautifulsoup4==4.12.2 ; python_version >= "3.8" and python_version < "4.0" black==23.3.0 ; python_version >= "3.8" and python_version < "4.0" cachetools==5.3.0 ; python_version >= "3.8" and python_version < "4.0" certifi==2022.12.7 ; python_version >= "3.8" and python_version < "4.0" @@ -22,12 +22,12 @@ charset-normalizer==3.1.0 ; python_version >= "3.8" and python_version < "4.0" click==8.1.3 ; python_version >= "3.8" and python_version < "4.0" colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" and sys_platform == "win32" or python_version >= "3.8" and python_version < "4.0" and platform_system == "Windows" colorlog==6.7.0 ; python_version >= "3.8" and python_version < "4.0" -cryptography==40.0.1 ; python_version >= "3.8" and python_version < "4.0" +cryptography==40.0.2 ; python_version >= "3.8" and python_version < "4.0" enkanetwork-py @ git+https://github.com/mrwan200/EnkaNetwork.py@master ; python_version >= "3.8" and python_version < "4.0" et-xmlfile==1.1.0 ; python_version >= "3.8" and python_version < "4.0" exceptiongroup==1.1.1 ; python_version >= "3.8" and python_version < "3.11" -fakeredis==2.10.2 ; python_version >= "3.8" and python_version < "4.0" -fastapi==0.95.0 ; python_version >= "3.8" and python_version < "4.0" +fakeredis==2.10.3 ; python_version >= "3.8" and python_version < "4.0" +fastapi==0.95.1 ; python_version >= "3.8" and python_version < "4.0" flaky==3.7.0 ; python_version >= "3.8" and python_version < "4.0" frozenlist==1.3.3 ; python_version >= "3.8" and python_version < "4.0" genshin @ git+https://github.com/thesadru/genshin.py@master ; python_version >= "3.8" and python_version < "4.0" @@ -39,7 +39,7 @@ httpcore==0.16.3 ; python_version >= "3.8" and python_version < "4.0" httptools==0.5.0 ; python_version >= "3.8" and python_version < "4.0" httpx==0.23.3 ; python_version >= "3.8" and python_version < "4.0" idna==3.4 ; python_version >= "3.8" and python_version < "4.0" -importlib-metadata==6.1.0 ; python_version >= "3.8" and python_version < "4.0" +importlib-metadata==6.5.0 ; python_version >= "3.8" and python_version < "4.0" importlib-resources==5.12.0 ; python_version >= "3.8" and python_version < "3.9" iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4.0" jinja2==3.1.2 ; python_version >= "3.8" and python_version < "4.0" @@ -51,7 +51,7 @@ mdurl==0.1.2 ; python_version >= "3.8" and python_version < "4.0" multidict==6.0.4 ; python_version >= "3.8" and python_version < "4.0" mypy-extensions==1.0.0 ; python_version >= "3.8" and python_version < "4.0" openpyxl==3.1.2 ; python_version >= "3.8" and python_version < "4.0" -packaging==23.0 ; python_version >= "3.8" and python_version < "4.0" +packaging==23.1 ; python_version >= "3.8" and python_version < "4.0" pathspec==0.11.1 ; python_version >= "3.8" and python_version < "4.0" pillow==9.5.0 ; python_version >= "3.8" and python_version < "4.0" platformdirs==3.2.0 ; python_version >= "3.8" and python_version < "4.0" @@ -61,13 +61,13 @@ pyaes==1.6.1 ; python_version >= "3.8" and python_version < "4.0" pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0" pydantic==1.10.7 ; python_version >= "3.8" and python_version < "4.0" pyee==8.1.0 ; python_version >= "3.8" and python_version < "4.0" -pygments==2.14.0 ; python_version >= "3.8" and python_version < "4.0" +pygments==2.15.1 ; python_version >= "3.8" and python_version < "4.0" pypng==0.20220715.0 ; python_version >= "3.8" and python_version < "4.0" pyppeteer==1.0.2 ; python_version >= "3.8" and python_version < "4.0" -pyrogram==2.0.102 ; python_version >= "3.8" and python_version < "4.0" +pyrogram==2.0.104 ; python_version >= "3.8" and python_version < "4.0" pysocks==1.7.1 ; python_version >= "3.8" and python_version < "4.0" pytest-asyncio==0.21.0 ; python_version >= "3.8" and python_version < "4.0" -pytest==7.2.2 ; python_version >= "3.8" and python_version < "4.0" +pytest==7.3.1 ; python_version >= "3.8" and python_version < "4.0" python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" python-telegram-bot[ext,rate-limiter]==20.2 ; python_version >= "3.8" and python_version < "4.0" pytz-deprecation-shim==0.1.0.post0 ; python_version >= "3.8" and python_version < "4.0" @@ -76,22 +76,22 @@ pyyaml==6.0 ; python_version >= "3.8" and python_version < "4.0" qrcode==7.4.2 ; python_version >= "3.8" and python_version < "4.0" redis==4.5.4 ; python_version >= "3.8" and python_version < "4.0" rfc3986[idna2008]==1.5.0 ; python_version >= "3.8" and python_version < "4.0" -rich==13.3.3 ; python_version >= "3.8" and python_version < "4.0" -sentry-sdk==1.18.0 ; python_version >= "3.8" and python_version < "4.0" -setuptools==67.6.1 ; python_version >= "3.8" and python_version < "4.0" +rich==13.3.4 ; python_version >= "3.8" and python_version < "4.0" +sentry-sdk==1.20.0 ; python_version >= "3.8" and python_version < "4.0" +setuptools==67.7.1 ; python_version >= "3.8" and python_version < "4.0" six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" smmap==5.0.0 ; python_version >= "3.8" and python_version < "4.0" sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" sortedcontainers==2.4.0 ; python_version >= "3.8" and python_version < "4.0" -soupsieve==2.4 ; python_version >= "3.8" and python_version < "4.0" -sqlalchemy2-stubs==0.0.2a32 ; python_version >= "3.8" and python_version < "4.0" +soupsieve==2.4.1 ; python_version >= "3.8" and python_version < "4.0" +sqlalchemy2-stubs==0.0.2a34 ; python_version >= "3.8" and python_version < "4.0" sqlalchemy==1.4.41 ; python_version >= "3.8" and python_version < "4.0" sqlmodel==0.0.8 ; python_version >= "3.8" and python_version < "4.0" starlette==0.26.1 ; python_version >= "3.8" and python_version < "4.0" tgcrypto==1.2.5 ; python_version >= "3.8" and python_version < "4.0" thefuzz==0.19.0 ; python_version >= "3.8" and python_version < "4.0" tomli==2.0.1 ; python_version >= "3.8" and python_version < "3.11" -tornado==6.2 ; python_version >= "3.8" and python_version < "4.0" +tornado==6.3 ; python_version >= "3.8" and python_version < "4.0" tqdm==4.65.0 ; python_version >= "3.8" and python_version < "4.0" typing-extensions==4.5.0 ; python_version >= "3.8" and python_version < "4.0" tzdata==2023.3 ; python_version >= "3.8" and python_version < "4.0"