Skip to content

Commit ecdbe52

Browse files
committed
Documentation
1 parent 58df857 commit ecdbe52

File tree

1 file changed

+166
-62
lines changed

1 file changed

+166
-62
lines changed

src/daf/events.py

Lines changed: 166 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -22,64 +22,6 @@
2222

2323

2424
@doc_category("Event reference")
25-
class EventID(Enum):
26-
"""
27-
Enum of all available events.
28-
29-
Global events (:func:`get_global_event_ctrl`) have a
30-
``g_`` prefix on their name.
31-
"""
32-
33-
g_daf_startup = 0
34-
"""
35-
Emitted at DAF startup.
36-
"""
37-
38-
g_daf_shutdown = auto()
39-
"""
40-
Emitted at DAF shutdown.
41-
"""
42-
g_trace = auto()
43-
"""
44-
Emitted when :func:`~daf.logging.tracing.trace` is used.
45-
46-
Parameters
47-
-----------
48-
level: :class:`~daf.logging.tracing.TraceLEVELS`
49-
The level of the trace.
50-
message: str
51-
The traced message.
52-
"""
53-
g_account_expired = auto()
54-
"""
55-
Emitted when account has been expired (token invalidated).
56-
57-
Parameters
58-
-----------
59-
account: :class:`~daf.client.ACCOUNT
60-
The account that has been expired.
61-
"""
62-
account_update = auto()
63-
64-
message_ready = auto()
65-
message_removed = auto()
66-
message_added = auto()
67-
message_update = auto()
68-
69-
server_removed = auto()
70-
server_added = auto()
71-
server_update = auto()
72-
auto_guild_start_join = auto()
73-
74-
discord_member_join = auto()
75-
discord_invite_delete = auto()
76-
77-
_dummy = auto() # For stopping the event loop
78-
79-
# Events for use externally (not within daf)
80-
_ws_disconnect = auto()
81-
82-
8325
class EventListener:
8426
def __init__(self, fnc: Callable, predicate: Callable[[T], bool] = None) -> None:
8527
self.fnc = fnc
@@ -95,7 +37,11 @@ def __hash__(self) -> int:
9537
return hash(self.fnc)
9638

9739

40+
@doc_category("Event reference")
9841
class EventController:
42+
"""
43+
Responsible for controlling the event loop, listening and emitting events.
44+
"""
9945
def __init__(self) -> None:
10046
self.listeners: Dict[Enum, List[EventListener]] = {}
10147
self.event_queue = asyncio.Queue()
@@ -125,7 +71,7 @@ def stop(self):
12571

12672
return asyncio.gather(self.loop_task)
12773

128-
def add_listener(self, event: EventID, fnc: Callable, predicate: Callable[[Any], bool] = None):
74+
def add_listener(self, event: "EventID", fnc: Callable, predicate: Callable[[Any], bool] = None):
12975
"""
13076
Registers the function ``fnc`` as an event listener for ``event``.
13177
@@ -139,7 +85,7 @@ def add_listener(self, event: EventID, fnc: Callable, predicate: Callable[[Any],
13985
listeners = self.listeners[event] = self.listeners.get(event, [])
14086
listeners.append(EventListener(fnc, predicate))
14187

142-
def remove_listener(self, event: EventID, fnc: Callable):
88+
def remove_listener(self, event: "EventID", fnc: Callable):
14389
"""
14490
Remove the function ``fnc`` from the list of listeners for ``event``.
14591
@@ -160,7 +106,7 @@ def remove_listener(self, event: EventID, fnc: Callable):
160106
with suppress(ValueError, KeyError):
161107
self.listeners[event].remove(fnc)
162108

