Skip to content

Commit 662f3bb

Browse files
committed
feat: add system events for conferences
1 parent 11dfda6 commit 662f3bb

16 files changed

+664
-7
lines changed

poetry.lock

Lines changed: 94 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pybotx/__init__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
AttachmentTypes,
9191
ChatTypes,
9292
ClientPlatforms,
93+
ConferenceLinkTypes,
9394
MentionTypes,
9495
SmartappManifestWebLayoutChoices,
9596
SyncSourceTypes,
@@ -135,6 +136,9 @@
135136
from pybotx.models.system_events.added_to_chat import AddedToChatEvent
136137
from pybotx.models.system_events.chat_created import ChatCreatedEvent, ChatCreatedMember
137138
from pybotx.models.system_events.chat_deleted_by_user import ChatDeletedByUserEvent
139+
from pybotx.models.system_events.conference_changed import ConferenceChangedEvent
140+
from pybotx.models.system_events.conference_created import ConferenceCreatedEvent
141+
from pybotx.models.system_events.conference_deleted import ConferenceDeletedEvent
138142
from pybotx.models.system_events.cts_login import CTSLoginEvent
139143
from pybotx.models.system_events.cts_logout import CTSLogoutEvent
140144
from pybotx.models.system_events.deleted_from_chat import DeletedFromChatEvent
@@ -193,6 +197,10 @@
193197
"ChatNotFoundError",
194198
"ChatTypes",
195199
"ClientPlatforms",
200+
"ConferenceChangedEvent",
201+
"ConferenceCreatedEvent",
202+
"ConferenceDeletedEvent",
203+
"ConferenceLinkTypes",
196204
"DeletedFromChatEvent",
197205
"Document",
198206
"EditMessage",

pybotx/bot/handler.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
from pybotx.models.system_events.added_to_chat import AddedToChatEvent
1010
from pybotx.models.system_events.chat_created import ChatCreatedEvent
1111
from pybotx.models.system_events.chat_deleted_by_user import ChatDeletedByUserEvent
12+
from pybotx.models.system_events.conference_changed import ConferenceChangedEvent
13+
from pybotx.models.system_events.conference_created import ConferenceCreatedEvent
14+
from pybotx.models.system_events.conference_deleted import ConferenceDeletedEvent
1215
from pybotx.models.system_events.cts_login import CTSLoginEvent
1316
from pybotx.models.system_events.cts_logout import CTSLogoutEvent
1417
from pybotx.models.system_events.deleted_from_chat import DeletedFromChatEvent
@@ -42,6 +45,9 @@
4245
HandlerFunc[InternalBotNotificationEvent],
4346
HandlerFunc[SmartAppEvent],
4447
HandlerFunc[EventEdit],
48+
HandlerFunc[ConferenceChangedEvent],
49+
HandlerFunc[ConferenceCreatedEvent],
50+
HandlerFunc[ConferenceDeletedEvent],
4551
]
4652

4753
VisibleFunc = Callable[[StatusRecipient, "Bot"], Awaitable[bool]]

