Browse Source

Add asyncio.Task subclass for better __repr__ for events.

pull/2172/head
Rapptz 6 years ago
parent
commit
82b54933e2
  1. 23
      discord/client.py
  2. 3
      discord/ext/commands/bot.py

23
discord/client.py

@ -93,6 +93,22 @@ def _cleanup_loop(loop):
log.info('Closing the event loop.')
loop.close()
class _ClientEventTask(asyncio.Task):
def __init__(self, original_coro, event_name, coro, *, loop):
super().__init__(coro, loop=loop)
self.__event_name = event_name
self.__original_coro = original_coro
def __repr__(self):
info = [
('state', self._state.lower()),
('event', self.__event_name),
('coro', repr(self.__original_coro)),
]
if self._exception is not None:
info.append(('exception', repr(self._exception)))
return '<ClientEventTask {}>'.format(' '.join('%s=%s' % t for t in info))
class Client:
r"""Represents a client connection that connects to Discord.
This class is used to interact with the Discord WebSocket and API.
@ -257,6 +273,11 @@ class Client:
except asyncio.CancelledError:
pass
def _schedule_event(self, coro, event_name, *args, **kwargs):
wrapped = self._run_event(coro, event_name, *args, **kwargs)
# Schedules the task
return _ClientEventTask(original_coro=coro, event_name=event_name, coro=wrapped, loop=self.loop)
def dispatch(self, event, *args, **kwargs):
log.debug('Dispatching event %s', event)
method = 'on_' + event
@ -295,7 +316,7 @@ class Client:
except AttributeError:
pass
else:
asyncio.ensure_future(self._run_event(coro, method, *args, **kwargs), loop=self.loop)
self._schedule_event(coro, method, *args, **kwargs)
async def on_error(self, event_method, *args, **kwargs):
"""|coro|

3
discord/ext/commands/bot.py

@ -125,8 +125,7 @@ class BotBase(GroupMixin):
super().dispatch(event_name, *args, **kwargs)
ev = 'on_' + event_name
for event in self.extra_events.get(ev, []):
coro = self._run_event(event, event_name, *args, **kwargs)
asyncio.ensure_future(coro, loop=self.loop)
self._schedule_event(event, ev, *args, **kwargs)
async def close(self):
for extension in tuple(self.__extensions):

Loading…
Cancel
Save