From 2a19b9fe4c4873394684331651435b5cec5fda04 Mon Sep 17 00:00:00 2001 From: scdhh Date: Wed, 25 May 2022 14:27:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DIO=E7=BB=91=E5=AE=9A=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=97=B6=20=E7=94=A8=E6=88=B7=E4=B8=8D=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E5=AF=BC=E8=87=B4=E6=8A=A5=E9=94=99=E5=92=8C=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E7=BB=91=E5=AE=9A=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IODataProcessing.py | 24 +++++++++++++++---- nonebot_plugin_tetris_stats/__init__.py | 18 ++++++++------ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/nonebot_plugin_tetris_stats/IODataProcessing.py b/nonebot_plugin_tetris_stats/IODataProcessing.py index c7ef97d..38ec4a7 100644 --- a/nonebot_plugin_tetris_stats/IODataProcessing.py +++ b/nonebot_plugin_tetris_stats/IODataProcessing.py @@ -46,13 +46,27 @@ async def getSoloData(userName: str = None, userID: str = None) -> dict[str, dic return soloData -async def getUserID(userData: dict = None, userName: str = None) -> str: +async def getUserIDInfo(userData: dict = None, userName: str = None, userID: str = None) -> dict[str, bool | str]: # 获取用户ID - if userName is not None and userData is None: + if userData is not None and userName is None and userID is None: + userID = userData['Data']['data']['user']['id'] + elif userData is None and userName is not None and userID is None: userData = await getUserData(userName=userName) - elif userData is None and userName is None: - raise ValueError('[TETRIS STATS] IODataProcessing.getUserID: 参数错误') - return userData['Data']['data']['user']['_id'] + if userData['Status'] is False: + return {'Success': False, 'Message': '用户信息请求失败'} + if userData['Success'] is False: + return {'Success': False, 'Message': f'用户信息请求错误:\n{userData["Data"]["error"]}'} + userID = userData['Data']['data']['user']['id'] + elif userData is None and userName is None and userID is not None: + userData = await getUserData(userID=userID) + if userData['Status'] is False: + return {'Success': False, 'Message': '用户信息请求失败'} + if userData['Success'] is False: + return {'Success': False, 'Message': f'用户信息请求错误:\n{userData["Data"]["error"]}'} + userID = userData['Data']['data']['user']['id'] + else: + raise ValueError('[TETRIS STATS] IODataProcessing.getUserIDInfo: 参数错误') + return {'Success': True, 'userID': userID} async def getLeagueStats(userData: dict) -> dict[str, bool | int | str | float]: diff --git a/nonebot_plugin_tetris_stats/__init__.py b/nonebot_plugin_tetris_stats/__init__.py index 4a82aa2..411339d 100644 --- a/nonebot_plugin_tetris_stats/__init__.py +++ b/nonebot_plugin_tetris_stats/__init__.py @@ -8,7 +8,7 @@ from .MessageAnalyzer import * from .SQL import * from .IODataProcessing import generateMessage as IOgenerateMessage -from .IODataProcessing import getUserID as IOgetUserID +from .IODataProcessing import getUserIDInfo as IOgetUserIDInfo from .TOSDataProcessing import generateMessage as TOSgenerateMessage driver = get_driver() @@ -33,13 +33,17 @@ async def bindIOUser(event: MessageEvent, matcher: Matcher): decodedMessage = await handleBindMessage(message=str(event.get_message()), gameType='IO') if decodedMessage['Success'] is True: if decodedMessage['Type'] == 'ID': - user = decodedMessage['User'] + userIDInfo = await IOgetUserIDInfo(userID=decodedMessage['User']) + if userIDInfo['Success'] is False: + await matcher.finish(message=userIDInfo['Message']) elif decodedMessage['Type'] == 'Name': - user = await IOgetUserID(userName=decodedMessage['User']) - message = await writeBindInfo(QQNumber=event.sender.user_id, user=user, gameType='IO') + userIDInfo = await IOgetUserIDInfo(userName=decodedMessage['User']) + if userIDInfo['Success'] is False: + await matcher.finish(message=userIDInfo['Message']) + message = await writeBindInfo(QQNumber=event.sender.user_id, user=userIDInfo['userID'], gameType='IO') elif decodedMessage['Success'] is False: message = decodedMessage['Message'] - await matcher.send(message=message) + await matcher.finish(message=message) @ioStats.handle() @@ -84,9 +88,9 @@ async def handleTOSStatsQuery(event: MessageEvent, matcher: Matcher): @topBind.handle() async def bindTOPUser(event: MessageEvent, matcher: Matcher): - await matcher.send(message='TODO') + await matcher.finish(message='TODO') @topStats.handle() async def handleTOPStatsQuery(event: MessageEvent, matcher: Matcher): - await matcher.send(message='TODO') + await matcher.finish(message='TODO')