mirror of
https://github.com/A-Minos/nonebot-plugin-tetris-stats.git
synced 2026-03-05 05:36:54 +08:00
✨ 修改命令注册逻辑
This commit is contained in:
@@ -1,16 +1,10 @@
|
|||||||
from arclet.alconna import Arg, ArgFlag, Args, Option, Subcommand
|
from nonebot_plugin_alconna import Subcommand
|
||||||
from nonebot_plugin_alconna import At
|
|
||||||
|
|
||||||
from ...utils.exception import MessageFormatError
|
from ...utils.exception import MessageFormatError
|
||||||
from ...utils.typing import Me
|
from .. import alc
|
||||||
|
from .. import command as main_command
|
||||||
# from .. import add_block_handlers, alc, command
|
|
||||||
from .. import alc, command
|
|
||||||
from .api import Player
|
from .api import Player
|
||||||
|
|
||||||
# from .api.typing import ValidRank
|
|
||||||
from .constant import USER_ID, USER_NAME
|
from .constant import USER_ID, USER_NAME
|
||||||
from .typing import Template
|
|
||||||
|
|
||||||
|
|
||||||
def get_player(user_id_or_name: str) -> Player | MessageFormatError:
|
def get_player(user_id_or_name: str) -> Player | MessageFormatError:
|
||||||
@@ -21,171 +15,21 @@ def get_player(user_id_or_name: str) -> Player | MessageFormatError:
|
|||||||
return MessageFormatError('用户名/ID不合法')
|
return MessageFormatError('用户名/ID不合法')
|
||||||
|
|
||||||
|
|
||||||
command.add(
|
command = Subcommand(
|
||||||
Subcommand(
|
'TETR.IO',
|
||||||
'TETR.IO',
|
alias=['TETRIO', 'tetr.io', 'tetrio', 'io'],
|
||||||
Subcommand(
|
dest='TETRIO',
|
||||||
'bind',
|
help_text='TETR.IO 游戏相关指令',
|
||||||
Args(
|
|
||||||
Arg(
|
|
||||||
'account',
|
|
||||||
get_player,
|
|
||||||
notice='TETR.IO 用户名 / ID',
|
|
||||||
flags=[ArgFlag.HIDDEN],
|
|
||||||
)
|
|
||||||
),
|
|
||||||
help_text='绑定 TETR.IO 账号',
|
|
||||||
),
|
|
||||||
# Subcommand(
|
|
||||||
# 'query',
|
|
||||||
# Args(
|
|
||||||
# Arg(
|
|
||||||
# 'target',
|
|
||||||
# At | Me,
|
|
||||||
# notice='@想要查询的人 / 自己',
|
|
||||||
# flags=[ArgFlag.HIDDEN, ArgFlag.OPTIONAL],
|
|
||||||
# ),
|
|
||||||
# Arg(
|
|
||||||
# 'account',
|
|
||||||
# get_player,
|
|
||||||
# notice='TETR.IO 用户名 / ID',
|
|
||||||
# flags=[ArgFlag.HIDDEN, ArgFlag.OPTIONAL],
|
|
||||||
# ),
|
|
||||||
# ),
|
|
||||||
# Option(
|
|
||||||
# '--template',
|
|
||||||
# Arg('template', Template),
|
|
||||||
# alias=['-T'],
|
|
||||||
# help_text='要使用的查询模板',
|
|
||||||
# ),
|
|
||||||
# help_text='查询 TETR.IO 游戏信息',
|
|
||||||
# ),
|
|
||||||
Subcommand(
|
|
||||||
'record',
|
|
||||||
Option(
|
|
||||||
'--40l',
|
|
||||||
dest='sprint',
|
|
||||||
),
|
|
||||||
Option(
|
|
||||||
'--blitz',
|
|
||||||
dest='blitz',
|
|
||||||
),
|
|
||||||
Args(
|
|
||||||
Arg(
|
|
||||||
'target',
|
|
||||||
At | Me,
|
|
||||||
notice='@想要查询的人 / 自己',
|
|
||||||
flags=[ArgFlag.HIDDEN, ArgFlag.OPTIONAL],
|
|
||||||
),
|
|
||||||
Arg(
|
|
||||||
'account',
|
|
||||||
get_player,
|
|
||||||
notice='TETR.IO 用户名 / ID',
|
|
||||||
flags=[ArgFlag.HIDDEN, ArgFlag.OPTIONAL],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
# Subcommand(
|
|
||||||
# 'list',
|
|
||||||
# Option('--max-tr', Arg('max_tr', float), help_text='TR的上限'),
|
|
||||||
# Option('--min-tr', Arg('min_tr', float), help_text='TR的下限'),
|
|
||||||
# Option('--limit', Arg('limit', int), help_text='查询数量'),
|
|
||||||
# Option('--country', Arg('country', str), help_text='国家代码'),
|
|
||||||
# help_text='查询 TETR.IO 段位排行榜',
|
|
||||||
# ),
|
|
||||||
# Subcommand(
|
|
||||||
# 'rank',
|
|
||||||
# Subcommand(
|
|
||||||
# '--all',
|
|
||||||
# Option(
|
|
||||||
# '--template',
|
|
||||||
# Arg('template', Template),
|
|
||||||
# alias=['-T'],
|
|
||||||
# help_text='要使用的查询模板',
|
|
||||||
# ),
|
|
||||||
# dest='all',
|
|
||||||
# ),
|
|
||||||
# Option(
|
|
||||||
# '--detail',
|
|
||||||
# Arg('rank', ValidRank),
|
|
||||||
# alias=['-D'],
|
|
||||||
# ),
|
|
||||||
# help_text='查询 TETR.IO 段位信息',
|
|
||||||
# ),
|
|
||||||
Subcommand(
|
|
||||||
'config',
|
|
||||||
Option(
|
|
||||||
'--default-template',
|
|
||||||
Arg('template', Template),
|
|
||||||
alias=['-DT', 'DefaultTemplate'],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
alias=['TETRIO', 'tetr.io', 'tetrio', 'io'],
|
|
||||||
dest='TETRIO',
|
|
||||||
help_text='TETR.IO 游戏相关指令',
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# def rank_wrapper(slot: int | str, content: str | None):
|
|
||||||
# if slot == 'rank' and not content:
|
|
||||||
# return '--all'
|
|
||||||
# if content is not None:
|
|
||||||
# return f'--detail {content.lower()}'
|
|
||||||
# return content
|
|
||||||
|
|
||||||
|
|
||||||
alc.shortcut(
|
|
||||||
'(?i:io)(?i:绑定|绑|bind)',
|
|
||||||
command='tstats TETR.IO bind',
|
|
||||||
humanized='io绑定',
|
|
||||||
)
|
|
||||||
# alc.shortcut(
|
|
||||||
# '(?i:io)(?i:查询|查|query|stats)',
|
|
||||||
# command='tstats TETR.IO query',
|
|
||||||
# humanized='io查',
|
|
||||||
# )
|
|
||||||
alc.shortcut(
|
|
||||||
'(?i:io)(?i:记录|record)(?i:40l)',
|
|
||||||
command='tstats TETR.IO record --40l',
|
|
||||||
humanized='io记录40l',
|
|
||||||
)
|
|
||||||
alc.shortcut(
|
|
||||||
'(?i:io)(?i:记录|record)(?i:blitz)',
|
|
||||||
command='tstats TETR.IO record --blitz',
|
|
||||||
humanized='io记录blitz',
|
|
||||||
)
|
|
||||||
# alc.shortcut(
|
|
||||||
# r'(?i:io)(?i:段位|段|rank)\s*(?P<rank>[a-zA-Z+-]{0,2})',
|
|
||||||
# command='tstats TETR.IO rank {rank}',
|
|
||||||
# humanized='iorank',
|
|
||||||
# fuzzy=False,
|
|
||||||
# wrapper=rank_wrapper,
|
|
||||||
# )
|
|
||||||
alc.shortcut(
|
|
||||||
'(?i:io)(?i:配置|配|config)',
|
|
||||||
command='tstats TETR.IO config',
|
|
||||||
humanized='io配置',
|
|
||||||
)
|
|
||||||
|
|
||||||
# alc.shortcut(
|
|
||||||
# 'fkosk',
|
|
||||||
# command='tstats TETR.IO query',
|
|
||||||
# arguments=['我'],
|
|
||||||
# fuzzy=False,
|
|
||||||
# humanized='An Easter egg!',
|
|
||||||
# )
|
|
||||||
|
|
||||||
# add_block_handlers(alc.assign('TETRIO.query'))
|
|
||||||
|
|
||||||
# from . import bind, config, list, query, rank, record
|
|
||||||
from . import bind, config, record # noqa: E402
|
from . import bind, config, record # noqa: E402
|
||||||
|
|
||||||
|
main_command.add(command)
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
|
'alc',
|
||||||
'bind',
|
'bind',
|
||||||
'config',
|
'config',
|
||||||
# 'list',
|
|
||||||
# 'query',
|
|
||||||
# 'rank',
|
|
||||||
'record',
|
'record',
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ from asyncio import gather
|
|||||||
from hashlib import md5
|
from hashlib import md5
|
||||||
from urllib.parse import urlencode
|
from urllib.parse import urlencode
|
||||||
|
|
||||||
|
from arclet.alconna import Arg, ArgFlag
|
||||||
|
from nonebot_plugin_alconna import Args, Subcommand
|
||||||
from nonebot_plugin_alconna.uniseg import UniMessage
|
from nonebot_plugin_alconna.uniseg import UniMessage
|
||||||
from nonebot_plugin_orm import get_session
|
from nonebot_plugin_orm import get_session
|
||||||
from nonebot_plugin_session import EventSession # type: ignore[import-untyped]
|
from nonebot_plugin_session import EventSession # type: ignore[import-untyped]
|
||||||
@@ -15,10 +17,31 @@ from ...utils.image import get_avatar
|
|||||||
from ...utils.render import Bind, render
|
from ...utils.render import Bind, render
|
||||||
from ...utils.render.schemas.base import Avatar, People
|
from ...utils.render.schemas.base import Avatar, People
|
||||||
from ...utils.screenshot import screenshot
|
from ...utils.screenshot import screenshot
|
||||||
from . import alc
|
from . import alc, command, get_player
|
||||||
from .api import Player
|
from .api import Player
|
||||||
from .constant import GAME_TYPE
|
from .constant import GAME_TYPE
|
||||||
|
|
||||||
|
command.add(
|
||||||
|
Subcommand(
|
||||||
|
'bind',
|
||||||
|
Args(
|
||||||
|
Arg(
|
||||||
|
'account',
|
||||||
|
get_player,
|
||||||
|
notice='TETR.IO 用户名 / ID',
|
||||||
|
flags=[ArgFlag.HIDDEN],
|
||||||
|
)
|
||||||
|
),
|
||||||
|
help_text='绑定 TETR.IO 账号',
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
alc.shortcut(
|
||||||
|
'(?i:io)(?i:绑定|绑|bind)',
|
||||||
|
command='tstats TETR.IO bind',
|
||||||
|
humanized='io绑定',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@alc.assign('TETRIO.bind')
|
@alc.assign('TETRIO.bind')
|
||||||
async def _(nb_user: User, account: Player, event_session: EventSession, bot_info: UserInfo = BotUserInfo()): # noqa: B008
|
async def _(nb_user: User, account: Player, event_session: EventSession, bot_info: UserInfo = BotUserInfo()): # noqa: B008
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
from arclet.alconna import Arg
|
||||||
|
from nonebot_plugin_alconna import Option, Subcommand
|
||||||
from nonebot_plugin_alconna.uniseg import UniMessage
|
from nonebot_plugin_alconna.uniseg import UniMessage
|
||||||
from nonebot_plugin_orm import async_scoped_session
|
from nonebot_plugin_orm import async_scoped_session
|
||||||
from nonebot_plugin_session import EventSession # type: ignore[import-untyped]
|
from nonebot_plugin_session import EventSession # type: ignore[import-untyped]
|
||||||
@@ -6,11 +8,30 @@ from nonebot_plugin_user import User # type: ignore[import-untyped]
|
|||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
|
|
||||||
from ...db import trigger
|
from ...db import trigger
|
||||||
from . import alc
|
from . import alc, command
|
||||||
from .constant import GAME_TYPE
|
from .constant import GAME_TYPE
|
||||||
from .models import TETRIOUserConfig
|
from .models import TETRIOUserConfig
|
||||||
from .typing import Template
|
from .typing import Template
|
||||||
|
|
||||||
|
command.add(
|
||||||
|
Subcommand(
|
||||||
|
'config',
|
||||||
|
Option(
|
||||||
|
'--default-template',
|
||||||
|
Arg('template', Template, notice='模板版本'),
|
||||||
|
alias=['-DT', 'DefaultTemplate'],
|
||||||
|
help_text='设置默认查询模板',
|
||||||
|
),
|
||||||
|
help_text='TETR.IO 查询个性化配置',
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
alc.shortcut(
|
||||||
|
'(?i:io)(?i:配置|配|config)',
|
||||||
|
command='tstats TETR.IO config',
|
||||||
|
humanized='io配置',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@alc.assign('TETRIO.config')
|
@alc.assign('TETRIO.config')
|
||||||
async def _(user: User, session: async_scoped_session, event_session: EventSession, template: Template):
|
async def _(user: User, session: async_scoped_session, event_session: EventSession, template: Template):
|
||||||
|
|||||||
@@ -1,4 +1,31 @@
|
|||||||
from . import blitz, sprint
|
from arclet.alconna import Arg, ArgFlag
|
||||||
|
from nonebot_plugin_alconna import Args, At, Subcommand
|
||||||
|
|
||||||
|
from ....utils.typing import Me
|
||||||
|
from .. import command as base_command
|
||||||
|
from .. import get_player
|
||||||
|
|
||||||
|
command = Subcommand(
|
||||||
|
'record',
|
||||||
|
Args(
|
||||||
|
Arg(
|
||||||
|
'target',
|
||||||
|
At | Me,
|
||||||
|
notice='@想要查询的人 / 自己',
|
||||||
|
flags=[ArgFlag.HIDDEN, ArgFlag.OPTIONAL],
|
||||||
|
),
|
||||||
|
Arg(
|
||||||
|
'account',
|
||||||
|
get_player,
|
||||||
|
notice='TETR.IO 用户名 / ID',
|
||||||
|
flags=[ArgFlag.HIDDEN, ArgFlag.OPTIONAL],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
from . import blitz, sprint # noqa: E402
|
||||||
|
|
||||||
|
base_command.add(command)
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'blitz',
|
'blitz',
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from urllib.parse import urlencode
|
|||||||
|
|
||||||
from nonebot.adapters import Event
|
from nonebot.adapters import Event
|
||||||
from nonebot.matcher import Matcher
|
from nonebot.matcher import Matcher
|
||||||
from nonebot_plugin_alconna import At
|
from nonebot_plugin_alconna import At, Option
|
||||||
from nonebot_plugin_alconna.uniseg import UniMessage
|
from nonebot_plugin_alconna.uniseg import UniMessage
|
||||||
from nonebot_plugin_orm import get_session
|
from nonebot_plugin_orm import get_session
|
||||||
from nonebot_plugin_session import EventSession # type: ignore[import-untyped]
|
from nonebot_plugin_session import EventSession # type: ignore[import-untyped]
|
||||||
@@ -26,6 +26,15 @@ from ...constant import CANT_VERIFY_MESSAGE
|
|||||||
from .. import alc
|
from .. import alc
|
||||||
from ..api.player import Player
|
from ..api.player import Player
|
||||||
from ..constant import GAME_TYPE
|
from ..constant import GAME_TYPE
|
||||||
|
from . import command
|
||||||
|
|
||||||
|
command.add(Option('--blitz', dest='blitz'))
|
||||||
|
|
||||||
|
alc.shortcut(
|
||||||
|
'(?i:io)(?i:记录|record)(?i:blitz)',
|
||||||
|
command='tstats TETR.IO record --blitz',
|
||||||
|
humanized='io记录blitz',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@alc.assign('TETRIO.record.blitz')
|
@alc.assign('TETRIO.record.blitz')
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from urllib.parse import urlencode
|
|||||||
|
|
||||||
from nonebot.adapters import Event
|
from nonebot.adapters import Event
|
||||||
from nonebot.matcher import Matcher
|
from nonebot.matcher import Matcher
|
||||||
from nonebot_plugin_alconna import At
|
from nonebot_plugin_alconna import At, Option
|
||||||
from nonebot_plugin_alconna.uniseg import UniMessage
|
from nonebot_plugin_alconna.uniseg import UniMessage
|
||||||
from nonebot_plugin_orm import get_session
|
from nonebot_plugin_orm import get_session
|
||||||
from nonebot_plugin_session import EventSession # type: ignore[import-untyped]
|
from nonebot_plugin_session import EventSession # type: ignore[import-untyped]
|
||||||
@@ -26,6 +26,15 @@ from ...constant import CANT_VERIFY_MESSAGE
|
|||||||
from .. import alc
|
from .. import alc
|
||||||
from ..api.player import Player
|
from ..api.player import Player
|
||||||
from ..constant import GAME_TYPE
|
from ..constant import GAME_TYPE
|
||||||
|
from . import command
|
||||||
|
|
||||||
|
command.add(Option('--40l', dest='sprint'))
|
||||||
|
|
||||||
|
alc.shortcut(
|
||||||
|
'(?i:io)(?i:记录|record)(?i:40l)',
|
||||||
|
command='tstats TETR.IO record --40l',
|
||||||
|
humanized='io记录40l',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@alc.assign('TETRIO.record.sprint')
|
@alc.assign('TETRIO.record.sprint')
|
||||||
|
|||||||
Reference in New Issue
Block a user