Sha256: 661a57563c1ee40096e4a871d623b2a1d0e1d95efbdf893ee579e7daeb5193f3

Contents?: true

Size: 1.47 KB

Versions: 1

Compression:

Stored size: 1.47 KB

Contents

require 'rubotnik/version'
require 'rubotnik/message_dispatch'
require 'rubotnik/postback_dispatch'
require 'rubotnik/user_store'
require 'rubotnik/user'
require 'rubotnik/cli'
require 'rubotnik/generator'
require 'rubotnik/autoloader'
require 'ui/base_ui_element'
require 'ui/common/has_buttons'
require 'ui/fb_button_template'
require 'ui/fb_carousel'
require 'ui/fb_open_graph_template'
require 'ui/image_attachment'
require 'ui/quick_replies'
require 'sinatra'
require 'facebook/messenger'
require 'logger'

include Facebook::Messenger

module Rubotnik
  class << self
    attr_writer :logger

    def logger
      @logger ||= Logger.new($stdout).tap do |log|
        log.progname = name
      end
    end

    def route(event, &block)
      if %i[message postback].include?(event)
        Bot.on event do |e|
          case e
          when Facebook::Messenger::Incoming::Message
            Rubotnik::MessageDispatch.new(e).route(&block)
          when Facebook::Messenger::Incoming::Postback
            Rubotnik::PostbackDispatch.new(e).route(&block)
          end
        end
      else
        Bot.on(event, &block)
      end
    end

    def subscribe(token)
      Facebook::Messenger::Subscriptions.subscribe(
        access_token: token,
        subscribed_fields: %w[messages messaging_postbacks]
      )
    end

    def set_profile(*payloads)
      payloads.each do |payload|
        Facebook::Messenger::Profile.set(payload, access_token: ENV['ACCESS_TOKEN'])
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rubotnik-0.2.3 lib/rubotnik.rb