Usage¶
Follow these steps to set up Django Channels IRC in your project
Create a Consumer¶
Django Channels IRC contains two consumers for interacting with the
IRC interface server: IrcConsumer
and AsyncIrcConsumer
:
from channels_irc import IrcConsumer
class MyIrcConsumer(IrcConsumer):
def welcome(self, nickname):
"""
Optional hook for actions on connection to IRC Server
"""
print('Connected to IRC with nickname {}'.format(nickname)
def disconnect(self, server, port):
"""
Optionl hook for 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')
def my_custom_command(self):
"""
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 channels ProtocolTypeRouter
to connect
your new consumer to the interface server, and ensure
your irc
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
, and application
properties be
set. The application
should be an import string pointing to the location of
your app’s ASGI application. Hence, if your app was named myapp
, contained an
ASGI file called asgi.py
, and your ASGI application is named my_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
, and CHANNELS_IRC_LAYER
.