mirror of
https://github.com/A-Minos/nonebot-plugin-tetris-stats.git
synced 2026-03-05 05:36:54 +08:00
整理代码
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,3 +2,4 @@ dist
|
||||
test*
|
||||
Untitled*
|
||||
*copy*
|
||||
.vscode
|
||||
|
||||
@@ -30,16 +30,18 @@ class Processor:
|
||||
if user_data[1] is False:
|
||||
return f'用户信息请求错误:\n{user_data[2]["error"]}'
|
||||
user_id = await cls.get_user_id(user_data[2])
|
||||
if qq_number is None: # 理论上是不会有None出现的, ide快乐行属于是(
|
||||
logger.error('获取QQ号失败')
|
||||
return '获取QQ号失败'
|
||||
return (
|
||||
await DataBase.write_bind_info(
|
||||
qq_number=qq_number,
|
||||
user=user_id,
|
||||
game_type='IO'
|
||||
if qq_number is None: # 理论上是不会有None出现的, ide快乐行属于是(
|
||||
logger.error('获取QQ号失败')
|
||||
return '获取QQ号失败'
|
||||
return (
|
||||
await DataBase.write_bind_info(
|
||||
qq_number=qq_number,
|
||||
user=user_id,
|
||||
game_type='IO'
|
||||
)
|
||||
)
|
||||
)
|
||||
logger.error('预期外行为, 请上报GitHub')
|
||||
return '出现预期外行为,请查看后台信息'
|
||||
|
||||
@classmethod
|
||||
async def handle_query(cls, message: str, qq_number: int | None):
|
||||
@@ -68,8 +70,8 @@ class Processor:
|
||||
@classmethod
|
||||
async def get_user_data(
|
||||
cls,
|
||||
user_name: str = None,
|
||||
user_id: str = None
|
||||
user_name: str | None = None,
|
||||
user_id: str | None = None
|
||||
) -> tuple[bool, bool, dict[str, Any]]:
|
||||
'''获取用户数据'''
|
||||
if user_name is not None and user_id is None:
|
||||
@@ -83,8 +85,8 @@ class Processor:
|
||||
@classmethod
|
||||
async def get_solo_data(
|
||||
cls,
|
||||
user_name: str = None,
|
||||
user_id: str = None
|
||||
user_name: str | None = None,
|
||||
user_id: str | None = None
|
||||
) -> tuple[bool, bool, dict[str, Any]]:
|
||||
'''获取Solo数据'''
|
||||
if user_name is not None and user_id is None:
|
||||
@@ -162,7 +164,11 @@ class Processor:
|
||||
return blitz_stats
|
||||
|
||||
@classmethod
|
||||
async def generate_message(cls, user_name: str = None, user_id: str = None) -> str:
|
||||
async def generate_message(
|
||||
cls,
|
||||
user_name: str | None = None,
|
||||
user_id: str | None = None
|
||||
) -> str:
|
||||
'''生成消息'''
|
||||
user_data, solo_data = await gather(
|
||||
cls.get_user_data(user_name=user_name, user_id=user_id),
|
||||
|
||||
@@ -68,7 +68,10 @@ class Request:
|
||||
else:
|
||||
assert isinstance(response, Response)
|
||||
cls._headers = await response.request.all_headers()
|
||||
cls._cookies = {i['name']: i['value'] for i in await context.cookies()}
|
||||
try:
|
||||
cls._cookies = {i['name']: i['value'] for i in await context.cookies()}
|
||||
except KeyError:
|
||||
cls._cookies = None
|
||||
await page.close()
|
||||
await context.close()
|
||||
return True, data['success'], data
|
||||
@@ -139,10 +142,10 @@ class Request:
|
||||
async with session.get(url, headers=cls._headers) as resp:
|
||||
data = await resp.json()
|
||||
return True, data['success'], data
|
||||
except aiohttp.client_exceptions.ClientConnectorError as error:
|
||||
except aiohttp.client_exceptions.ClientConnectorError as error: # type: ignore
|
||||
logger.error(f'请求错误\n{error}')
|
||||
return False, False, {}
|
||||
except aiohttp.client_exceptions.ContentTypeError:
|
||||
except aiohttp.client_exceptions.ContentTypeError: # type: ignore
|
||||
return await cls._anti_cloudflare(url)
|
||||
|
||||
@classmethod
|
||||
|
||||
@@ -33,16 +33,16 @@ async def _(event: MessageEvent, matcher: Matcher):
|
||||
if await check_user(user_data[1]) is False:
|
||||
await matcher.finish('用户不存在')
|
||||
user_name = await get_user_name(user_data[1])
|
||||
if event.sender.user_id is None: # 理论上是不会有None出现的, ide快乐行属于是(
|
||||
logger.error('获取QQ号失败')
|
||||
await matcher.finish('获取QQ号失败')
|
||||
await matcher.finish(
|
||||
await DataBase.write_bind_info(
|
||||
qq_number=event.sender.user_id,
|
||||
user=user_name,
|
||||
game_type='TOP'
|
||||
)
|
||||
)
|
||||
if event.sender.user_id is None: # 理论上是不会有None出现的, ide快乐行属于是(
|
||||
logger.error('获取QQ号失败')
|
||||
await matcher.finish('获取QQ号失败')
|
||||
await matcher.finish(
|
||||
await DataBase.write_bind_info(
|
||||
qq_number=event.sender.user_id,
|
||||
user=user_name,
|
||||
game_type='TOP'
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@TopStats.handle()
|
||||
@@ -69,6 +69,8 @@ async def _(event: MessageEvent, matcher: Matcher):
|
||||
message = (f'* 由于无法验证绑定信息, 不能保证查询到的用户为本人\n{await generate_message(bind_info)}')
|
||||
elif decoded_message[0] == 'Name':
|
||||
message = await generate_message(decoded_message[1][1])
|
||||
else:
|
||||
raise ValueError('预期外行为, 请上报GitHub')
|
||||
await matcher.finish(message)
|
||||
|
||||
|
||||
@@ -79,7 +81,7 @@ async def get_user_data(user_name: str) -> tuple[bool, str]:
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(url) as resp:
|
||||
return True, await resp.text()
|
||||
except aiohttp.client_exceptions.ClientConnectorError as error:
|
||||
except aiohttp.client_exceptions.ClientConnectorError as error: # type: ignore
|
||||
logger.error(error)
|
||||
return False, ''
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@ async def _(event: MessageEvent, matcher: Matcher):
|
||||
message = await generate_message(tea_id=event.sender.user_id)
|
||||
elif decoded_message[0] == 'Name':
|
||||
message = await generate_message(user_name=decoded_message[1][1])
|
||||
else:
|
||||
raise ValueError('预期外行为, 请上报GitHub')
|
||||
await matcher.finish(message)
|
||||
|
||||
|
||||
@@ -40,14 +42,14 @@ async def request(url: str) -> tuple[bool, bool, dict[str, Any]]:
|
||||
async with session.get(url) as resp:
|
||||
data = await resp.json()
|
||||
return True, data['success'], data
|
||||
except aiohttp.client_exceptions.ClientConnectorError as error:
|
||||
except aiohttp.client_exceptions.ClientConnectorError as error: # type: ignore
|
||||
logger.error(f'请求错误\n{error}')
|
||||
return False, False, {}
|
||||
|
||||
|
||||
async def get_user_info(
|
||||
user_name: str = None,
|
||||
tea_id: int = None
|
||||
user_name: str | None = None,
|
||||
tea_id: int | None = None
|
||||
) -> tuple[bool, bool, dict[str, Any]]:
|
||||
'''获取用户信息'''
|
||||
if user_name is not None and tea_id is None:
|
||||
@@ -60,8 +62,8 @@ async def get_user_info(
|
||||
|
||||
|
||||
async def get_user_data(
|
||||
user_name: str = None,
|
||||
tea_id: int = None,
|
||||
user_name: str | None = None,
|
||||
tea_id: int | None = None,
|
||||
other_parameter: str = ''
|
||||
) -> tuple[bool, bool, dict[str, Any]]:
|
||||
'''获取用户数据'''
|
||||
@@ -77,8 +79,8 @@ async def get_user_data(
|
||||
async def get_rank_stats(user_info: dict) -> dict[str, float]:
|
||||
'''获取Rank数据'''
|
||||
data = user_info['data']
|
||||
rank_stats = {}
|
||||
if int(data['rankedGames']) != 0:
|
||||
rank_stats = {}
|
||||
rank_stats['Rating'] = round(float(data['ratingNow']), 2)
|
||||
rank_stats['RD'] = round(float(data['rdNow']), 2)
|
||||
rank_stats['Vol'] = round(float(data['volNow']), 3)
|
||||
@@ -87,8 +89,8 @@ async def get_rank_stats(user_info: dict) -> dict[str, float]:
|
||||
|
||||
async def get_game_data(user_data: dict) -> dict[str, int | float]:
|
||||
'''获取游戏数据'''
|
||||
game_data: dict[str, int | float] = {}
|
||||
if user_data['data'] != []:
|
||||
game_data: dict[str, int | float] = {}
|
||||
weighted_total_lpm = weighted_total_apm = weighted_total_adpm = total_time = num = 0
|
||||
for i in user_data['data']:
|
||||
# 排除单人局和时间为0的游戏
|
||||
@@ -136,7 +138,10 @@ async def get_pb_data(user_info: dict) -> dict[str, float | str]:
|
||||
return pb_data
|
||||
|
||||
|
||||
async def generate_message(user_name: str = None, tea_id: int = None) -> str:
|
||||
async def generate_message(
|
||||
user_name: str | None = None,
|
||||
tea_id: int | None = None
|
||||
) -> str:
|
||||
'''生成消息'''
|
||||
user_info, user_data = await gather(
|
||||
get_user_info(user_name=user_name, tea_id=tea_id),
|
||||
|
||||
@@ -76,6 +76,8 @@ class DataBase():
|
||||
cursor.execute(
|
||||
f'INSERT INTO {game_type}BIND (QQ, USER) VALUES (?, ?)', (qq_number, user))
|
||||
message = '绑定成功'
|
||||
else:
|
||||
raise ValueError('预期外行为, 请上报GitHub')
|
||||
db.commit()
|
||||
return message
|
||||
|
||||
|
||||
Reference in New Issue
Block a user