Files
LangBot/libs/dingtalk_api/dingtalkevent.py

77 lines
1.7 KiB
Python
Raw Normal View History

2025-02-13 03:47:45 -05:00
from typing import Dict, Any, Optional
2025-06-09 17:56:21 +08:00
import dingtalk_stream # type: ignore
2025-02-13 03:47:45 -05:00
2025-02-13 03:47:45 -05:00
class DingTalkEvent(dict):
@staticmethod
def from_payload(payload: Dict[str, Any]) -> Optional['DingTalkEvent']:
2025-02-13 03:47:45 -05:00
try:
event = DingTalkEvent(payload)
return event
except KeyError:
return None
2025-02-13 03:47:45 -05:00
@property
def content(self):
return self.get('Content', '')
2025-02-13 03:47:45 -05:00
@property
def incoming_message(self) -> Optional['dingtalk_stream.chatbot.ChatbotMessage']:
return self.get('IncomingMessage')
2025-02-13 03:47:45 -05:00
@property
def type(self):
return self.get('Type', '')
2025-02-13 03:47:45 -05:00
@property
def picture(self):
return self.get('Picture', '')
@property
def audio(self):
return self.get('Audio', '')
2025-02-13 03:47:45 -05:00
@property
def file(self):
return self.get('File', '')
@property
def name(self):
return self.get('Name', '')
2025-02-13 03:47:45 -05:00
@property
def conversation(self):
return self.get('conversation_type', '')
2025-02-13 03:47:45 -05:00
def __getattr__(self, key: str) -> Optional[Any]:
"""
允许通过属性访问数据中的任意字段
Args:
key (str): 字段名
Returns:
Optional[Any]: 字段值
"""
return self.get(key)
def __setattr__(self, key: str, value: Any) -> None:
"""
允许通过属性设置数据中的任意字段
Args:
key (str): 字段名
value (Any): 字段值
"""
self[key] = value
def __repr__(self) -> str:
"""
生成事件对象的字符串表示
Returns:
str: 字符串表示
"""
return f'<DingTalkEvent {super().__repr__()}>'