pinhook/README.rst

83 lines
2.3 KiB
ReStructuredText
Raw Normal View History

2017-10-10 20:07:09 +00:00
pinhook
=======
a pluggable irc bot framework in python
Tutorial
--------
Installation
~~~~~~~~~~~~
::
2017-10-31 17:27:33 +00:00
$ pip install pinhook
2017-10-10 20:07:09 +00:00
Creating the Bot
~~~~~~~~~~~~~~~~
To create the bot, just create a python file with the following:
.. code:: python
import pinhook.bot
bot = pinhook.bot.Bot(
channels=['#foo', '#bar'],
nickname='ph-bot',
server='irc.freenode.net'
)
bot.start()
2017-10-31 17:27:33 +00:00
This will start a basic bot and look for plugins in the 'plugins'
2017-10-10 20:07:09 +00:00
directory to add functionality.
2017-10-31 17:27:33 +00:00
Optional arguments are: \* ``port``: choose a custom port to connect to
the server (default: 6667) \* ``ops``: list of operators who can do
things like make the bot join other channels or quit (default: empty
list) \* ``plugin_dir``: directory where the bot should look for plugins
(default: "plugins")
2017-10-10 20:07:09 +00:00
Creating plugins
~~~~~~~~~~~~~~~~
2017-10-31 17:27:33 +00:00
In your chosen plugins directory ("plugins" by default) make a python
2017-10-10 20:07:09 +00:00
file with a function. You can use the ``@pinhook.plugin.register``
decorator to tell the bot the command to activate the function.
The function will need to be structured as such:
.. code:: python
import pinhook.plugin
@pinhook.plugin.register('!test')
def test_plugin(msg):
message = '{}: this is a test!'.format(msg.nick)
return pinhook.plugin.message(message)
The function will need to accept a single argument in order to accept a
``Message`` object from the bot.
2017-10-31 17:27:33 +00:00
The ``Message`` object has the following attributes: \* ``cmd``: the
command that triggered the function \* ``nick``: the user who triggered
the command \* ``arg``: all the trailing text after the command. This is
what you will use to get optional information for the command \*
``channel``: the channel where the command was initiated \* ``ops``: the
list of bot operators \* ``botnick``: the nickname of the bot
2017-10-10 20:07:09 +00:00
The plugin function **must** return one of the following in order to
2017-10-31 17:27:33 +00:00
give a response to the command: \* ``pinhook.plugin.message``: basic
message in channel where command was triggered \*
``pinhook.plugin.action``: CTCP action in the channel where command was
triggered (basically like using ``/me does a thing``)
2017-10-10 20:07:09 +00:00
Examples
--------
There are some basic examples in the ``examples`` directory in this
repository.
For a live and maintained bot running the current version of pinhook see
2017-10-31 17:27:33 +00:00
`pinhook-tilde <https://github.com/archangelic/pinhook-tilde>`__.