Add listener helpers (#69)
Some checks failed
Deploy MkDocs / deploy (push) Has been cancelled

This commit is contained in:
Slipstream 2025-06-11 18:24:18 -06:00 committed by GitHub
parent e693f00abe
commit 7c7bebc95a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 25 additions and 11 deletions

View File

@ -539,6 +539,20 @@ class Client:
return decorator return decorator
def add_listener(
self, event_name: str, coro: Callable[..., Awaitable[None]]
) -> None:
"""Register ``coro`` to listen for ``event_name``."""
self._event_dispatcher.register(event_name, coro)
def remove_listener(
self, event_name: str, coro: Callable[..., Awaitable[None]]
) -> None:
"""Remove ``coro`` from ``event_name`` listeners."""
self._event_dispatcher.unregister(event_name, coro)
async def _process_message_for_commands(self, message: "Message") -> None: async def _process_message_for_commands(self, message: "Message") -> None:
"""Internal listener to process messages for commands.""" """Internal listener to process messages for commands."""
# Make sure message object is valid and not from a bot (optional, common check) # Make sure message object is valid and not from a bot (optional, common check)

View File

@ -1,7 +1,7 @@
# Events # Events
Disagreement dispatches Gateway events to asynchronous callbacks. Handlers can be registered with `@client.event` or `client.on_event`. Disagreement dispatches Gateway events to asynchronous callbacks. Handlers can be registered with `@client.event`, `client.on_event`, or `client.add_listener(event_name, coro)`.
Listeners may be removed later using `EventDispatcher.unregister(event_name, coro)`. Listeners may be removed later using `client.remove_listener(event_name, coro)` or `EventDispatcher.unregister(event_name, coro)`.
## Raw Events ## Raw Events