For my pr3s3nce bot at the AfRA channel I needed a Python IRC library that does not suck. The usual suspects like irc3 are outdated and relatively hard to program. After a while I stumbled accross pydle, which I currently regard as the superior IRC library.
Pydle uses Python’s async and await features, which makes programming the asynchronous message funtions rather easy. To make the code run on Python 3.5, I had to replace async and await keywords with @asyncio.coroutine and yield from.
import pydle class MyOwnBot(pydle.Client): @asyncio.coroutine def on_connect(self): yield from self.join('#channel') @asyncio.coroutine def on_message(self, target, source, message): # Executed on message in a public channel @asyncio.coroutine def on_private_message(self, target, source, message): # Executed on message in a query client = MyOwnBot("botname", realname="This is a bot") client.run('chat.freenode.net', tls=True, tls_verify=True)
Simple as that! Pydle does not handle reconnects very well, so the whole programm should be put into a simple Restart=Always systemd unit.