修复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
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]:

View File

@@ -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')