⬆ Update PTB related dependencies and add version check

This commit is contained in:
洛水居室 2022-11-25 15:33:25 +08:00 committed by GitHub
parent da0faf6d98
commit 84e8d00831
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 56 additions and 38 deletions

View File

@ -10,6 +10,7 @@ from typing import Any, Callable, ClassVar, Dict, Iterator, List, NoReturn, Opti
import genshin import genshin
import pytz import pytz
from async_timeout import timeout from async_timeout import timeout
from telegram import __version__ as tg_version
from telegram.error import NetworkError, TimedOut from telegram.error import NetworkError, TimedOut
from telegram.ext import ( from telegram.ext import (
AIORateLimiter, AIORateLimiter,
@ -40,6 +41,18 @@ __all__ = ["bot"]
T = TypeVar("T") T = TypeVar("T")
PluginType = TypeVar("PluginType", bound=_Plugin) PluginType = TypeVar("PluginType", bound=_Plugin)
try:
from telegram import __version_info__ as tg_version_info
except ImportError:
tg_version_info = (0, 0, 0, 0, 0) # type: ignore[assignment]
if tg_version_info < (20, 0, 0, "alpha", 6):
logger.warning(
"Bot与当前PTB版本 [cyan bold]%s[/] [red bold]不兼容[/],请更新到最新版本后使用 [blue bold]poetry install[/] 重新安装依赖",
tg_version,
extra={"markup": True},
)
class Bot: class Bot:
_lock: ClassVar[Lock] = Lock() _lock: ClassVar[Lock] = Lock()

View File

@ -1,9 +1,9 @@
import contextlib import contextlib
import datetime import datetime
import json import json
from io import BytesIO from os import PathLike
from pathlib import Path from pathlib import Path
from typing import List, Tuple, Optional from typing import List, Tuple, Optional, IO, Union
import aiofiles import aiofiles
from genshin import Client, InvalidAuthkey from genshin import Client, InvalidAuthkey
@ -600,10 +600,10 @@ class GachaLog:
} }
@staticmethod @staticmethod
def convert_xlsx_to_uigf(data: BytesIO, zh_dict: dict) -> dict: def convert_xlsx_to_uigf(file: Union[str, PathLike[str], IO[bytes]], zh_dict: dict) -> dict:
"""转换 paimone.moe 或 非小酋 导出 xlsx 数据为 UIGF 格式 """转换 paimone.moe 或 非小酋 导出 xlsx 数据为 UIGF 格式
:param file: 导出的 xlsx 文件
:param zh_dict: :param zh_dict:
:param data: paimon.moe 导出的 xlsx 数据
:return: UIGF 格式数据 :return: UIGF 格式数据
""" """
@ -654,7 +654,7 @@ class GachaLog:
uigf_gacha_type=uigf_gacha_type, uigf_gacha_type=uigf_gacha_type,
) )
wb = load_workbook(data) wb = load_workbook(file)
wb_len = len(wb.worksheets) wb_len = len(wb.worksheets)
if wb_len == 6: if wb_len == 6:

View File