163-
def listen(self, event: EventID):
109+
def listen(self, event: "EventID"):
164110
"""
165111
Decorator used to register the function as an event listener.
166112
@@ -175,7 +121,7 @@ def _listen_decor(fnc: Callable):
175121

176122
return _listen_decor
177123

178-
def emit(self, event: EventID, *args, **kwargs) -> asyncio.Future:
124+
def emit(self, event: "EventID", *args, **kwargs) -> asyncio.Future:
179125
"""
180126
.. versionadded:: 3.0
181127
@@ -267,3 +213,161 @@ def initialize():
267213
def get_global_event_ctrl() -> Union[EventController, None]:
268214
"Returns the global event controller"
269215
return GLOBAL.g_controller
216+
217+
218+
@doc_category("Event reference")
219+
class EventID(Enum):
220+
"""
221+
Enum of all available events.
222+
223+
Global events (:func:`get_global_event_ctrl`) have a
224+
``g_`` prefix on their name. Other events are controlled by account bound :class:`daf.events.EventController`.
225+
"""
226+
227+
g_daf_startup = 0
228+
g_daf_shutdown = auto()
229+
g_trace = auto()
230+
g_account_expired = auto()
231+
232+
account_update = auto()
233+
234+
message_ready = auto()
235+
message_removed = auto()
236+
message_added = auto()
237+
message_update = auto()
238+
239+
server_removed = auto()
240+
server_added = auto()
241+
server_update = auto()
242+
auto_guild_start_join = auto()
243+
244+
discord_member_join = auto()
245+
discord_invite_delete = auto()
246+
247+
_dummy = auto() # For stopping the event loop
248+
249+
# Events for use externally (not within daf)
250+
_ws_disconnect = auto()
251+
252+
253+
@doc_category("Event reference")
254+
async def g_daf_startup():
255+
"""
256+
Event that is emitted after DAF has started.
257+
"""
258+
259+
@doc_category("Event reference")
260+
async def g_daf_shutdown():
261+
"""
262+
Event that is emitted after DAF has shutdown.
263+
"""
264+
265+
@doc_category("Event reference")
266+
async def g_trace(level, message: str):
267+
"""
268+
Event that is emitted when a message has been printed with :func:`~daf.logging.tracing.trace`.
269+
270+
:param level: The trace detail.
271+
:type level: TraceLEVELS
272+
:param message: The message traced.
273+
:type message: str
274+
"""
275+
276+
@doc_category("Event reference")
277+
async def g_account_expired(account):
278+
"""
279+
Event that is emitted when an account has it's token invalidated
280+
and is being forcefully removed.
281+
282+
:param account: The account updated
283+
:type account: daf.client.ACCOUNT
284+
"""
285+
286+
@doc_category("Event reference")
287+
async def account_update(account):
288+
"""
289+
Event that is emitted before an account update.
290+
291+
:param account: The account updated
292+
:type account: daf.client.ACCOUNT
293+
"""
294+
295+
@doc_category("Event reference")
296+
async def message_ready(guild, message):
297+
"""
298+
Event that is emitted when the message is ready to be sent.
299+
300+
:param guild: The guild message belongs to.
301+
:type guild: daf.guild.GUILD
302+
:param message: The message that is ready.
303+
:type message: daf.message.TextMESSAGE
304+
"""
305+
306+
@doc_category("Event reference")
307+
async def message_removed(guild, message):
308+
"""
309+
Event that is emitted before the message is be removed.
310+
311+
:param guild: The guild message belongs to.
312+
:type guild: daf.guild.GUILD
313+
:param message: The message removed.
314+
:type message: daf.message.TextMESSAGE
315+
"""
316+
317+
@doc_category("Event reference")
318+
async def message_added(guild, message):
319+
"""
320+
Event that is emitted before the message is added.
321+
322+
:param guild: The guild message belongs to.
323+
:type guild: daf.guild.GUILD
324+
:param message: The message added.
325+
:type message: daf.message.TextMESSAGE
326+
"""
327+
328+
@doc_category("Event reference")
329+
async def message_update(guild, message):
330+
"""
331+
Event that is emitted before the message is updated.
332+
333+
:param guild: The guild message belongs to.
334+
:type guild: daf.guild.GUILD
335+
:param message: The message updated.
336+
:type message: daf.message.TextMESSAGE
337+
"""
338+
339+
340+
@doc_category("Event reference")
341+
async def server_removed(server):
342+
"""
343+
Event that is emitted before the server is be removed.
344+
345+
:param server: The server removed.
346+
:type server: daf.guild.GUILD | daf.guild.USER | daf.guild.AutoGUILD
347+
"""
348+
349+
@doc_category("Event reference")
350+
async def server_added(server):
351+
"""
352+
Event that is emitted before the server is added.
353+
354+
:param server: The server added.
355+
:type server: daf.guild.GUILD | daf.guild.USER | daf.guild.AutoGUILD
356+
"""
357+
358+
@doc_category("Event reference")
359+
async def server_update(server):
360+
"""
361+
Event that is emitted before the server is updated.
362+
363+
:param server: The server updated.
364+
:type server: daf.guild.GUILD | daf.guild.USER | daf.guild.AutoGUILD
365+
"""
366+
367+
async def auto_guild_start_join(auto_guild):
368+
"""
369+
Event that is emitted when the join for new server should start.
370+
371+
:param auto_guild: The AutoGUILD responsible for the new server join.
372+
:type auto_guild: daf.guild.AutoGUILD
373+
"""

0 commit comments

Comments
 (0)