From 46679bdb9dd68c60be1d7515c09623fd64c6e3b2 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Wed, 18 May 2016 00:15:22 -0400 Subject: [PATCH] Add the cowsay plugin --- plugins/cowsay.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 plugins/cowsay.py diff --git a/plugins/cowsay.py b/plugins/cowsay.py new file mode 100644 index 0000000..d0b015f --- /dev/null +++ b/plugins/cowsay.py @@ -0,0 +1,42 @@ +# cowsay.py +# Necessary plugin for productive Slack orgs. +# Eryn Wells + +import logging +import re +import subprocess + +LOGGER = logging.getLogger('cowsay') + +COWSAY_PATH = '/usr/games/cowsay' +MESSAGE_RE = re.compile(r'(!cowsay)(.*)') + +outputs = [] + +def process_message(data): + try: + text = data['text'] + except KeyError: + LOGGER.error('Missing "text" key in data.') + return + + # find the message + match = MESSAGE_RE.match(text) + if not match: + return + cmd = match.group(1) + if not cmd: + return + msg = match.group(2) + if not msg: + LOGGER.info('Cowsay command but no message.') + + # cowsay it up + try: + out = subprocess.check_output([COWSAY_PATH, msg]).decode() + except subprocess.CalledProcessError as e: + LOGGER.error('Error running cowsay. (%d)', e.returncode) + return + out = '```\n{}```'.format(out) + outputs.append([data['channel'], out]) +