From 40d6e779647ae783b122eb55fdbcecf75679c6e0 Mon Sep 17 00:00:00 2001 From: anka <1350989414@qq.com> Date: Tue, 22 Apr 2025 11:16:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=AB=93=E4=BD=BF=E7=94=A8enum?= =?UTF-8?q?=E4=BB=A3=E6=9B=BF=E5=AD=97=E5=85=B8=E5=90=8E=E7=9A=84=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/astrbot/main.py | 41 ++++++++++++++++------------------------ 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/packages/astrbot/main.py b/packages/astrbot/main.py index 1b1f7d4d..6a423925 100644 --- a/packages/astrbot/main.py +++ b/packages/astrbot/main.py @@ -24,17 +24,9 @@ from .long_term_memory import LongTermMemory from astrbot.core import logger from astrbot.api.message_components import Plain, Image, Reply from typing import Union +from enum import Enum -@star.register( - name="astrbot", - desc="AstrBot 基础指令结合 + 拓展功能", - author="Soulter", - version="4.0.0", -) -class Main(star.Star): - - SCENE_MAP = {1: "group_unique_on", 2: "group_unique_off", 3: "private"} class RstScene(Enum): GROUP_UNIQUE_ON = ("group_unique_on", "群聊+会话隔离开启") GROUP_UNIQUE_OFF = ("group_unique_off", "群聊+会话隔离关闭") @@ -59,6 +51,15 @@ class RstScene(Enum): return cls.GROUP_UNIQUE_ON if is_unique_session else cls.GROUP_UNIQUE_OFF return cls.PRIVATE + +@star.register( + name="astrbot", + desc="AstrBot 基础指令结合 + 拓展功能", + author="Soulter", + version="4.0.0", +) +class Main(star.Star): + def __init__(self, context: star.Context) -> None: self.context = context cfg = context.get_config() @@ -514,20 +515,20 @@ UID: {user_id} 此 ID 可用于设置管理员。 ] is_group = bool(message.get_group_id()) - scene_key = self.get_scene_key(is_group, is_unique_session) + scene = RstScene.get_scene(is_group, is_unique_session) alter_cmd_cfg = sp.get("alter_cmd", {}) plugin_config = alter_cmd_cfg.get("astrbot", {}) reset_cfg = plugin_config.get("reset", {}) required_perm = reset_cfg.get( - scene_key, "admin" if is_group and not is_unique_session else "member" + scene.key, "admin" if is_group and not is_unique_session else "member" ) if required_perm == "admin" and message.role != "admin": message.set_result( MessageEventResult().message( - f"在{self.SCENE_NAMES.get(scene_key, scene_key)}场景下,reset命令需要管理员权限," + f"在{scene.name}场景下,reset命令需要管理员权限," f"您 (ID {message.get_sender_id()}) 不是管理员,无法执行此操作。" ) ) @@ -1373,12 +1374,13 @@ UID: {user_id} 此 ID 可用于设置管理员。 return scene_num = int(scene_num) - scene_key = self.SCENE_MAP[scene_num] + scene = RstScene.from_index(scene_num) + scene_key = scene.key self.update_reset_permission(scene_key, perm_type) yield event.plain_result( - f"已将 reset 命令在{self.SCENE_NAMES[scene_num]}场景下的权限设为{perm_type}" + f"已将 reset 命令在{scene.name}场景下的权限设为{perm_type}" ) return @@ -1451,14 +1453,3 @@ UID: {user_id} 此 ID 可用于设置管理员。 plugin_cfg["reset"] = reset_cfg alter_cmd_cfg["astrbot"] = plugin_cfg sp.put("alter_cmd", alter_cmd_cfg) - - def get_scene_key(self, is_group: bool, is_unique_session: bool) -> str: - """根据群聊状态和会话隔离状态获取对应的场景键 - - Args: - is_group (bool): 是否为群聊 - is_unique_session (bool): 是否开启会话隔离 - """ - if is_group: - return "group_unique_on" if is_unique_session else "group_unique_off" - return "private"