From 625c12fc12de56ccd4d0173a7f2bc973f5f55167 Mon Sep 17 00:00:00 2001 From: StarHeartHunt Date: Sun, 11 Jul 2021 12:26:11 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20implement=20all=20self-built=20app?= =?UTF-8?q?=20event?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nonebot/adapters/feishu/event.py | 163 +++++++++++++++++- 1 file changed, 159 insertions(+), 4 deletions(-) diff --git a/packages/nonebot-adapter-feishu/nonebot/adapters/feishu/event.py b/packages/nonebot-adapter-feishu/nonebot/adapters/feishu/event.py index a31badab..5abeda95 100644 --- a/packages/nonebot-adapter-feishu/nonebot/adapters/feishu/event.py +++ b/packages/nonebot-adapter-feishu/nonebot/adapters/feishu/event.py @@ -1,7 +1,7 @@ import inspect import json -from typing import Any, List, Literal, Optional, Type +from typing import Any, Dict, List, Literal, Optional, Type from pygtrie import StringTrie from pydantic import BaseModel, root_validator, Field @@ -175,7 +175,7 @@ class MessageEvent(Event): reply: Optional[Reply] @overrides(Event) - def get_type(self) -> Literal["message", "notice", "meta_event"]: + def get_type(self) -> Literal["message", "notice"]: return "message" @overrides(Event) @@ -217,8 +217,35 @@ class PrivateMessageEvent(MessageEvent): class NoticeEvent(Event): - #TODO:实现该事件 - ... + event: Dict[str, Any] + + @overrides(Event) + def get_type(self) -> Literal["message", "notice"]: + return "notice" + + @overrides(Event) + def get_event_name(self) -> str: + raise ValueError("Event has no name!") + + @overrides(Event) + def get_event_description(self) -> str: + raise ValueError("Event has no description!") + + @overrides(Event) + def get_message(self) -> Message: + raise ValueError("Event has no message!") + + @overrides(Event) + def get_plaintext(self) -> str: + raise ValueError("Event has no plaintext!") + + @overrides(Event) + def get_user_id(self) -> str: + raise ValueError("Event has no user_id!") + + @overrides(Event) + def get_session_id(self) -> str: + raise ValueError("Event has no session_id!") class MessageReader(BaseModel): @@ -237,6 +264,134 @@ class MessageReadEvent(NoticeEvent): event: MessageReadEventDetail +class GroupDisbandedEventDetail(BaseModel): + chat_id: str + operator_id: UserId + external: bool + operator_tenant_key: str + + +class GroupDisbandedEvent(NoticeEvent): + __event__ = "im.chat.disbanded_v1" + event: GroupDisbandedEventDetail + + +class I18nNames(BaseModel): + zh_cn: str + en_us: str + ja_jp: str + + +class ChatChange(BaseModel): + avatar: str + name: str + description: str + i18n_names: I18nNames + add_member_permission: str + share_card_permission: str + at_all_permission: str + edit_permission: str + membership_approval: str + join_message_visibility: str + leave_message_visibility: str + moderation_permission: str + owner_id: UserId + + +class EventModerator(BaseModel): + tenant_key: str + user_id: UserId + + +class ModeratorList(BaseModel): + added_member_list: EventModerator + removed_member_list: EventModerator + + +class GroupConfigUpdatedEventDetail(BaseModel): + chat_id: str + operator_id: UserId + external: bool + operator_tenant_key: str + after_change: ChatChange + before_change: ChatChange + moderator_list: ModeratorList + + +class GroupConfigUpdatedEvent(NoticeEvent): + __event__ = "im.chat.updated_v1" + event: GroupConfigUpdatedEventDetail + + +class GroupMemberBotAddedEventDetail(BaseModel): + chat_id: str + operator_id: UserId + external: bool + operator_tenant_key: str + + +class GroupMemberBotAddedEvent(NoticeEvent): + __event__ = "im.chat.member.bot.added_v1" + event: GroupMemberBotAddedEventDetail + + +class GroupMemberBotDeletedEventDetail(BaseModel): + chat_id: str + operator_id: UserId + external: bool + operator_tenant_key: str + + +class GroupMemberBotDeletedEvent(NoticeEvent): + __event__ = "im.chat.member.bot.deleted_v1" + event: GroupMemberBotDeletedEventDetail + + +class ChatMemberUser(BaseModel): + name: str + tenant_key: str + user_id: UserId + + +class GroupMemberUserAddedEventDetail(BaseModel): + chat_id: str + operator_id: UserId + external: bool + operator_tenant_key: str + users: List[ChatMemberUser] + + +class GroupMemberUserAddedEvent(NoticeEvent): + __event__ = "im.chat.member.user.added_v1" + event: GroupMemberUserAddedEventDetail + + +class GroupMemberUserWithdrawnEventDetail(BaseModel): + chat_id: str + operator_id: UserId + external: bool + operator_tenant_key: str + users: List[ChatMemberUser] + + +class GroupMemberUserWithdrawnEvent(NoticeEvent): + __event__ = "im.chat.member.user.withdrawn_v1" + event: GroupMemberUserWithdrawnEventDetail + + +class GroupMemberUserDeletedEventDetail(BaseModel): + chat_id: str + operator_id: UserId + external: bool + operator_tenant_key: str + users: List[ChatMemberUser] + + +class GroupMemberUserDeletedEvent(NoticeEvent): + __event__ = "im.chat.member.user.deleted_v1" + event: GroupMemberUserDeletedEventDetail + + _t = StringTrie(separator=".") # define `model` first to avoid globals changing while `for`