Merge pull request #1 from michenriksen/master

Make event handlers optional to define
This commit is contained in:
Mispy 2013-12-01 18:55:52 -08:00
commit 47e62bec94

View file

@ -5,7 +5,7 @@ require 'rufus/scheduler'
module Ebooks module Ebooks
class Bot class Bot
attr_accessor :consumer_key, :consumer_secret, attr_accessor :consumer_key, :consumer_secret,
:oauth_token, :oauth_token_secret :oauth_token, :oauth_token_secret
attr_accessor :username attr_accessor :username
@ -70,13 +70,13 @@ module Ebooks
@stream.on_event(:follow) do |event| @stream.on_event(:follow) do |event|
next if event[:source][:screen_name] == @username next if event[:source][:screen_name] == @username
log "Followed by #{event[:source][:screen_name]}" log "Followed by #{event[:source][:screen_name]}"
@on_follow.call(event[:source]) @on_follow.call(event[:source]) if @on_follow
end end
@stream.on_direct_message do |dm| @stream.on_direct_message do |dm|
next if dm[:sender][:screen_name] == @username # Don't reply to self next if dm[:sender][:screen_name] == @username # Don't reply to self
log "DM from @#{dm[:sender][:screen_name]}: #{dm[:text]}" log "DM from @#{dm[:sender][:screen_name]}: #{dm[:text]}"
@on_message.call(dm) @on_message.call(dm) if @on_message
end end
@stream.userstream do |ev| @stream.userstream do |ev|
@ -110,9 +110,9 @@ module Ebooks
# - Or soft-retweeted by somebody else # - Or soft-retweeted by somebody else
if mentions.map(&:downcase).include?(@username.downcase) && !ev[:retweeted_status] && !ev[:text].start_with?('RT ') if mentions.map(&:downcase).include?(@username.downcase) && !ev[:retweeted_status] && !ev[:text].start_with?('RT ')
log "Mention from @#{ev[:user][:screen_name]}: #{ev[:text]}" log "Mention from @#{ev[:user][:screen_name]}: #{ev[:text]}"
@on_mention.call(ev, meta) @on_mention.call(ev, meta) if @on_mention
else else
@on_timeline.call(ev, meta) @on_timeline.call(ev, meta) if @on_timeline
end end
end end
end end
@ -135,7 +135,7 @@ module Ebooks
@twitter.direct_message_create(ev[:sender][:screen_name], text, opts) @twitter.direct_message_create(ev[:sender][:screen_name], text, opts)
elsif ev.is_a? Twitter::Tweet elsif ev.is_a? Twitter::Tweet
log "Replying to @#{ev[:user][:screen_name]} with: #{text}" log "Replying to @#{ev[:user][:screen_name]} with: #{text}"
@twitter.update(text, in_reply_to_status_id: ev[:id]) @twitter.update(text, in_reply_to_status_id: ev[:id])
else else
raise Exception("Don't know how to reply to a #{ev.class}") raise Exception("Don't know how to reply to a #{ev.class}")
end end