Changeset 433


Ignore:
Timestamp:
06/25/12 11:43:48 (12 years ago)
Author:
nanardon
Message:
  • implement auto restart for irc bot
Location:
bot/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • bot/trunk/bin/sophie-bot

    r401 r433  
    5151    type => $type || 'Term', 
    5252    proxy => $proxy, 
    53 ); 
     53) or die "Cannot get sophie object\n"; 
    5454 
    5555if ($password) { 
  • bot/trunk/lib/Sophie/Bot.pm

    r385 r433  
    3232    no strict qw(refs); 
    3333    eval "require $realclass;"; 
    34     return if($@); 
     34    if($@) { 
     35        warn $@; 
     36        return; 
     37    } 
    3538    bless($self, $realclass); 
    3639} 
  • bot/trunk/lib/Sophie/Bot/IRC.pm

    r401 r433  
    8181    my $self = $heap->{sophie}; 
    8282 
    83     die "Nick already in use\n"; 
     83    warn "Nickname already in use\n"; 
     84 
     85    my $config = $self->get_var($heap->{server}); 
     86 
     87    if (my $pass = $config->{password}) { 
     88        $irc->yield('privmsg', 'nickserv', "ghost " . $heap->{nick} . " $pass"); 
     89    } 
     90 
     91    $_[KERNEL]->stop; 
     92    #die "Nick already in use\n"; 
    8493} 
    8594 
     
    169178    my ($self) = @_; 
    170179 
    171     if ($self->{options}{ircserver}) { 
    172         $self->setup_server( 
    173             $self->{options}{ircserver}, 
    174             $self->{options}{ircnick}, 
    175         ); 
    176     } else { 
    177         my $resp = $self->send_request('user.fetchdata', 'botconfig'); 
    178         if (ref $resp) { 
    179             if ($resp->value) { 
    180                 foreach (ref($resp->value->{server}) ? @{$resp->value->{server}} 
    181                     : $resp->value->{server}) { 
    182                     $self->setup_server($_); 
     180    while (1) { 
     181        if ($self->{options}{ircserver}) { 
     182            $self->setup_server( 
     183                $self->{options}{ircserver}, 
     184                $self->{options}{ircnick}, 
     185            ); 
     186        } else { 
     187            my $resp = $self->send_request('user.fetchdata', 'botconfig'); 
     188            if (ref $resp) { 
     189                if ($resp->value) { 
     190                    foreach (ref($resp->value->{server}) ? @{$resp->value->{server}} 
     191                        : $resp->value->{server}) { 
     192                        $self->setup_server($_); 
     193                    } 
     194                } else { 
     195                    warn "No config found\n"; 
     196                    return; 
    183197                } 
    184198            } else { 
    185                 warn "No config found\n"; 
     199                warn "Cannot fetch config\n"; 
    186200                return; 
    187201            } 
    188         } else { 
    189             warn "Cannot fetch config\n"; 
    190             return; 
    191202        } 
    192     } 
    193  
    194     POE::Kernel->run(); 
     203 
     204        POE::Kernel->run(); 
     205        my $wait = 15 + rand(60); 
     206        warn "waiting $wait to reconnect\n"; 
     207        sleep($wait); 
     208    } 
    195209} 
    196210 
Note: See TracChangeset for help on using the changeset viewer.