Add reactions plugin
This commit is contained in:
parent
a446dfdce8
commit
afe1b0e35e
1 changed files with 51 additions and 0 deletions
51
plugins/reactions.py
Normal file
51
plugins/reactions.py
Normal file
|
@ -0,0 +1,51 @@
|
|||
# react.py
|
||||
# Necessary plugin for productive Slack orgs.
|
||||
# Eryn Wells <eryn@erynwells.me>
|
||||
|
||||
import logging
|
||||
import re
|
||||
import requests
|
||||
|
||||
LOGGER = logging.getLogger('react')
|
||||
|
||||
EXTENSIONS = ('', '.gif', '.png', '.jpg')
|
||||
MESSAGE_RE = re.compile(r'(!react)\s+(\w+)')
|
||||
|
||||
#
|
||||
# rtmbot interface
|
||||
#
|
||||
|
||||
config = None
|
||||
outputs = []
|
||||
|
||||
def process_message(data):
|
||||
LOGGER.debug(config)
|
||||
if 'reactions_root' not in config:
|
||||
LOGGER.error('Please define the root URL where reactions live in config.reactions_root')
|
||||
return
|
||||
|
||||
try:
|
||||
text = data['text']
|
||||
except KeyError:
|
||||
LOGGER.debug('Missing "text" key in data.')
|
||||
return
|
||||
|
||||
# find the message
|
||||
match = MESSAGE_RE.match(text)
|
||||
if not match:
|
||||
return
|
||||
reaction = match.group(2)
|
||||
if not reaction:
|
||||
LOGGER.info('Reaction command but no reaction.')
|
||||
|
||||
for ext in EXTENSIONS:
|
||||
url = '{}/{}{}'.format(config['reactions_root'], reaction, ext)
|
||||
LOGGER.debug('Checking url: %s', url)
|
||||
r = requests.head(url)
|
||||
if r.status_code != 200:
|
||||
continue
|
||||
outputs.append([data['channel'], url])
|
||||
break
|
||||
else:
|
||||
outputs.append([data['channel'], 'Sorry, no reaction by that name'])
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue