修复IO绑定用户时 用户不存在导致报错和错误绑定的bug

This commit is contained in:
2022-05-25 14:27:27 +08:00
parent a77e190cf7
commit 2a19b9fe4c
2 changed files with 30 additions and 12 deletions

View File

@@ -46,13 +46,27 @@ async def getSoloData(userName: str = None, userID: str = None) -> dict[str, dic
return soloData 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 # 获取用户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) userData = await getUserData(userName=userName)
elif userData is None and userName is None: if userData['Status'] is False:
raise ValueError('[TETRIS STATS] IODataProcessing.getUserID: 参数错误') return {'Success': False, 'Message': '用户信息请求失败'}
return userData['Data']['data']['user']['_id'] 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]: async def getLeagueStats(userData: dict) -> dict[str, bool | int | str | float]:

View File

@@ -8,7 +8,7 @@ from .MessageAnalyzer import *
from .SQL import * from .SQL import *
from .IODataProcessing import generateMessage as IOgenerateMessage from .IODataProcessing import generateMessage as IOgenerateMessage
from .IODataProcessing import getUserID as IOgetUserID from .IODataProcessing import getUserIDInfo as IOgetUserIDInfo
from .TOSDataProcessing import generateMessage as TOSgenerateMessage from .TOSDataProcessing import generateMessage as TOSgenerateMessage
driver = get_driver() driver = get_driver()
@@ -33,13 +33,17 @@ async def bindIOUser(event: MessageEvent, matcher: Matcher):
decodedMessage = await handleBindMessage(message=str(event.get_message()), gameType='IO') decodedMessage = await handleBindMessage(message=str(event.get_message()), gameType='IO')
if decodedMessage['Success'] is True: if decodedMessage['Success'] is True:
if decodedMessage['Type'] == 'ID': 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': elif decodedMessage['Type'] == 'Name':
user = await IOgetUserID(userName=decodedMessage['User']) userIDInfo = await IOgetUserIDInfo(userName=decodedMessage['User'])
message = await writeBindInfo(QQNumber=event.sender.user_id, user=user, gameType='IO') 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: elif decodedMessage['Success'] is False:
message = decodedMessage['Message'] message = decodedMessage['Message']
await matcher.send(message=message) await matcher.finish(message=message)
@ioStats.handle() @ioStats.handle()
@@ -84,9 +88,9 @@ async def handleTOSStatsQuery(event: MessageEvent, matcher: Matcher):
@topBind.handle() @topBind.handle()
async def bindTOPUser(event: MessageEvent, matcher: Matcher): async def bindTOPUser(event: MessageEvent, matcher: Matcher):
await matcher.send(message='TODO') await matcher.finish(message='TODO')
@topStats.handle() @topStats.handle()
async def handleTOPStatsQuery(event: MessageEvent, matcher: Matcher): async def handleTOPStatsQuery(event: MessageEvent, matcher: Matcher):
await matcher.send(message='TODO') await matcher.finish(message='TODO')