Block blacklisted users on contact
This commit is contained in:
parent
2e336fb9be
commit
24e8ce5ae3
2 changed files with 17 additions and 9 deletions
|
@ -178,6 +178,11 @@ module Ebooks
|
||||||
|
|
||||||
meta = calc_meta(ev)
|
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]
|
if meta[:mentions_bot]
|
||||||
log "Mention from @#{ev.user.screen_name}: #{ev.text}"
|
log "Mention from @#{ev.user.screen_name}: #{ev.text}"
|
||||||
interaction(ev.user.screen_name).receive(ev)
|
interaction(ev.user.screen_name).receive(ev)
|
||||||
|
@ -186,7 +191,8 @@ module Ebooks
|
||||||
fire(:timeline, ev, meta)
|
fire(:timeline, ev, meta)
|
||||||
end
|
end
|
||||||
|
|
||||||
elsif ev.is_a? Twitter::Streaming::DeletedTweet
|
elsif ev.is_a?(Twitter::Streaming::DeletedTweet) ||
|
||||||
|
ev.is_a?(Twitter::Streaming::Event)
|
||||||
# pass
|
# pass
|
||||||
else
|
else
|
||||||
log ev
|
log ev
|
||||||
|
@ -223,16 +229,13 @@ module Ebooks
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Wrapper for EM.add_timer
|
|
||||||
# Delays add a greater sense of humanity to bot behaviour
|
|
||||||
def delay(&b)
|
def delay(&b)
|
||||||
time = @delay.to_a.sample unless @delay.is_a? Integer
|
time = @delay.to_a.sample unless @delay.is_a? Integer
|
||||||
EM.add_timer(time, &b)
|
sleep time
|
||||||
end
|
end
|
||||||
|
|
||||||
def blacklisted?(username)
|
def blacklisted?(username)
|
||||||
if @blacklist.include?(username)
|
if @blacklist.include?(username)
|
||||||
log "Saw scary blacklisted user @#{username}"
|
|
||||||
true
|
true
|
||||||
else
|
else
|
||||||
false
|
false
|
||||||
|
@ -250,10 +253,7 @@ module Ebooks
|
||||||
elsif ev.is_a? Twitter::Tweet
|
elsif ev.is_a? Twitter::Tweet
|
||||||
meta = calc_meta(ev)
|
meta = calc_meta(ev)
|
||||||
|
|
||||||
if blacklisted?(ev.user.screen_name)
|
if !interaction(ev.user.screen_name).continue?
|
||||||
log "Not replying to blacklisted user @#{ev.user.screen_name}"
|
|
||||||
return
|
|
||||||
elsif !interaction(ev.user.screen_name).continue?
|
|
||||||
log "Not replying to suspected bot @#{ev.user.screen_name}"
|
log "Not replying to suspected bot @#{ev.user.screen_name}"
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
|
@ -148,4 +148,12 @@ describe Ebooks::Bot do
|
||||||
expect(bot.twitter).to_not have_received(:update)
|
expect(bot.twitter).to_not have_received(:update)
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue