Module aiocqhttp.event
此模块提供了 OneBot (CQHTTP) 事件相关的类。
Expand source code
"""
此模块提供了 OneBot (CQHTTP) 事件相关的类。
"""
from typing import Dict, Any, Optional
class Event(dict):
"""
封装从 OneBot (CQHTTP) 收到的事件数据对象(字典),提供属性以获取其中的字段。
除 `type` 和 `detail_type` 属性对于任何事件都有效外,其它属性存在与否(不存在则返回
`None`)依事件不同而不同。
"""
@staticmethod
def from_payload(payload: Dict[str, Any]) -> 'Optional[Event]':
"""
从 OneBot 事件数据构造 `Event` 对象。
"""
try:
e = Event(payload)
_ = e.type, e.detail_type
return e
except KeyError:
return None
@property
def type(self) -> str:
"""
事件类型,有 ``message``、``notice``、``request``、``meta_event`` 等。
"""
return self['post_type']
@property
def detail_type(self) -> str:
"""
事件具体类型,依 `type` 的不同而不同,以 ``message`` 类型为例,有
``private``、``group``、``discuss`` 等。
"""
return self[f'{self.type}_type']
@property
def sub_type(self) -> Optional[str]:
"""
事件子类型,依 `detail_type` 不同而不同,以 ``message.private`` 为例,有
``friend``、``group``、``discuss``、``other`` 等。
"""
return self.get('sub_type')
@property
def name(self):
"""
事件名,对于有 `sub_type` 的事件,为 ``{type}.{detail_type}.{sub_type}``,否则为
``{type}.{detail_type}``。
"""
n = self.type + '.' + self.detail_type
if self.sub_type:
n += '.' + self.sub_type
return n
self_id: int # 机器人自身 ID
user_id: Optional[int] # 用户 ID
operator_id: Optional[int] # 操作者 ID
group_id: Optional[int] # 群 ID
discuss_id: Optional[int] # 讨论组 ID,此字段已在 OneBot v11 中移除
message_id: Optional[int] # 消息 ID
message: Optional[Any] # 消息
raw_message: Optional[str] # 未经 OneBot (CQHTTP) 处理的原始消息
sender: Optional[Dict[str, Any]] # 消息发送者信息
anonymous: Optional[Dict[str, Any]] # 匿名信息
file: Optional[Dict[str, Any]] # 文件信息
comment: Optional[str] # 请求验证消息
flag: Optional[str] # 请求标识
def __getattr__(self, key) -> Optional[Any]:
return self.get(key)
def __setattr__(self, key, value) -> None:
self[key] = value
def __repr__(self) -> str:
return f'<Event, {super().__repr__()}>'
Classes
class Event (*args, **kwargs)
-
封装从 OneBot (CQHTTP) 收到的事件数据对象(字典),提供属性以获取其中的字段。
除
type
和detail_type
属性对于任何事件都有效外,其它属性存在与否(不存在则返回None
)依事件不同而不同。Expand source code
class Event(dict): """ 封装从 OneBot (CQHTTP) 收到的事件数据对象(字典),提供属性以获取其中的字段。 除 `type` 和 `detail_type` 属性对于任何事件都有效外,其它属性存在与否(不存在则返回 `None`)依事件不同而不同。 """ @staticmethod def from_payload(payload: Dict[str, Any]) -> 'Optional[Event]': """ 从 OneBot 事件数据构造 `Event` 对象。 """ try: e = Event(payload) _ = e.type, e.detail_type return e except KeyError: return None @property def type(self) -> str: """ 事件类型,有 ``message``、``notice``、``request``、``meta_event`` 等。 """ return self['post_type'] @property def detail_type(self) -> str: """ 事件具体类型,依 `type` 的不同而不同,以 ``message`` 类型为例,有 ``private``、``group``、``discuss`` 等。 """ return self[f'{self.type}_type'] @property def sub_type(self) -> Optional[str]: """ 事件子类型,依 `detail_type` 不同而不同,以 ``message.private`` 为例,有 ``friend``、``group``、``discuss``、``other`` 等。 """ return self.get('sub_type') @property def name(self): """ 事件名,对于有 `sub_type` 的事件,为 ``{type}.{detail_type}.{sub_type}``,否则为 ``{type}.{detail_type}``。 """ n = self.type + '.' + self.detail_type if self.sub_type: n += '.' + self.sub_type return n self_id: int # 机器人自身 ID user_id: Optional[int] # 用户 ID operator_id: Optional[int] # 操作者 ID group_id: Optional[int] # 群 ID discuss_id: Optional[int] # 讨论组 ID,此字段已在 OneBot v11 中移除 message_id: Optional[int] # 消息 ID message: Optional[Any] # 消息 raw_message: Optional[str] # 未经 OneBot (CQHTTP) 处理的原始消息 sender: Optional[Dict[str, Any]] # 消息发送者信息 anonymous: Optional[Dict[str, Any]] # 匿名信息 file: Optional[Dict[str, Any]] # 文件信息 comment: Optional[str] # 请求验证消息 flag: Optional[str] # 请求标识 def __getattr__(self, key) -> Optional[Any]: return self.get(key) def __setattr__(self, key, value) -> None: self[key] = value def __repr__(self) -> str: return f'<Event, {super().__repr__()}>'
Ancestors
- builtins.dict
Class variables
var self_id : int
var user_id : Union[int, NoneType]
var operator_id : Union[int, NoneType]
var group_id : Union[int, NoneType]
var discuss_id : Union[int, NoneType]
var message_id : Union[int, NoneType]
var message : Union[Any, NoneType]
var raw_message : Union[str, NoneType]
var sender : Union[Dict[str, Any], NoneType]
var anonymous : Union[Dict[str, Any], NoneType]
var file : Union[Dict[str, Any], NoneType]
var comment : Union[str, NoneType]
var flag : Union[str, NoneType]
Static methods
def from_payload(payload: Dict[str, Any]) ‑> Union[Event, NoneType]
-
从 OneBot 事件数据构造
Event
对象。Expand source code
@staticmethod def from_payload(payload: Dict[str, Any]) -> 'Optional[Event]': """ 从 OneBot 事件数据构造 `Event` 对象。 """ try: e = Event(payload) _ = e.type, e.detail_type return e except KeyError: return None
Instance variables
var type : str
-
事件类型,有
message
、notice
、request
、meta_event
等。Expand source code
@property def type(self) -> str: """ 事件类型,有 ``message``、``notice``、``request``、``meta_event`` 等。 """ return self['post_type']
var detail_type : str
-
事件具体类型,依
type
的不同而不同,以message
类型为例,有private
、group
、discuss
等。Expand source code
@property def detail_type(self) -> str: """ 事件具体类型,依 `type` 的不同而不同,以 ``message`` 类型为例,有 ``private``、``group``、``discuss`` 等。 """ return self[f'{self.type}_type']
var sub_type : Union[str, NoneType]
-
事件子类型,依
detail_type
不同而不同,以message.private
为例,有friend
、group
、discuss
、other
等。Expand source code
@property def sub_type(self) -> Optional[str]: """ 事件子类型,依 `detail_type` 不同而不同,以 ``message.private`` 为例,有 ``friend``、``group``、``discuss``、``other`` 等。 """ return self.get('sub_type')
var name
-
事件名,对于有
sub_type
的事件,为{type}.{detail_type}.{sub_type}
,否则为{type}.{detail_type}
。Expand source code
@property def name(self): """ 事件名,对于有 `sub_type` 的事件,为 ``{type}.{detail_type}.{sub_type}``,否则为 ``{type}.{detail_type}``。 """ n = self.type + '.' + self.detail_type if self.sub_type: n += '.' + self.sub_type return n