A bot that is also a responsive shell
Project description
Fast, simple and lightweight micro bot framework for Python. It is distributed as a single package and has very few dependencies other than the Python Standard Library. Shellbot supports Python 3 and Python 2.7. Test coverage exceeds 90%.
Channels: a single bot can access jointly group and direct channels
Commands: routing from chat box to function calls made easy, including support of file uploads
State machines: powerful and pythonic way to bring intelligence to your bot
Stores: each bot has a dedicated data store
Utilities: convenient configuration-driven approach, chat audit, and more
Platforms: Cisco Spark, local disconnected mode for tests – looking for more
The Batman example
import os
import time
from shellbot import Engine, Context, Command
Context.set_logger()
class Batman(Command): # a command that displays static text
keyword = 'whoareyou'
information_message = u"I'm Batman!"
class Batcave(Command): # a command that reflects input from the end user
keyword = 'cave'
information_message = u"The Batcave is silent..."
def execute(self, bot, arguments=None, **kwargs):
if arguments:
bot.say(u"The Batcave echoes, '{0}'".format(arguments))
else:
bot.say(self.information_message)
class Batsignal(Command): # a command that uploads a file/link
keyword = 'signal'
information_message = u"NANA NANA NANA NANA"
information_file = "https://upload.wikimedia.org/wikipedia/en/c/c6/Bat-signal_1989_film.jpg"
def execute(self, bot, arguments=None, **kwargs):
bot.say(self.information_message,
file=self.information_file)
class Batsuicide(Command): # a command only for group channels
keyword = 'suicide'
information_message = u"Go back to Hell"
in_direct = False
def execute(self, bot, arguments=None, **kwargs):
bot.say(self.information_message)
bot.dispose()
engine = Engine( # use Cisco Spark and load shell commands
type='spark',
commands=[Batman(), Batcave(), Batsignal(), Batsuicide()])
os.environ['BOT_ON_ENTER'] = 'You can now chat with Batman'
os.environ['BOT_ON_EXIT'] = 'Batman is now quitting the room, bye'
os.environ['CHAT_ROOM_TITLE'] = 'Chat with Batman'
engine.configure() # ensure that all components are ready
engine.bond(reset=True) # create a group channel for this example
engine.run() # until Ctl-C
engine.dispose() # delete the initial group channel
Quick installation
To install the shellbot package, type:
$ pip install shellbot
Or, if you prefer to download the full project including examples and documentation, and install it, do the following:
$ git clone https://github.com/bernard357/shellbot.git $ cd shellbot $ pip install -e .
Where do you want to start?
Documentation: Shellbot at ReadTheDocs
Python package: Shellbot at PyPi
Source code: Shellbot at GitHub
Free software: Apache License (2.0)
Credits
securitybot from the Dropbox team
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for shellbot-17.10.20-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 09e59203f31142fc1d4e7e36ddd249aa350869da341c6d42f7073768ac2f2a63 |
|
MD5 | e74c1407df3bad24f0925e20a30bf49d |
|
BLAKE2b-256 | d1e47ba0534a75c44d82d1f70ca8e71e5c86b697d93727d54479e730deb1fc71 |