Block blacklisted users on contact

This commit is contained in:
Jaiden Mispy 2014-11-18 14:31:59 +11:00
parent 2e336fb9be
commit 24e8ce5ae3
2 changed files with 17 additions and 9 deletions

View file

@ -178,6 +178,11 @@ module Ebooks
meta = calc_meta(ev)
if blacklisted?(ev.user.screen_name)
log "Blocking blacklisted user @#{ev.user.screen_name}"
@twitter.block(ev.user.screen_name)
end
if meta[:mentions_bot]
log "Mention from @#{ev.user.screen_name}: #{ev.text}"
interaction(ev.user.screen_name).receive(ev)
@ -186,7 +191,8 @@ module Ebooks
fire(:timeline, ev, meta)
end
elsif ev.is_a? Twitter::Streaming::DeletedTweet
elsif ev.is_a?(Twitter::Streaming::DeletedTweet) ||
ev.is_a?(Twitter::Streaming::Event)
# pass
else
log ev
@ -223,16 +229,13 @@ module Ebooks
end
end
# Wrapper for EM.add_timer
# Delays add a greater sense of humanity to bot behaviour
def delay(&b)
time = @delay.to_a.sample unless @delay.is_a? Integer
EM.add_timer(time, &b)
sleep time
end
def blacklisted?(username)
if @blacklist.include?(username)
log "Saw scary blacklisted user @#{username}"
true
else
false
@ -250,10 +253,7 @@ module Ebooks
elsif ev.is_a? Twitter::Tweet
meta = calc_meta(ev)
if blacklisted?(ev.user.screen_name)
log "Not replying to blacklisted user @#{ev.user.screen_name}"
return
elsif !interaction(ev.user.screen_name).continue?
if !interaction(ev.user.screen_name).continue?
log "Not replying to suspected bot @#{ev.user.screen_name}"
return
end

View file

@ -148,4 +148,12 @@ describe Ebooks::Bot do
expect(bot.twitter).to_not have_received(:update)
end
end
it "blocks blacklisted users on contact" do
simulate(bot) do
bot.blacklist = ["spammer"]
bot.receive_event(mock_tweet("spammer", "@test_ebooks @m1sp 7"))
expect(bot.twitter).to have_received(:block).with("spammer")
end
end
end