IRC Consumers¶
Django Channels IRC provides the AsyncIrcConsumer
, which provides
basic functionality for interacting with the IRC Server.
Built-in Methods¶
welcome(self, nickname)
(async)
Called when the welcome
command is received from IRC. This function
is an optional hook for your consumer to take specific actions immediately
after connecting to IRC
on_disconnect(self, server, port
(async)
Called when the quit
command is received from IRC. This function
is an optional hook for your consumer to take specific actions immediately
after disconnecting from IRC.
send_message(self, channel, text)
(async)
Sends a privmsg
command to IRC, with the channel
paramter as the
target channel and the text
parameter as the body.
send_command(self, command, channel=None, body=None)
(async)
Sends a command to IRC. Whether channel
and body
are required
depends on the particular command. For example, to join the channel
my-super-fun-channel
, call:
await self.send_command('join', channel='my-super-fun-channel')
Adding Handlers¶
The outcoming messages can be handled by the built-in methods. However,
handlers must be created for responding to incoming IRC messages/commands.
You can do that be adding a function to the consumer with the name
on_{COMMAND_NAME}
. For example, to create a function that runs after
a channel is joined, you could write:
from channels_irc.consumers import AsyncIrcConsumer
MyConsumer(AsyncIrcConsumer):
async def on_join(self, channel, user, body):
print("You just joined the channel {}".format(channel)
Handlers generally use the command name straight from the IRC spec (e.g.
join
, part
, names
). One except is privmsg
and pubmsg
commands, which have been funneled to a single message
command. To
process incoming messages, use the on_message
handler:
MyConsumer(AsyncIrcConsumer):
async def on_message(self, channel, user, body):
print("User {} just posted {} to channel {}".format(
user, body, channel
)
NOTE: Ping/Pong messages and responses are handled automatically
by the client. You should only need to write a specific ping
handler if you need some extra functionality besides send the pong
response back