Skip to content

Instantly share code, notes, and snippets.

@haruair
Created August 23, 2016 04:21
Show Gist options
  • Select an option

  • Save haruair/0da2bc4b2fbffdb7a48c9bdd140c6524 to your computer and use it in GitHub Desktop.

Select an option

Save haruair/0da2bc4b2fbffdb7a48c9bdd140c6524 to your computer and use it in GitHub Desktop.
slack wc client
from websocket import create_connection
import json
import signal
import sys
import requests
key = "" # me key
channelId = "C03BXUL0Q" # general
r = requests.get('https://slack.com/api/rtm.start?token='+key)
response = r.json()
url = response.get('url')
users = response.get('users')
print("total %d users" % len(users))
ws = create_connection(url)
def signal_handler(signal, frame):
global ws
ws.close()
print('You pressed Ctrl+C!')
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
while True:
result = ws.recv()
ob = json.loads(result)
if ob.get("type") == "hello":
print("Connected")
elif ob.get("type") == "reconnect_url":
url = ob.get("url")
elif ob.get("type") == "team_join":
users.append(ob.get("user"))
elif ob.get("type") == "message" and ob.get("channel") == channelId:
userid = ob.get("user")
filtered = [user for user in users if user.get('id') == userid]
print("%s: %s" % (filtered[0].get('name'), ob.get("text")))
ws.close()
# {'is_ultra_restricted': False, 'deleted': False, 'name': '00f', 'status': None, 'presence': 'away', 'is_restricted': False, 'tz_offset': 32400, 'tz': 'Asia/Tokyo', 'is_owner': False, 'tz_label': 'Japan Standard Time', 'team_id': 'T024R44D2', 'real_name': '', 'id': 'U0FEE319R', 'profile': {'avatar_hash': 'g6a1d0ad8dab', 'fields': None, 'image_72': 'https://secure.gravatar.com/avatar/6a1d0ad8dabedacaa237de17ba8a0f46.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0002-72.png', 'image_512': 'https://secure.gravatar.com/avatar/6a1d0ad8dabedacaa237de17ba8a0f46.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F7fa9%2Fimg%2Favatars%2Fava_0002-512.png', 'real_name': '', 'real_name_normalized': '', 'email': 'emjeon93@gmail.com', 'image_192': 'https://secure.gravatar.com/avatar/6a1d0ad8dabedacaa237de17ba8a0f46.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F7fa9%2Fimg%2Favatars%2Fava_0002-192.png', 'image_32': 'https://secure.gravatar.com/avatar/6a1d0ad8dabedacaa237de17ba8a0f46.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F0180%2Fimg%2Favatars%2Fava_0002-32.png', 'image_24': 'https://secure.gravatar.com/avatar/6a1d0ad8dabedacaa237de17ba8a0f46.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0002-24.png', 'image_48': 'https://secure.gravatar.com/avatar/6a1d0ad8dabedacaa237de17ba8a0f46.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0002-48.png'}, 'is_admin': False, 'has_2fa': False, 'is_bot': False, 'is_primary_owner': False, 'color': '684b6c'}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment