Django Channels IRC is a bridge between IRC and Django's channels
. It contains both a new interface server for connecting to IRC and Channels consumers -- everything you need to turn your Django app into an IRC chatbot, chat monitoring/moderating service, or whatever else you might use a real-time IRC client to do.
Full docs available at django-channels-irc.readthedocs.io
Install the package from pip:
pip install channels-irc
-
Add the library to
INSTALLED_APPS
:INSTALLED_APPS = ( ... 'channels_irc', )
-
Create a Consumer
Django Channels IRC contains two consumers for interacting with the IRC Client:
IrcConsumer
andAsyncIrcConsumer
:from channels_irc import IrcConsumer class MyIrcConsumer(IrcConsumer): def welcome(self, channel): """ Optional hook for actions on connection to IRC Server """ print('Connected to server {}:{} with nickname'.format(server, port, nickname) def disconnect(self, server, port): """ Optionl hook fr actions on disconnect from IRC Server """ print('Disconnect from server {}:{}'.format(server, port) def my_custom_message(self): """ Use built-in functions to send basic IRC messages """ self.send_message('my-channel', 'here is what I wanted to say') """ You can also use built-in functions to send basic IRC commands """ self.send_command('join', channel='some-other-channel')
-
Add your consumer(s) to your router
You can use the
irc
type in channelsProtocolTypeRouter
to connect your new consumer to the interface server, and ensure yourirc
messages are delivered to the right place:from channels.routing import ProtocolTypeRouter from myapp.consumers import MyIrcConsumer application = ProtocolTypeRouter({ 'irc': MyIrcConsumer.as_asgi(), })
-
Start the interface server
The interface server can be started by simply running this in the command line:
channels-irc
The server requires that the
server
,nickname
, andapplication
properties be set. Theapplication
should be an import string pointing to the location of your app's ASGI application. Hence, if your app was namedmyapp
, contained an ASGI filed calledasgi.py
, and your ASGI application is namedmy_application
, you could start the server by running:channels-irc -s 'irc.freenode.net' -n 'my_irc_nickname' -a 'myapp.asgi:my_application'
You can also set these values using the env variables
CHANNELS_IRC_SERVER
,CHANNELS_IRC_NICKNAME
, andCHANNELS_IRC_LAYER
.