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-
8325class 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" )
9841class 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():
267213def 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