Add listener helpers (#69)
Some checks failed
Deploy MkDocs / deploy (push) Has been cancelled
Some checks failed
Deploy MkDocs / deploy (push) Has been cancelled
This commit is contained in:
parent
e693f00abe
commit
7c7bebc95a
@ -529,15 +529,29 @@ class Client:
|
|||||||
print(f"Message: {message.content}")
|
print(f"Message: {message.content}")
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def decorator(
|
def decorator(
|
||||||
coro: Callable[..., Awaitable[None]],
|
coro: Callable[..., Awaitable[None]],
|
||||||
) -> Callable[..., Awaitable[None]]:
|
) -> Callable[..., Awaitable[None]]:
|
||||||
if not asyncio.iscoroutinefunction(coro):
|
if not asyncio.iscoroutinefunction(coro):
|
||||||
raise TypeError("Event registered must be a coroutine function.")
|
raise TypeError("Event registered must be a coroutine function.")
|
||||||
self._event_dispatcher.register(event_name.upper(), coro)
|
self._event_dispatcher.register(event_name.upper(), coro)
|
||||||
return coro
|
return coro
|
||||||
|
|
||||||
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."""
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user