slouch: build cli-inspired Slack botsΒΆ

Here’s an example Slack bot built with slouch:

from slouch import Bot, help

class PingBot(Bot):
    pass

@PingBot.command
def pingme(opts, bot, event):
    """Usage: pingme [--message=<message>]

    Respond with an at-mention to the sender.

    Pass _message_ to include a message in the response.
    """

    sender_slack_id = event['user']
    message = opts['<message>']
    response = ""

    if message is not None:
        response = message

    return "<@%s> %s" % (sender_slack_id, response)

And here’s a test for that bot:

from slouch import testing

class TestPingBot(CommandTestCase):

    bot_class = PingBot

    def test_ping(self):
        response = self.send_message('pingme', user='123')
        self.assertEqual(response, '<@123> ')

For more details, see the api reference or the full example bot.