Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Python IRC bot built atop asyncio
Python
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
dywypi
.gitignore
README.md
setup.py
tox.ini

README.md

dywypi

dywypi is an IRC bot you can extend with plugins.

It also contains a simple IRC protocol implementation for asyncio, which can be used independently of the bot.

Setup

dywypi requires at least Python 3.3 — it's based on the asyncio library, which uses the yield from syntax.

dywypi has not yet had a stable release, so you must install it from git. (You may wish to do this from a virtualenv.)

pip install [--user] 'git+https://github.com/eevee/dywypi.git#egg=dywypi'

Starting the bot

To start the bot run python -m dywypi ircs://<nick>:<password>@<host>/<channel>, for example: python -m dywypi ircs://atlas:hunter2@irc.example.com/example.

Note that depending on your system, your Python 3 binary may be called python3.

By default, the bot doesn't load any plugins. Pass one or more -p <name> to load plugins by name, or use -p ALL to load all detected plugins.

Creating a plugin

You do not need to edit dywypi's codebase to create new plugins. Instead, put your plugin modules in a dywypi_plugins directory. Any module in the dywypi_plugins. namespace will be automatically discovered and scanned. (Of course, you must still load your plugin with -p <name> or -p ALL.)

Don't create a dywypi_plugins/__init__.py. dywypi_plugins is a namespace package (see PEP 420) and should never contain an __init__.py.

Example Plugin: Reverse

from dywypi.plugin import Plugin

plugin = Plugin('reverse')

@plugin.command('reverse')
def reverse(event):
    yield from event.reply(event.message[::-1])

A conversation with a bot running the reverse plugin would look something like this:

<campaul> atlas: reverse foobar
<atlas> campaul: raboof

Development

You can install in "editable" mode by passing -e to pip install.

The (currently rather small) test suite uses pytest. Run it with py.test dywypi. Tox is also supported; you should be able to run tox to run the test suite with coverage support and also do a flake8 pass.

Tickets and pull requests are welcome!

Something went wrong with that request. Please try again.