========
A clean, extensible IRC bot using Python, irckit, gevent & requests.
**Author:** Daniel Lindsley<br>
**License:** BSD<br>
**Version:** 0.4.1
Requirements
------------
* Python 2.6+
* gevent
* irckit
* requests
Usage
-----
Create your own ``bot.py`` file & drop in:
import toastbot
bot = toastbot.ToastBot('myircbot', '#myircchannel')
bot.setup()
Then run it with ``python bot.py``.
Configuration
-------------
The ``Toastbot`` object requires ``nick`` & ``channel`` arguments & can take a
variety of non-required options.
### Required arguments
* ``nick`` - The nickname of the bot, as a string.
* ``channel`` - The channel the bot should connect to, as a string.
### Options
* ``server`` - The server the bot should connect to (default: ``irc.freenode.net``).
* ``username`` -The username the bot should identify as (default: ``nick``);
* ``realname`` - The human readable name the bot should provide (default: 'ToastBot').
* ``debug`` - Controls if the IRC connection should dump debug messages (default: ``false``).
* ``log_dir`` - Controls what directory the logs should go in (default: ``$INSTALL_DIRECTORY/logs``).
* ``variants`` - Used to override ways to address the bot. Should be strings (default: ``[self.nick+': ', self.nick+', ', self.nick+'- ', self.nick+' - ']``).
Available "handlers"
--------------------
Handlers are how the bot can perform actions based on an incoming message. They
are simple methods hanging off the bot object. The built-in list consists of:
* ``help`` - Provides a description of what I respond to.
* ``dance`` - Get down and funky.
* ``woodies`` - Best quote on the internet..
* ``wiki`` - Search Wikipedia for a topic.
* ``metar`` - Fetch a NOAA METAR by station code.
* ``twitter`` - Search Twitter for a topic.
* ``fatpita`` - Get a random fatpita image. For the lulz.
* ``corgibomb`` - CORGI BOMB
Extending the bot
-----------------
Adding on further handlers is relatively simple. At its most basic, it's simply
adding on a new method decorated with ``toastbot.handler``. For example, logging
how many times a user has said something in the channel might look like:
import toastbot
class MyBot(toastbot.ToastBot):
talkers = {}
def __init__(self, *args, **kwargs):
super(MyBot, self).__init__(*args, **kwargs)
self.enabled_commands += [
self.how_chatty,
]
def how_chatty(self, nick, text):
"""Logs how often a user has said something."""
if nick in self.talkers:
self.talkers[nick] += 1
else:
self.talkers[nick] = 1
print self.talkers.items()
bot = MyBot('myircbot', '#myircchannel')
bot.setup()
Note that this command does not require addressing the bot at all. If you want
a command that the bot responds to, you might write something like:
import toastbot
class StoolPigeon(toastbot.ToastBot):
# Assume the previous example, but adding...
def __init__(self, *args, **kwargs):
super(StoolPigeon, self).__init__(*args, **kwargs)
self.enabled_commands += [
self.stool_pigeon,
]
def stool_pigeon(self, nick, text):
"""Rat out the talkers."""
text = self.is_direct_command('stool_pigeon', text)
if not text:
raise NotHandled()
return str(self.talkers)
bot = StoolPigeon('myircbot', '#myircchannel')
bot.setup()
This checks to see if the bot is being directly addressed then returns a
string-ified version of the ``talker`` stats. The included handlers demonstrate
even more complex behavior, such as how to do network fetches or asynchronous
responses.
To disable handlers:
import toastbot
class MyBot(toastbot.ToastBot):
talkers = {}
def __init__(self, *args, **kwargs):
super(MyBot, self).__init__(*args, **kwargs)
self.enabled_commands = [func for func in self.enabled_commands if func.__name__ != 'twitter']
bot = MyBot('myircbot', '#myircchannel')
bot.setup()
Metadata
Release files for toastbot 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| toastbot-0.4.1.tar.gz | 6.3 kB | Without provenance | Details for toastbot-0.4.1.tar.gz |
Release files / toastbot-0.4.1.tar.gz
| Download URL | toastbot-0.4.1.tar.gz |
|---|---|
| Size | 6.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7ff2c6f976260e68029078a4589183b5f74ab517ffca3611a298038b8a90d907
|
|
BLAKE2b-256 checksum How to use checksums |
ffe613e7c803afb36d85b23efb7a9b3af4c9b70df65b5a7c7d8493c1b6eae454
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for toastbot 0.4.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.