Exemplo n.º 1
0
 def on_join(self, connection, raw_msg):
     """ called by super() when somebody joins channel """
     if raw_msg.source.nick == connection.get_nickname():
         self.logger.info('joined to %s' % self.channel)
         self.whois(connection.get_nickname())
     else:
         self.call_plugins_methods(connection, raw_msg, 'on_join')
Exemplo n.º 2
0
    def on_join(self, connection, event):
        """Say hello to other people in the channel. """
        welcome_msg = "Hi, I'm " + self.__get_colored_text('3',str(connection.get_nickname())) + " your bot. Send " + self.__get_colored_text(self.color_num,"!help") +" to get a list of commands."

        if not self.__first_start:
            connection.privmsg(self.__config.CHANNEL, welcome_msg)
            self.__on_connect_cb()
            self.__first_start = True

        if event.source.nick != connection.get_nickname():
            connection.privmsg(event.source.nick, welcome_msg)
Exemplo n.º 3
0
 def on_invite(self, connection, event):
     nick = event.target
     if nick != connection.get_nickname() or len(event.arguments) < 1:
         return
     channel = event.arguments[0]
     logger.info("invited to channel %s" % channel)
     self.send(channel, u"I'm been invited here.")
Exemplo n.º 4
0
    def on_whoisuser(self, connection, raw_msg):
        # workaround here:
        # /whois me triggers on_me_joined call because when first time on self.on_join (== when bot joins channel) users-list is not updated yet
        if raw_msg.arguments[0] == connection.get_nickname():
            self.call_plugins_methods(connection, raw_msg, 'on_me_joined')

        self.call_plugins_methods(connection, raw_msg, 'on_whoisuser')
Exemplo n.º 5
0
 def on_welcome(self, connection, raw_msg):
     """ called by super() when connected to server """
     self.call_plugins_methods(connection, raw_msg, 'on_welcome')
     self.logger.info('connected to %s:%d using nickname %s' %
                      (self.server, self.port, connection.get_nickname()))
     self.login(connection)
     self.join_channel(connection)
Exemplo n.º 6
0
 def on_part(self, connection, event):
     """Parted from a channel"""
     nick = event.source.nick
     if nick != connection.get_nickname():
         return
     channel = event.target
     logger.info("parted from channel %s" % channel)
     self._chans.leave(channel)
Exemplo n.º 7
0
 def on_join(self, connection, event):
     """Say hello to other people in the channel. """
     connection.privmsg(
         self.__config.CHANNEL,
         "Hi, I'm " + Colours('3', str(connection.get_nickname())).get() +
         " your bot. Send " + Colours(self.num_col, "!help").get() +
         " to get a list of commands.")
     self.__on_connect_cb()
Exemplo n.º 8
0
 def on_join(self, connection, event):
     """Join a new channel, say what we need"""
     # Check message is for me
     nick = event.source.nick
     if nick != connection.get_nickname():
         return
     channel = event.target
     logger.info(u"Joined channel %s" % channel)
     self._chans[channel].mark_joined()
Exemplo n.º 9
0
    def on_pubmsg(self, connection: ServerConnection, event: Event):
        if not isinstance(event.source, irc.client.NickMask):
            return

        if not irc.client.is_channel(event.target):
            return

        self._update_nick_hostmask(event)

        nick = self._lowercase(event.source.nick)
        text = event.arguments[0]
        channel = self._lowercase(event.target)
        hostmask = self.lower_hostmask(event.source)

        def reply(message: str):
            connection.privmsg(channel, '{}: {}'.format(nick, message))

        command = None
        match = re.match(
            r'{}[:,]\s(\S+)'.format(re.escape(connection.get_nickname())),
            text)

        if match:
            command = match.group(1)

        if command == 'op':
            if not self.check_is_admin(hostmask):
                reply('Unauthorized.')
                return

            if not self.channels[channel].is_oper(connection.get_nickname()):
                reply("I don't have ops.")
                return

            _logger.info('Op %s %s', channel, nick)
            connection.mode(channel, '+o {}'.format(nick))

        elif command == "revokeall":
            if self.channels[channel].is_oper(connection.get_nickname()):
                _logger.info('Revoke all %s %s', channel, nick)
                self._priv_tracker.revoke_all(channel.lower())
                reply('OK.')
            else:
                reply('Unauthorized.')
Exemplo n.º 10
0
 def on_join(self, connection, event):
     """Join a new channel, say what we need"""
     # Check message is for me
     nick = event.source.nick
     if nick == connection.get_nickname():
         channel = event.target
         logger.info(u"Joined channel %s" % channel)
         self._chans[channel].mark_joined()
     """Run hooks on public messages"""
     self._hooks.join(self, connection, event)
Exemplo n.º 11
0
 def on_nicknameinuse(self, connection, event):
     """Changes the nickname if necessary"""
     print("Nick in use")
     if not self.__config.NICKSERV_PASSWORD:
         connection.nick(connection.get_nickname() + "_")
     else:
         print("Ghosting nick")
         #connection.nick(self.__config.NICK)
         msg = "GHOST {} {}".format(self.__config.NICK,
                                    self.__config.NICKSERV_PASSWORD)
         connection.privmsg("NICKSERV", msg)
Exemplo n.º 12
0
 def on_kick(self, connection, event):
     """Kicked from a channel"""
     if len(event.arguments) < 1:
         return
     nick = event.arguments[0]
     if nick != connection.get_nickname():
         return
     channel = event.target
     kicker = event.source
     logger.info(u"kicked from channel %s by %s" % (channel, kicker))
     self.connection.notice(kicker,
                            u"That was mean, I'm just a bot you know")
     self._chans.leave(channel)
Exemplo n.º 13
0
    def on_kick(self, connection, raw_msg):
        self.call_plugins_methods(connection, raw_msg, 'on_kick')
        if raw_msg.arguments[0] != connection.get_nickname(): return

        self.logger.warning('kicked by %s' % raw_msg.source.nick)

        i = None
        while i != 'Y' and i != 'y' and i != 'N' and i != 'n':
            print('rejoin to %s? [Y/n]' % self.channel, end=' ')
            i = input()

        if i == 'Y' or i == 'y':
            self.join_channel(connection)
        else:
            self.die()
Exemplo n.º 14
0
    def on_kick(self, connection: ServerConnection, event: Event):
        channel = self._lowercase(event.target)
        nick = self._lowercase(event.arguments[0])

        _logger.debug('kicked %s from %s', nick, channel)

        ignore_kick = self._config.getboolean("privileges",
                                              "ignore_kick",
                                              fallback=False)

        if not ignore_kick:
            self._admin_auth.remove(nick)
            self._priv_tracker.revoke(channel, nick)
            self._hostmask_map.remove(nick)

        if nick == self._lowercase(connection.get_nickname()):
            self._channel_tracker.remove(channel)
Exemplo n.º 15
0
 def on_nicknameinuse(self, connection, event):
     """Changes the nickname if necessary"""
     connection.nick(connection.get_nickname() + "_")
Exemplo n.º 16
0
 def on_nicknameinuse(self, connection, event):
     """Changes the nickname if necessary"""
     connection.nick(connection.get_nickname() + "_")