Skip to content

Instantly share code, notes, and snippets.

@eyalzek
Created July 25, 2017 08:38
Show Gist options
  • Save eyalzek/89bf09df9e76a0d03e09abd3198f51e0 to your computer and use it in GitHub Desktop.
Save eyalzek/89bf09df9e76a0d03e09abd3198f51e0 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
import os
import re
import time
from slackclient import SlackClient
client = SlackClient(os.environ['SLACK_BOT_TOKEN'])
match_pattern = 'from (.*)(>|>)'
def get_user(name):
user_list = client.api_call('users.list')
relevant_users = [u for u in user_list['members']
if u['profile']['real_name'].lower() == name.lower()]
try:
return filter(lambda x: not x['deleted'], relevant_users)[0]
except IndexError:
return None
def handle_message(msg, channel_id):
if not msg.startswith('INPUT'):
return
m = re.search(match_pattern, msg)
if m:
user = get_user(m.group(1))
if user:
print(user['id'])
dm = client.api_call('im.open', user=user['id'])['channel']['id']
client.rtm_send_message(
dm, 'Input action requested on channel <#%s>' % channel_id)
else:
print('Couldn\'t extract name from message')
def listen():
event = client.rtm_read()
if len(event) > 0 and event[0].has_key('type'):
if event[0]['type'] == 'message':
print(event[0])
if (event[0].has_key('attachments') and
event[0].has_key('channel') and
not event[0].has_key('reply_to')):
handle_message(event[0]['attachments'][0]['text'], event[0]['channel'])
time.sleep(1)
if __name__ == '__main__':
if client.rtm_connect():
print('Jenkinsbot started, listening for messages')
while True:
listen()
else:
print('Connection failed!')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment