Files
NeoBot/models/events/meta.py
K2cr2O1 3cbf5328bb refactor(core): 优化权限管理和事件模型
- 重构 AdminManager 和 PermissionManager 以 Redis 为主要数据源
- 为所有事件模型添加 slots=True 提升性能
- 更新文档说明 Mypyc 编译注意事项
- 清理测试和调试文件
- 移动静态资源到 web_static 目录
2026-01-13 08:35:54 +08:00

68 lines
1.5 KiB
Python

"""
元事件模型模块
定义了元事件相关的事件类,包括心跳事件和生命周期事件。
"""
from dataclasses import dataclass, field
from typing import Optional, Final
from .base import OneBotEvent, EventType
@dataclass(slots=True)
class HeartbeatStatus:
"""
心跳状态接口
"""
online: Optional[bool] = None # 是否在线
good: bool = True # 状态是否良好
class LifeCycleSubType:
"""
生命周期子类型枚举
"""
ENABLE: Final[str] = 'enable' # 启用
DISABLE: Final[str] = 'disable' # 禁用
CONNECT: Final[str] = 'connect' # 连接
@dataclass(slots=True)
class MetaEvent(OneBotEvent):
"""
元事件基类
"""
meta_event_type: str
"""元事件类型"""
@property
def post_type(self) -> str:
return EventType.META
@dataclass(slots=True)
class HeartbeatEvent(MetaEvent):
"""
心跳事件,用于确认连接状态
"""
meta_event_type: str = 'heartbeat'
"""元事件类型:心跳事件"""
status: HeartbeatStatus = field(default_factory=HeartbeatStatus)
"""状态信息"""
interval: int = 0
"""心跳间隔时间(ms)"""
@dataclass(slots=True)
class LifeCycleEvent(MetaEvent):
"""
生命周期事件,用于通知框架生命周期变化
"""
meta_event_type: str = 'lifecycle'
"""元事件类型:生命周期事件"""
sub_type: str = LifeCycleSubType.ENABLE
"""子类型:启用、禁用、连接"""