pybotx/bot/handler_collector.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@
4242
from pybotx.models.system_events.added_to_chat import AddedToChatEvent
4343
from pybotx.models.system_events.chat_created import ChatCreatedEvent
4444
from pybotx.models.system_events.chat_deleted_by_user import ChatDeletedByUserEvent
45+
from pybotx.models.system_events.conference_changed import ConferenceChangedEvent
46+
from pybotx.models.system_events.conference_created import ConferenceCreatedEvent
47+
from pybotx.models.system_events.conference_deleted import ConferenceDeletedEvent
4548
from pybotx.models.system_events.cts_login import CTSLoginEvent
4649
from pybotx.models.system_events.cts_logout import CTSLogoutEvent
4750
from pybotx.models.system_events.deleted_from_chat import DeletedFromChatEvent
@@ -301,6 +304,30 @@ def event_edit(
301304
self._system_event(EventEdit, handler_func)
302305
return handler_func
303306

307+
def conference_changed(
308+
self,
309+
handler_func: HandlerFunc[ConferenceChangedEvent],
310+
) -> HandlerFunc[ConferenceChangedEvent]:
311+
"""Decorate `conference changed` event handler."""
312+
self._system_event(ConferenceChangedEvent, handler_func)
313+
return handler_func
314+
315+
def conference_created(
316+
self,
317+
handler_func: HandlerFunc[ConferenceCreatedEvent],
318+
) -> HandlerFunc[ConferenceCreatedEvent]:
319+
"""Decorate `conference created` event handler."""
320+
self._system_event(ConferenceCreatedEvent, handler_func)
321+
return handler_func
322+
323+
def conference_deleted(
324+
self,
325+
handler_func: HandlerFunc[ConferenceDeletedEvent],
326+
) -> HandlerFunc[ConferenceDeletedEvent]:
327+
"""Decorate `conference deleted` event handler."""
328+
self._system_event(ConferenceDeletedEvent, handler_func)
329+
return handler_func
330+
304331
def smartapp_event(
305332
self,
306333
handler_func: HandlerFunc[SmartAppEvent],

pybotx/models/commands.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,18 @@
1313
BotAPIChatDeletedByUser,
1414
ChatDeletedByUserEvent,
1515
)
16+
from pybotx.models.system_events.conference_changed import (
17+
BotAPIConferenceChanged,
18+
ConferenceChangedEvent,
19+
)
20+
from pybotx.models.system_events.conference_created import (
21+
BotAPIConferenceCreated,
22+
ConferenceCreatedEvent,
23+
)
24+
from pybotx.models.system_events.conference_deleted import (
25+
BotAPIConferenceDeleted,
26+
ConferenceDeletedEvent,
27+
)
1628
from pybotx.models.system_events.cts_login import BotAPICTSLogin, CTSLoginEvent
1729
from pybotx.models.system_events.cts_logout import BotAPICTSLogout, CTSLogoutEvent
1830
from pybotx.models.system_events.deleted_from_chat import (
@@ -45,6 +57,9 @@
4557
BotAPICTSLogin,
4658
BotAPICTSLogout,
4759
BotAPIEventEdit,
60+
BotAPIConferenceChanged,
61+
BotAPIConferenceCreated,
62+
BotAPIConferenceDeleted,
4863
]
4964
BotAPICommand = Union[BotAPIIncomingMessage, BotAPISystemEvent]
5065

@@ -60,5 +75,8 @@
6075
CTSLoginEvent,
6176
CTSLogoutEvent,
6277
EventEdit,
78+
ConferenceChangedEvent,
79+
ConferenceCreatedEvent,
80+
ConferenceDeletedEvent,
6381
]
6482
BotCommand = Union[IncomingMessage, SystemEvent]

pybotx/models/enums.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,13 @@ class SyncSourceTypes(AutoName):
6969
BOTX = auto()
7070

7171

72+
class ConferenceLinkTypes(AutoName):
73+
PUBLIC = auto()
74+
TRUSTS = auto()
75+
CORPORATE = auto()
76+
SERVER = auto()
77+
78+
7279
UNSUPPORTED = Literal["UNSUPPORTED"]
7380
IncomingChatTypes = Union[ChatTypes, UNSUPPORTED]
7481
IncomingSyncSourceTypes = Union[SyncSourceTypes, UNSUPPORTED]
@@ -103,6 +110,9 @@ class BotAPISystemEventTypes(StrEnum):
103110
LEFT_FROM_CHAT = "system:left_from_chat"
104111
SMARTAPP_EVENT = "system:smartapp_event"
105112
EVENT_EDIT = "system:event_edit"
113+
CONFERENCE_CHANGED = "system:conference_changed"
114+
CONFERENCE_CREATED = "system:conference_created"
115+
CONFERENCE_DELETED = "system:conference_deleted"
106116

107117

108118
class BotAPIClientPlatforms(Enum):
@@ -127,6 +137,13 @@ class BotAPIMentionTypes(StrEnum):
127137
ALL = "all"
128138

129139

140+
class BotAPIConferenceLinkTypes(StrEnum):
141+
PUBLIC = "public"
142+
TRUSTS = "trusts"
143+
CORPORATE = "corporate"
144+
SERVER = "server"
145+
146+
130147
class APIUserKinds(Enum):
131148
USER = "user"
132149
CTS_USER = "cts_user"
@@ -233,6 +250,25 @@ def convert_attachment_type_to_domain(
233250
return converted_type
234251

235252

253+
def convert_conference_link_type_to_domain(
254+
conference_link_type: BotAPIConferenceLinkTypes,
255+
) -> ConferenceLinkTypes:
256+
conference_link_type_mapping = {
257+
BotAPIConferenceLinkTypes.PUBLIC: ConferenceLinkTypes.PUBLIC,
258+
BotAPIConferenceLinkTypes.TRUSTS: ConferenceLinkTypes.TRUSTS,
259+
BotAPIConferenceLinkTypes.CORPORATE: ConferenceLinkTypes.CORPORATE,
260+
BotAPIConferenceLinkTypes.SERVER: ConferenceLinkTypes.SERVER,
261+
}
262+
263+
converted_type = conference_link_type_mapping.get(conference_link_type)
264+
if converted_type is None:
265+
raise NotImplementedError(
266+
f"Unsupported conference link type: {conference_link_type}",
267+
)
268+
269+
return converted_type
270+
271+
236272
def convert_attachment_type_from_domain(
237273
attachment_type: AttachmentTypes,
238274
) -> APIAttachmentTypes:

0 commit comments

Comments
 (0)