Sha256: 88ad14c575a41227f03c1a596fcfdb68a1eeb30142b9ca7cbd453e771dbac636
Contents?: true
Size: 1.58 KB
Versions: 5
Compression:
Stored size: 1.58 KB
Contents
module Bobot module Commander class Error < Bobot::FacebookError; end EVENTS = %i[ message delivery postback optin read account_linking referral message_echo message_request policy-enforcement ].freeze include Bobot::GraphFacebook class << self def deliver(body:, query:) graph_post '/me/messages', body: body, query: { access_token: query.fetch(:access_token), } end def on(event, &block) if EVENTS.include? event hooks[event] = block else warn "[bobot trigger] Ignoring #{event.class} (not available in [#{EVENTS.join(', ')}])" end end def receive(payload) event = Bobot::Event.parse(payload) return unless event.page.present? hooks.fetch(Bobot::Event::EVENTS.invert[event.class].to_sym) event.mark_as_seen Bobot::CommanderJob.send( Bobot.config.async ? :perform_later : :perform_now, { payload: payload }, ) rescue KeyError warn "[bobot trigger] Ignoring #{event.class} (no hook registered)" end def trigger(payload) event = Bobot::Event.parse(payload) return unless event.page.present? hook = hooks.fetch(Bobot::Event::EVENTS.invert[event.class].to_sym) hook.call(event) rescue KeyError warn "[bobot trigger] Ignoring #{event.class} (no hook registered)" end def hooks @hooks ||= {} end def unhook @hooks = {} end end end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
bobot-4.11.0 | lib/bobot/commander.rb |
bobot-4.10.0 | lib/bobot/commander.rb |
bobot-4.9.0 | lib/bobot/commander.rb |
bobot-4.8.0 | lib/bobot/commander.rb |
bobot-4.7.0 | lib/bobot/commander.rb |