Changes in / [0948fa0f:e4e1dcb]
- Location:
- lib/BarnOwl/Module
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
lib/BarnOwl/Module/Twitter.pm
r22fce654 r22fce654 187 187 } 188 188 189 sub poll_messages {190 return unless @twitter_handles;191 192 my $handle = $twitter_handles[$next_service_to_poll];193 $next_service_to_poll = ($next_service_to_poll + 1) % scalar(@twitter_handles);194 195 $handle->poll_twitter() if $handle->{cfg}->{poll_for_tweets};196 $handle->poll_direct() if $handle->{cfg}->{poll_for_dms};197 }198 199 189 sub find_account { 200 190 my $name = shift; … … 345 335 } 346 336 347 eval {348 $BarnOwl::Hooks::receiveMessage->add("BarnOwl::Module::Twitter::handle_message");349 $BarnOwl::Hooks::mainLoop->add("BarnOwl::Module::Twitter::poll_messages");350 };351 if($@) {352 $BarnOwl::Hooks::receiveMessage->add(\&handle_message);353 $BarnOwl::Hooks::mainLoop->add(\&poll_messages);354 }355 356 337 BarnOwl::filter(qw{twitter type ^twitter$}); 357 338 -
lib/BarnOwl/Module/Twitter/Handle.pm
r0948fa0f re4951ea 24 24 } 25 25 use HTML::Entities; 26 27 use Scalar::Util qw(weaken); 26 28 27 29 use BarnOwl; … … 65 67 'cfg' => $cfg, 66 68 'twitter' => undef, 67 'last_poll' => 0,68 'last_direct_poll' => 0,69 69 'last_id' => undef, 70 70 'last_direct' => undef, 71 'timer' => undef, 72 'direct_timer' => undef 71 73 }; 72 74 … … 100 102 warn "$@\n" if $@; 101 103 104 $self->sleep(0); 105 102 106 return $self; 107 } 108 109 =head2 sleep SECONDS 110 111 Stop polling Twitter for SECONDS seconds. 112 113 =cut 114 115 sub sleep { 116 my $self = shift; 117 my $delay = shift; 118 119 my $weak = $self; 120 weaken($weak); 121 122 if($self->{cfg}->{poll_for_tweets}) { 123 $self->{timer} = BarnOwl::Timer->new({ 124 after => $delay, 125 interval => 60, 126 cb => sub { $weak->poll_twitter if $weak } 127 }); 128 } 129 130 if($self->{cfg}->{poll_for_dms}) { 131 $self->{direct_timer} = BarnOwl::Timer->new({ 132 after => $delay, 133 interval => 120, 134 cb => sub { $weak->poll_direct if $weak } 135 }); 136 } 103 137 } 104 138 … … 137 171 warn "$@\n" if $@; 138 172 unless(defined($ratelimit) && ref($ratelimit) eq 'HASH') { 139 # Twitter's just sucking, sleep for 5 minutes 140 $self->{last_direct_poll} = $self->{last_poll} = time + 60*5; 141 # die("Twitter seems to be having problems.\n"); 173 # Twitter's probably just sucking, try again later. 174 $self->sleep(5*60); 142 175 return; 143 176 } 177 144 178 if(exists($ratelimit->{remaining_hits}) 145 179 && $ratelimit->{remaining_hits} <= 0) { 146 $self-> {last_direct_poll} = $self->{last_poll} = $ratelimit->{reset_time_in_seconds};180 $self->sleep($ratelimit->{reset_time_in_seconds} - time + 60); 147 181 die("Twitter: ratelimited until " . $ratelimit->{reset_time} . "\n"); 148 182 } elsif(exists($ratelimit->{error})) { 183 $self->sleep(60*20); 149 184 die("Twitter: ". $ratelimit->{error} . "\n"); 150 $self->{last_direct_poll} = $self->{last_poll} = time + 60*20;151 185 } 152 186 } … … 155 189 my $self = shift; 156 190 157 return unless ( time - $self->{last_poll} ) >= 60;158 $self->{last_poll} = time;159 191 return unless BarnOwl::getvar('twitter:poll') eq 'on'; 192 193 BarnOwl::debug("Polling " . $self->{cfg}->{account_nickname}); 160 194 161 195 my $timeline = eval { $self->{twitter}->home_timeline( { since_id => $self->{last_id} } ) }; … … 208 242 my $self = shift; 209 243 210 return unless ( time - $self->{last_direct_poll}) >= 120;211 $self->{last_direct_poll} = time;212 244 return unless BarnOwl::getvar('twitter:poll') eq 'on'; 245 246 BarnOwl::debug("Polling direct for " . $self->{cfg}->{account_nickname}); 213 247 214 248 my $direct = eval { $self->{twitter}->direct_messages( { since_id => $self->{last_direct} } ) };
Note: See TracChangeset
for help on using the changeset viewer.