✨ unban支持使用id (#1681)

This commit is contained in:
HibiKier
2024-10-05 19:07:18 +08:00
committed by GitHub
parent a28a60d9c8
commit 3117dc264f
3 changed files with 78 additions and 74 deletions
+43 -43
View File
@@ -30,7 +30,7 @@ __plugin_meta__ = PluginMetadata(
usage="""
普通管理员
格式:
ban [At用户] -t [时长(分钟)]
ban [At用户] ?[-t [时长(分钟)]]
示例:
ban @用户 : 永久拉黑用户
@@ -44,7 +44,8 @@ __plugin_meta__ = PluginMetadata(
superuser_help="""
超级管理员额外命令
格式:
ban [At用户/用户Id] [时长]
ban [At用户/用户Id] ?[-t [时长]]
unban --id [idx] : 通过id来进行unban操作
ban列表: 获取所有Ban数据
群组ban列表: 获取群组Ban数据
@@ -98,6 +99,7 @@ _unban_matcher = on_alconna(
"unban",
Args["user?", [str, At]],
Option("-g|--group", Args["group_id", str]),
Option("--id", Args["idx", int]),
),
rule=admin_check("ban", "BAN_LEVEL"),
priority=5,
@@ -238,8 +240,10 @@ async def _(
arparma: Arparma,
user: Match[str | At],
group_id: Match[str],
idx: Match[int],
):
user_id = ""
_idx = idx.result if idx.available else None
if user.available:
if isinstance(user.result, At):
user_id = user.result.target
@@ -248,48 +252,44 @@ async def _(
await MessageUtils.build_message("权限不足捏...").finish(reply_to=True)
user_id = user.result
if gid := session.id3 or session.id2:
u_d = user_id
if group_id.available:
u_d = gid
gid = group_id.result
if await BanManage.unban(
user_id, gid, session, session.id1 in bot.config.superusers
):
logger.info(
"管理员UnBan",
arparma.header_result,
session=session,
target=f"{gid}:{user_id}",
)
await MessageUtils.build_message(
[
"将 ",
(
At(flag="user", target=user_id)
if isinstance(user.result, At)
else u_d
), # type: ignore
" 从黑屋中拉了出来并急救了一下!",
]
).finish(reply_to=True)
else:
await MessageUtils.build_message("该用户不在黑名单中捏...").finish(
reply_to=True
)
is_unban, result = await BanManage.unban(
user_id, gid, session, _idx, session.id1 in bot.config.superusers
)
if not is_unban:
await MessageUtils.build_message(result).finish(reply_to=True)
logger.info(
"管理员UnBan",
arparma.header_result,
session=session,
target=f"{gid}:{result}",
)
await MessageUtils.build_message(
[
"将 ",
(
At(flag="user", target=user_id)
if isinstance(user.result, At)
else result
), # type: ignore
" 从黑屋中拉了出来并急救了一下!",
]
).finish(reply_to=True)
elif session.id1 in bot.config.superusers:
_group_id = group_id.result if group_id.available else None
if await BanManage.unban(user_id, _group_id, session, True):
logger.info(
"超级用户UnBan",
arparma.header_result,
session=session,
target=f"{_group_id}:{user_id}",
)
at_msg = user_id or f"群组:{_group_id}"
await MessageUtils.build_message(
f"对 {at_msg} 从黑屋中拉了出来并急救了一下!"
).finish(reply_to=True)
else:
await MessageUtils.build_message("该用户不在黑名单中捏...").finish(
reply_to=True
)
is_unban, result = await BanManage.unban(
user_id, _group_id, session, _idx, True
)
if not is_unban:
await MessageUtils.build_message(result).finish(reply_to=True)
logger.info(
"超级用户UnBan",
arparma.header_result,
session=session,
target=f"{_group_id}:{user_id}",
)
at_msg = user_id or f"群组:{result}"
await MessageUtils.build_message(
f"对 {at_msg} 从黑屋中拉了出来并急救了一下!"
).finish(reply_to=True)