Skip to content

Instantly share code, notes, and snippets.

@droberts-sea
Created May 1, 2017 19:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save droberts-sea/11aa26eaa1f1933cd534ba13e16a7ad8 to your computer and use it in GitHub Desktop.
Save droberts-sea/11aa26eaa1f1933cd534ba13e16a7ad8 to your computer and use it in GitHub Desktop.
require 'httparty'
TOKEN = "xoxp-105525597987-111410440576-176854780516-7dcef01f9a30d7b808a9ebce3248439d"
BASE_URL = "https://slack.com/api/"
class SlackException < StandardError
end
class SlackChannel
attr_reader :name, :raw_data
def initialize(data)
@name = data["name"]
@raw_data = data
end
def send(message)
# Extra data!
query_params = {
"token" => TOKEN,
"channel" => @name,
"text" => message,
"username" => "Roberts-Robit",
"icon_emoji" => ":robot_face:",
"as_user" => "false"
}
url = "#{BASE_URL}chat.postMessage"
response = HTTParty.post(url, query: query_params)
if response["ok"]
puts "Everything went swell"
else
raise SlackException.new(response["error"])
end
end
def self.all
url = "#{BASE_URL}channels.list?token=#{TOKEN}"
response = HTTParty.get(url).parsed_response
if response["ok"]
channel_list = response["channels"].map do |channel_data|
self.new(channel_data)
end
return channel_list
else
raise SlackException.new(response["error"])
end
end
end
puts "Welcome to the Slack API Demo"
puts "Here are all the channels"
begin
channels = SlackChannel.all
rescue SlackException => exception
puts "Got an error: #{exception}"
exit
end
channels.each do |channel|
puts " #{channel.name}"
end
puts "What channel do you want?"
channel_name = gets.chomp
channel = channels.find do |channel|
channel.name == channel_name
end
if channel
puts "What do you want to send?"
message = gets.chomp
channel.send(message)
else
puts "No such channel!"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment