mirror of
https://github.com/A-Minos/nonebot-plugin-tetris-stats.git
synced 2026-03-05 05:36:54 +08:00
修复IO绑定用户时 用户不存在导致报错和错误绑定的bug
This commit is contained in:
@@ -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]:
|
||||
|
||||
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user