Metadata-Version: 2.1
Name: channels-irc
Version: 0.6.2
Summary: Interface server connecting Django's channels and IRC
Home-page: https://github.com/AdvocatesInc/django-channels-irc
Author: Advocates, Inc
Author-email: admin@adv.gg
License: Proprietary and confidential
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Internet :: WWW/HTTP
Requires-Dist: irc (>=16.4)
Requires-Dist: asgiref (>=3.0.0)
Requires-Dist: channels (<3.0.0,>=2.0.2)

============
Channels-IRC
============

A bridge between IRC and Django's ``channels``. 

Installation
============

run ``pip install channels_irc`` to install the library and set up the command line interface

Documentation
=============

Full docs available at `django-channels-irc.readthedocs.io
<https://django-channels-irc.readthedocs.io/en/latest/>`_.

Requirements
============

- `Django Channels 2+
  <https://channels.readthedocs.io/en/latest/>`_

Usage
=====

Follow these steps to set up **Django Channels IRC** in your project

Add to INSTALLED_APPS
=====================

Add the library to ``INSTALLED_APPS``::

    INSTALLED_APPS = (
        ...
        'channels_irc',
    )

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, channel):
            """
            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,
    })

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``.


