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
|
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]:
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
Reference in New Issue
Block a user