From 872d2499a25ffb617603a0cb8203eb21b1291e36 Mon Sep 17 00:00:00 2001 From: molanp <104612722+molanp@users.noreply.github.com> Date: Tue, 5 Aug 2025 19:12:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(ban):=20=E5=9C=A8=E8=B0=83=E7=94=A8ban?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=97=B6=E4=B8=BB=E5=8A=A8=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E8=BF=87=E6=9C=9F=E6=95=B0=E6=8D=AE=20(#1997)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(ban): 在调用ban列表时主动删除过期数据 - 除了接收到被ban用户的信息外,现在主动调用`ban列表`命令也会删除过期数据 - 修复 unban 返回信息错误 * refactor(ban): 优化 unban 函数返回值逻辑 - 使用或运算简化返回值判断逻辑 - 移除不必要的字符串转换 * refactor(zhenxun): 优化 unban 函数返回值类型 - 将 unban 函数的返回类型从 tuple[bool, str | None] 改为 tuple[bool, str] - 修改返回值,确保总是返回字符串类型,避免类型检查错误 --- zhenxun/builtin_plugins/admin/ban/_data_source.py | 14 ++++++-------- zhenxun/models/ban_console.py | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/zhenxun/builtin_plugins/admin/ban/_data_source.py b/zhenxun/builtin_plugins/admin/ban/_data_source.py index 1f2d50e3..83abe2f7 100644 --- a/zhenxun/builtin_plugins/admin/ban/_data_source.py +++ b/zhenxun/builtin_plugins/admin/ban/_data_source.py @@ -65,6 +65,9 @@ class BanManage: duration = "∞" else: duration = int((data.ban_time + data.duration - time.time()) / 60) + if isinstance(duration, int) and duration < 0: + await data.delete() + continue row_data.append( [ data.id, @@ -111,7 +114,7 @@ class BanManage: is_superuser: 是否为超级用户操作 返回: - tuple[bool, str]: 是否unban成功, 群组/用户id或提示 + tuple[bool, str | Non]: 是否unban成功, 群组/用户id或提示 """ user_level = 9999 if not is_superuser and user_id and session.id1: @@ -123,15 +126,10 @@ class BanManage: if ban_data.ban_level > user_level: return False, "unBan权限等级不足捏..." await ban_data.delete() - return ( - True, - f"用户 {ban_data.user_id}" - if ban_data.user_id - else f"群组 {ban_data.group_id}", - ) + return True, ban_data.user_id or ban_data.group_id elif await BanConsole.check_ban_level(user_id, group_id, user_level): await BanConsole.unban(user_id, group_id) - return True, f"群组 {group_id}" + return True, group_id or "" return False, "该用户/群组不在黑名单中不足捏..." @classmethod diff --git a/zhenxun/models/ban_console.py b/zhenxun/models/ban_console.py index 83b02cc3..b1c6a4d9 100644 --- a/zhenxun/models/ban_console.py +++ b/zhenxun/models/ban_console.py @@ -110,7 +110,7 @@ class BanConsole(Model): return -1 _time = time.time() - (user.ban_time + user.duration) if _time < 0: - return int(time.time() - user.ban_time - user.duration) + return int(abs(_time)) await user.delete() return 0