@ -109,14 +109,13 @@ class GachaLogPlugin(Plugin.Conversation, BasePlugin.Conversation):
await message.reply_text("文件过大,请发送小于 2 MB 的文件") await message.reply_text("文件过大,请发送小于 2 MB 的文件")
return return
try: try:
data = BytesIO() out = BytesIO()
await (await document.get_file()).download(out=data) await (await document.get_file()).download_to_memory(out=out)
if file_type == "json": if file_type == "json":
# bytesio to json # bytesio to json
data = data.getvalue().decode("utf-8") data = json.loads(out.getvalue().decode("utf-8"))
data = json.loads(data)
elif file_type == "xlsx": elif file_type == "xlsx":
data = self.gacha_log.convert_xlsx_to_uigf(data, self.zh_dict) data = self.gacha_log.convert_xlsx_to_uigf(out, self.zh_dict)
except PaimonMoeGachaLogFileError as exc: except PaimonMoeGachaLogFileError as exc:
await message.reply_text( await message.reply_text(
"导入失败PaimonMoe的抽卡记录当前版本不支持\n" f"支持抽卡记录的版本为 {exc.support_version},你的抽卡记录版本为 {exc.file_version}" "导入失败PaimonMoe的抽卡记录当前版本不支持\n" f"支持抽卡记录的版本为 {exc.support_version},你的抽卡记录版本为 {exc.file_version}"

59
poetry.lock generated
View File

@ -159,7 +159,7 @@ python-versions = ">=3.5"
dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"]
docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"]
tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"]
tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"]
[[package]] [[package]]
name = "backports.zoneinfo" name = "backports.zoneinfo"
@ -234,7 +234,7 @@ optional = false
python-versions = ">=3.6.0" python-versions = ">=3.6.0"
[package.extras] [package.extras]
unicode-backport = ["unicodedata2"] unicode_backport = ["unicodedata2"]
[[package]] [[package]]
name = "click" name = "click"
@ -385,7 +385,7 @@ python-versions = ">=3.7"
[[package]] [[package]]
name = "genshin" name = "genshin"
version = "1.4.0" version = "1.4.0"
description = "" description = "An API wrapper for Genshin Impact."
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
@ -405,7 +405,7 @@ geetest = ["rsa"]
type = "git" type = "git"
url = "https://github.com/thesadru/genshin.py" url = "https://github.com/thesadru/genshin.py"
reference = "HEAD" reference = "HEAD"
resolved_reference = "7d0b3353d8f92323f9343a9a14ec9a65b794b4f9" resolved_reference = "dbebc29f485f01e352e75c6e389e754369101a9c"
[[package]] [[package]]
name = "gitdb" name = "gitdb"
@ -479,7 +479,7 @@ test = ["Cython (>=0.29.24,<0.30.0)"]
[[package]] [[package]]
name = "httpx" name = "httpx"
version = "0.23.0" version = "0.23.1"
description = "The next generation HTTP client." description = "The next generation HTTP client."
category = "main" category = "main"
optional = false optional = false
@ -487,7 +487,7 @@ python-versions = ">=3.7"
[package.dependencies] [package.dependencies]
certifi = "*" certifi = "*"
httpcore = ">=0.15.0,<0.16.0" httpcore = ">=0.15.0,<0.17.0"
rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]}
sniffio = "*" sniffio = "*"
@ -841,24 +841,29 @@ cli = ["click (>=5.0)"]
[[package]] [[package]]
name = "python-telegram-bot" name = "python-telegram-bot"
version = "20.0a4" version = "20.0a6"
description = "We have made you a wrapper you can't refuse" description = "We have made you a wrapper you can't refuse"
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
[package.dependencies] [package.dependencies]
aiolimiter = {version = ">=1.0.0,<1.1.0", optional = true, markers = "extra == \"rate-limiter\""} aiolimiter = {version = ">=1.0.0,<1.1.0", optional = true, markers = "extra == \"ext\""}
APScheduler = ">=3.9.1,<3.10.0" APScheduler = {version = ">=3.9.1,<3.10.0", optional = true, markers = "extra == \"ext\""}
cachetools = ">=5.2.0,<5.3.0" cachetools = {version = ">=5.2.0,<5.3.0", optional = true, markers = "extra == \"ext\""}
httpx = ">=0.23.0,<0.24.0" httpx = ">=0.23.1,<0.24.0"
pytz = ">=2018.6" pytz = {version = ">=2018.6", optional = true, markers = "extra == \"ext\""}
tornado = ">=6.2,<7.0" tornado = {version = ">=6.2,<7.0", optional = true, markers = "extra == \"ext\""}
[package.extras] [package.extras]
all = ["APScheduler (>=3.9.1,<3.10.0)", "aiolimiter (>=1.0.0,<1.1.0)", "cachetools (>=5.2.0,<5.3.0)", "cryptography (>=3.0,!=3.4,!=3.4.1,!=3.4.2,!=3.4.3)", "httpx[socks]", "pytz (>=2018.6)", "tornado (>=6.2,<7.0)"]
callback-data = ["cachetools (>=5.2.0,<5.3.0)"]
ext = ["APScheduler (>=3.9.1,<3.10.0)", "aiolimiter (>=1.0.0,<1.1.0)", "cachetools (>=5.2.0,<5.3.0)", "pytz (>=2018.6)", "tornado (>=6.2,<7.0)"]
job-queue = ["APScheduler (>=3.9.1,<3.10.0)", "pytz (>=2018.6)"]
passport = ["cryptography (>=3.0,!=3.4,!=3.4.1,!=3.4.2,!=3.4.3)"] passport = ["cryptography (>=3.0,!=3.4,!=3.4.1,!=3.4.2,!=3.4.3)"]
rate-limiter = ["aiolimiter (>=1.0.0,<1.1.0)"] rate-limiter = ["aiolimiter (>=1.0.0,<1.1.0)"]
socks = ["httpx[socks]"] socks = ["httpx[socks]"]
webhooks = ["tornado (>=6.2,<7.0)"]
[[package]] [[package]]
name = "pytz" name = "pytz"
@ -958,7 +963,7 @@ falcon = ["falcon (>=1.4)"]
fastapi = ["fastapi (>=0.79.0)"] fastapi = ["fastapi (>=0.79.0)"]
flask = ["blinker (>=1.1)", "flask (>=0.11)"] flask = ["blinker (>=1.1)", "flask (>=0.11)"]
httpx = ["httpx (>=0.16.0)"] httpx = ["httpx (>=0.16.0)"]
pure-eval = ["asttokens", "executing", "pure-eval"] pure_eval = ["asttokens", "executing", "pure-eval"]
pymongo = ["pymongo (>=3.1)"] pymongo = ["pymongo (>=3.1)"]
pyspark = ["pyspark (>=2.4.4)"] pyspark = ["pyspark (>=2.4.4)"]
quart = ["blinker (>=1.1)", "quart (>=0.16.1)"] quart = ["blinker (>=1.1)", "quart (>=0.16.1)"]
@ -1037,19 +1042,19 @@ aiomysql = ["aiomysql", "greenlet (!=0.4.17)"]
aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"]
asyncio = ["greenlet (!=0.4.17)"] asyncio = ["greenlet (!=0.4.17)"]
asyncmy = ["asyncmy (>=0.2.3,!=0.2.4)", "greenlet (!=0.4.17)"] asyncmy = ["asyncmy (>=0.2.3,!=0.2.4)", "greenlet (!=0.4.17)"]
mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2)"] mariadb_connector = ["mariadb (>=1.0.1,!=1.1.2)"]
mssql = ["pyodbc"] mssql = ["pyodbc"]
mssql-pymssql = ["pymssql"] mssql_pymssql = ["pymssql"]
mssql-pyodbc = ["pyodbc"] mssql_pyodbc = ["pyodbc"]
mypy = ["mypy (>=0.910)", "sqlalchemy2-stubs"] mypy = ["mypy (>=0.910)", "sqlalchemy2-stubs"]
mysql = ["mysqlclient (>=1.4.0)", "mysqlclient (>=1.4.0,<2)"] mysql = ["mysqlclient (>=1.4.0)", "mysqlclient (>=1.4.0,<2)"]
mysql-connector = ["mysql-connector-python"] mysql_connector = ["mysql-connector-python"]
oracle = ["cx_oracle (>=7)", "cx_oracle (>=7,<8)"] oracle = ["cx_oracle (>=7)", "cx_oracle (>=7,<8)"]
postgresql = ["psycopg2 (>=2.7)"] postgresql = ["psycopg2 (>=2.7)"]
postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] postgresql_asyncpg = ["asyncpg", "greenlet (!=0.4.17)"]
postgresql-pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] postgresql_pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"]
postgresql-psycopg2binary = ["psycopg2-binary"] postgresql_psycopg2binary = ["psycopg2-binary"]
postgresql-psycopg2cffi = ["psycopg2cffi"] postgresql_psycopg2cffi = ["psycopg2cffi"]
pymysql = ["pymysql", "pymysql (<1)"] pymysql = ["pymysql", "pymysql (<1)"]
sqlcipher = ["sqlcipher3_binary"] sqlcipher = ["sqlcipher3_binary"]
@ -1281,7 +1286,7 @@ test = ["pytest", "pytest-asyncio", "flaky"]
[metadata] [metadata]
lock-version = "1.1" lock-version = "1.1"
python-versions = "^3.8" python-versions = "^3.8"
content-hash = "8ace0efe60f2b3917062367b82b331530d7edb334a8e21a548da26e906756c56" content-hash = "48beacc925cc4637c5ee31cb25c69491b3ade0d4042381b0aafa9707a99e4f01"
[metadata.files] [metadata.files]
aiofiles = [ aiofiles = [
@ -1704,8 +1709,8 @@ httptools = [
{file = "httptools-0.5.0.tar.gz", hash = "sha256:295874861c173f9101960bba332429bb77ed4dcd8cdf5cee9922eb00e4f6bc09"}, {file = "httptools-0.5.0.tar.gz", hash = "sha256:295874861c173f9101960bba332429bb77ed4dcd8cdf5cee9922eb00e4f6bc09"},
] ]
httpx = [ httpx = [
{file = "httpx-0.23.0-py3-none-any.whl", hash = "sha256:42974f577483e1e932c3cdc3cd2303e883cbfba17fe228b0f63589764d7b9c4b"}, {file = "httpx-0.23.1-py3-none-any.whl", hash = "sha256:0b9b1f0ee18b9978d637b0776bfd7f54e2ca278e063e3586d8f01cda89e042a8"},
{file = "httpx-0.23.0.tar.gz", hash = "sha256:f28eac771ec9eb4866d3fb4ab65abd42d38c424739e80c08d8d20570de60b0ef"}, {file = "httpx-0.23.1.tar.gz", hash = "sha256:202ae15319be24efe9a8bd4ed4360e68fde7b38bcc2ce87088d416f026667d19"},
] ]
idna = [ idna = [
{file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"},
@ -2085,8 +2090,8 @@ python-dotenv = [
{file = "python_dotenv-0.21.0-py3-none-any.whl", hash = "sha256:1684eb44636dd462b66c3ee016599815514527ad99965de77f43e0944634a7e5"}, {file = "python_dotenv-0.21.0-py3-none-any.whl", hash = "sha256:1684eb44636dd462b66c3ee016599815514527ad99965de77f43e0944634a7e5"},
] ]
python-telegram-bot = [ python-telegram-bot = [
{file = "python-telegram-bot-20.0a4.tar.gz", hash = "sha256:3ec10b5169d40697aba77f245538ecdf989e9ae429fcaddc69a202579b4a6dcb"}, {file = "python-telegram-bot-20.0a6.tar.gz", hash = "sha256:aac039b54043d5c1778b182d506f2d51ddccef746eeb36e6ca9a236c4cd1c848"},
{file = "python_telegram_bot-20.0a4-py3-none-any.whl", hash = "sha256:79ce5a179017baeae362382c86c19951413a277ac8dd3f736824da36432ed2e9"}, {file = "python_telegram_bot-20.0a6-py3-none-any.whl", hash = "sha256:0279d0d727ab36e4b42a8819656098485bcd0724961c2f5fced3218b15b26c02"},
] ]
pytz = [ pytz = [
{file = "pytz-2022.4-py2.py3-none-any.whl", hash = "sha256:2c0784747071402c6e99f0bafdb7da0fa22645f06554c7ae06bf6358897e9c91"}, {file = "pytz-2022.4-py2.py3-none-any.whl", hash = "sha256:2c0784747071402c6e99f0bafdb7da0fa22645f06554c7ae06bf6358897e9c91"},

View File

@ -8,10 +8,11 @@ readme = "README.md"
[tool.poetry.dependencies] [tool.poetry.dependencies]
python = "^3.8" python = "^3.8"
httpx= "^0.23.1"
ujson = "^5.5.0" ujson = "^5.5.0"
genshin = { git = "https://github.com/thesadru/genshin.py" } genshin = { git = "https://github.com/thesadru/genshin.py" }
Jinja2 = "^3.1.2" Jinja2 = "^3.1.2"
python-telegram-bot = { version = "^20.0a4", extras = ["rate-limiter"] } python-telegram-bot = { version = "^20.0a6", extras = ["ext", "rate-limiter"] }
Pillow = "^9.3.0" Pillow = "^9.3.0"
sqlmodel = "^0.0.8" sqlmodel = "^0.0.8"
colorlog = "^6.7.0" colorlog = "^6.7.0"