mirror of
https://github.com/A-Minos/nonebot-plugin-tetris-stats.git
synced 2026-03-05 05:36:54 +08:00
82 lines
2.5 KiB
Python
82 lines
2.5 KiB
Python
from arclet.alconna import Alconna, AllParam, Arg, ArgFlag, Args, CommandMeta, Option
|
|
from nonebot_plugin_alconna import At, on_alconna
|
|
|
|
from ... import ns
|
|
from ...utils.exception import MessageFormatError
|
|
from ...utils.typing import Me
|
|
from .. import add_default_handlers
|
|
from ..constant import BIND_COMMAND, QUERY_COMMAND
|
|
from .api import Player
|
|
from .constant import USER_NAME
|
|
|
|
|
|
def get_player(teaid_or_name: str) -> Player | MessageFormatError:
|
|
if (
|
|
teaid_or_name.startswith(('onebot-', 'qqguild-', 'kook-', 'discord-'))
|
|
and teaid_or_name.split('-', maxsplit=1)[1].isdigit()
|
|
):
|
|
return Player(teaid=teaid_or_name, trust=True)
|
|
if USER_NAME.match(teaid_or_name) and not teaid_or_name.isdigit() and 2 <= len(teaid_or_name) <= 18: # noqa: PLR2004
|
|
return Player(user_name=teaid_or_name, trust=True)
|
|
return MessageFormatError('用户名/ID不合法')
|
|
|
|
|
|
alc = on_alconna(
|
|
Alconna(
|
|
'茶服',
|
|
Option(
|
|
BIND_COMMAND[0],
|
|
Args(
|
|
Arg(
|
|
'account',
|
|
get_player,
|
|
notice='茶服 用户名 / TeaID',
|
|
flags=[ArgFlag.HIDDEN],
|
|
)
|
|
),
|
|
alias=BIND_COMMAND[1:],
|
|
compact=True,
|
|
dest='bind',
|
|
help_text='绑定 茶服 账号',
|
|
),
|
|
Option(
|
|
QUERY_COMMAND[0],
|
|
Args(
|
|
Arg(
|
|
'target',
|
|
At | Me,
|
|
notice='@想要查询的人 | 自己',
|
|
flags=[ArgFlag.HIDDEN, ArgFlag.OPTIONAL],
|
|
),
|
|
Arg(
|
|
'account',
|
|
get_player,
|
|
notice='茶服 用户名 / TeaID',
|
|
flags=[ArgFlag.HIDDEN, ArgFlag.OPTIONAL],
|
|
),
|
|
# 如果放在一个 Union Args 里, 验证顺序不能保证, 可能出错
|
|
),
|
|
alias=QUERY_COMMAND[1:],
|
|
compact=True,
|
|
dest='query',
|
|
help_text='查询 茶服 游戏信息',
|
|
),
|
|
Arg('other', AllParam, flags=[ArgFlag.HIDDEN, ArgFlag.OPTIONAL]),
|
|
meta=CommandMeta(
|
|
description='查询 TetrisOnline茶服 的信息',
|
|
example='茶服查我',
|
|
compact=True,
|
|
fuzzy_match=True,
|
|
),
|
|
namespace=ns,
|
|
),
|
|
skip_for_unmatch=False,
|
|
auto_send_output=True,
|
|
aliases={'tos', 'TOS'},
|
|
)
|
|
|
|
|
|
from . import bind, query # noqa: E402, F401
|
|
|
|
add_default_handlers(alc)
|