MCPcopy
hub / github.com/Rapptz/discord.py / dispatch

Method dispatch

discord/client.py:528–566  ·  view source on GitHub ↗
(self, event: str, /, *args: Any, **kwargs: Any)

Source from the content-addressed store, hash-verified

526 return self.loop.create_task(wrapped, name=f'discord.py: {event_name}')
527
528 def dispatch(self, event: str, /, *args: Any, **kwargs: Any) -> None:
529 _log.debug('Dispatching event %s', event)
530 method = 'on_' + event
531
532 listeners = self._listeners.get(event)
533 if listeners:
534 removed = []
535 for i, (future, condition) in enumerate(listeners):
536 if future.cancelled():
537 removed.append(i)
538 continue
539
540 try:
541 result = condition(*args)
542 except Exception as exc:
543 future.set_exception(exc)
544 removed.append(i)
545 else:
546 if result:
547 if len(args) == 0:
548 future.set_result(None)
549 elif len(args) == 1:
550 future.set_result(args[0])
551 else:
552 future.set_result(args)
553 removed.append(i)
554
555 if len(removed) == len(listeners):
556 self._listeners.pop(event)
557 else:
558 for idx in reversed(removed):
559 del listeners[idx]
560
561 try:
562 coro = getattr(self, method)
563 except AttributeError:
564 pass
565 else:
566 self._schedule_event(coro, method, *args, **kwargs)
567
568 async def on_error(self, event_method: str, /, *args: Any, **kwargs: Any) -> None:
569 """|coro|

Callers 15

connectMethod · 0.95
_delay_readyMethod · 0.45
parse_readyMethod · 0.45
parse_resumedMethod · 0.45
parse_message_createMethod · 0.45
parse_message_deleteMethod · 0.45
parse_message_updateMethod · 0.45

Calls 3

_schedule_eventMethod · 0.95
popMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected