(self, event: str, /, *args: Any, **kwargs: Any)
| 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| |
no test coverage detected