diff --git a/ircrobots/bot.py b/ircrobots/bot.py index e3c5bfe..2f51380 100644 --- a/ircrobots/bot.py +++ b/ircrobots/bot.py @@ -40,10 +40,13 @@ class Bot(object): async def _read(): while not tg.cancel_scope.cancel_called: lines = await server._read_lines() + for line, emits in lines: for emit in emits: - await self.emit_read(server, emit) - await self.line_read(server, line) + await tg.spawn(server._on_read_emit, line, emit) + await tg.spawn(self.emit_read, server, emit) + await tg.spawn(server._on_read_line, line) + await tg.spawn(self.line_read, server, line) await tg.cancel_scope.cancel() async def _write(): diff --git a/ircrobots/server.py b/ircrobots/server.py index 0c7cc75..94458c6 100644 --- a/ircrobots/server.py +++ b/ircrobots/server.py @@ -66,7 +66,6 @@ class Server(IServer): elif emit.subcommand in ["ACK", "NAK"]: await self._cap_ack(emit) - async def _on_read_line(self, line: Line): if line.command == "PING": await self.send(build("PONG", line.params)) @@ -74,11 +73,6 @@ class Server(IServer): async def _read_lines(self) -> List[Tuple[Line, List[Emit]]]: data = await self._reader.read(1024) lines = self.recv(data) - - for line, emits in lines: - for emit in emits: - await self._on_read_emit(line, emit) - await self._on_read_line(line) return lines async def line_written(self, line: Line):