From 01e85960fae337688a8a0eb92fed54be0e00188a Mon Sep 17 00:00:00 2001 From: shoucandanghehe Date: Wed, 26 Jun 2024 19:54:14 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E4=B8=BA=20TETR.IO=20config=20reco?= =?UTF-8?q?rd=20=E6=B7=BB=E5=8A=A0=E5=91=BD=E4=BB=A4=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../games/tetrio/config.py | 28 ++++++++---- .../games/tetrio/record/blitz.py | 45 ++++++++++++------- .../games/tetrio/record/sprint.py | 45 ++++++++++++------- 3 files changed, 77 insertions(+), 41 deletions(-) diff --git a/nonebot_plugin_tetris_stats/games/tetrio/config.py b/nonebot_plugin_tetris_stats/games/tetrio/config.py index 03ff5c0..53efbe7 100644 --- a/nonebot_plugin_tetris_stats/games/tetrio/config.py +++ b/nonebot_plugin_tetris_stats/games/tetrio/config.py @@ -1,20 +1,30 @@ from nonebot_plugin_alconna.uniseg import UniMessage from nonebot_plugin_orm import async_scoped_session +from nonebot_plugin_session import EventSession # type: ignore[import-untyped] +from nonebot_plugin_session_orm import get_session_persist_id # type: ignore[import-untyped] from nonebot_plugin_user import User # type: ignore[import-untyped] from sqlalchemy import select +from ...db import trigger from . import alc +from .constant import GAME_TYPE from .models import TETRIOUserConfig from .typing import Template @alc.assign('TETRIO.config') -async def _(user: User, session: async_scoped_session, template: Template): - config = (await session.scalars(select(TETRIOUserConfig).where(TETRIOUserConfig.id == user.id))).one_or_none() - if config is None: - config = TETRIOUserConfig(id=user.id, query_template=template) - session.add(config) - else: - config.query_template = template - await session.commit() - await UniMessage('配置成功').finish() +async def _(user: User, session: async_scoped_session, event_session: EventSession, template: Template): + async with trigger( + session_persist_id=await get_session_persist_id(event_session), + game_platform=GAME_TYPE, + command_type='config', + command_args=[], + ): + config = (await session.scalars(select(TETRIOUserConfig).where(TETRIOUserConfig.id == user.id))).one_or_none() + if config is None: + config = TETRIOUserConfig(id=user.id, query_template=template) + session.add(config) + else: + config.query_template = template + await session.commit() + await UniMessage('配置成功').finish() diff --git a/nonebot_plugin_tetris_stats/games/tetrio/record/blitz.py b/nonebot_plugin_tetris_stats/games/tetrio/record/blitz.py index 81ad785..b005bd1 100644 --- a/nonebot_plugin_tetris_stats/games/tetrio/record/blitz.py +++ b/nonebot_plugin_tetris_stats/games/tetrio/record/blitz.py @@ -9,9 +9,10 @@ from nonebot_plugin_alconna import At from nonebot_plugin_alconna.uniseg import UniMessage from nonebot_plugin_orm import get_session from nonebot_plugin_session import EventSession # type: ignore[import-untyped] +from nonebot_plugin_session_orm import get_session_persist_id # type: ignore[import-untyped] from nonebot_plugin_user import get_user # type: ignore[import-untyped] -from ....db import query_bind_info +from ....db import query_bind_info, trigger from ....utils.exception import RecordNotFoundError from ....utils.host import HostPage, get_self_netloc from ....utils.metrics import get_metrics @@ -34,24 +35,36 @@ async def _( target: At | Me, event_session: EventSession, ): - async with get_session() as session: - bind = await query_bind_info( - session=session, - user=await get_user( - event_session.platform, target.target if isinstance(target, At) else event.get_user_id() - ), - game_platform=GAME_TYPE, - ) - if bind is None: - await matcher.finish('未查询到绑定信息') - message = UniMessage(CANT_VERIFY_MESSAGE) - player = Player(user_id=bind.game_account, trust=True) - await (message + UniMessage.image(raw=await make_blitz_image(player))).finish() + async with trigger( + session_persist_id=await get_session_persist_id(event_session), + game_platform=GAME_TYPE, + command_type='bind', + command_args=[], + ): + async with get_session() as session: + bind = await query_bind_info( + session=session, + user=await get_user( + event_session.platform, target.target if isinstance(target, At) else event.get_user_id() + ), + game_platform=GAME_TYPE, + ) + if bind is None: + await matcher.finish('未查询到绑定信息') + message = UniMessage(CANT_VERIFY_MESSAGE) + player = Player(user_id=bind.game_account, trust=True) + await (message + UniMessage.image(raw=await make_blitz_image(player))).finish() @alc.assign('TETRIO.record.blitz') -async def _(account: Player): - await UniMessage.image(raw=await make_blitz_image(account)).finish() +async def _(account: Player, event_session: EventSession): + async with trigger( + session_persist_id=await get_session_persist_id(event_session), + game_platform=GAME_TYPE, + command_type='bind', + command_args=[], + ): + await UniMessage.image(raw=await make_blitz_image(account)).finish() async def make_blitz_image(player: Player) -> bytes: diff --git a/nonebot_plugin_tetris_stats/games/tetrio/record/sprint.py b/nonebot_plugin_tetris_stats/games/tetrio/record/sprint.py index 33e4ec0..bb7c4f3 100644 --- a/nonebot_plugin_tetris_stats/games/tetrio/record/sprint.py +++ b/nonebot_plugin_tetris_stats/games/tetrio/record/sprint.py @@ -9,9 +9,10 @@ from nonebot_plugin_alconna import At from nonebot_plugin_alconna.uniseg import UniMessage from nonebot_plugin_orm import get_session from nonebot_plugin_session import EventSession # type: ignore[import-untyped] +from nonebot_plugin_session_orm import get_session_persist_id # type: ignore[import-untyped] from nonebot_plugin_user import get_user # type: ignore[import-untyped] -from ....db import query_bind_info +from ....db import query_bind_info, trigger from ....utils.exception import RecordNotFoundError from ....utils.host import HostPage, get_self_netloc from ....utils.metrics import get_metrics @@ -34,24 +35,36 @@ async def _( target: At | Me, event_session: EventSession, ): - async with get_session() as session: - bind = await query_bind_info( - session=session, - user=await get_user( - event_session.platform, target.target if isinstance(target, At) else event.get_user_id() - ), - game_platform=GAME_TYPE, - ) - if bind is None: - await matcher.finish('未查询到绑定信息') - message = UniMessage(CANT_VERIFY_MESSAGE) - player = Player(user_id=bind.game_account, trust=True) - await (message + UniMessage.image(raw=await make_sprint_image(player))).finish() + async with trigger( + session_persist_id=await get_session_persist_id(event_session), + game_platform=GAME_TYPE, + command_type='bind', + command_args=[], + ): + async with get_session() as session: + bind = await query_bind_info( + session=session, + user=await get_user( + event_session.platform, target.target if isinstance(target, At) else event.get_user_id() + ), + game_platform=GAME_TYPE, + ) + if bind is None: + await matcher.finish('未查询到绑定信息') + message = UniMessage(CANT_VERIFY_MESSAGE) + player = Player(user_id=bind.game_account, trust=True) + await (message + UniMessage.image(raw=await make_sprint_image(player))).finish() @alc.assign('TETRIO.record.sprint') -async def _(account: Player): - await UniMessage.image(raw=await make_sprint_image(account)).finish() +async def _(account: Player, event_session: EventSession): + async with trigger( + session_persist_id=await get_session_persist_id(event_session), + game_platform=GAME_TYPE, + command_type='bind', + command_args=[], + ): + await UniMessage.image(raw=await make_sprint_image(account)).finish() async def make_sprint_image(player: Player) -> bytes: