The IRC (Internet Relay Chat) protocol is the oldest distributed chat protocol still in widespread use. This library implements both client and server sides of the IRC protocol as a pure state-machine which only takes in bytes and returns a list of parsed events. This leaves users free to use any I/O approach they see fit (asyncio, curio, Twisted, etc.).
Sample code is provided for implementing both clients and servers using a variety of I/O frameworks.