Add the cowsay plugin
This commit is contained in:
parent
9384aad4fb
commit
46679bdb9d
1 changed files with 42 additions and 0 deletions
42
plugins/cowsay.py
Normal file
42
plugins/cowsay.py
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
# cowsay.py
|
||||||
|
# Necessary plugin for productive Slack orgs.
|
||||||
|
# Eryn Wells <eryn@erynwells.me>
|
||||||
|
|
||||||
|
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])
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue