Exemple #1
0
    def __init__(self):
        logging.info('Bot __init__')
        self.last_msg = -1
        self.msg_flood_limit = 0.25

        with open(os.path.join(os.path.dirname(__file__), 'ircbot.conf')) as f:
            data = json.load(f)
            self.servers = data['servers']

        self.select_server(0)

        self.db = sqlite3.connect(os.path.join(os.path.dirname(__file__),
                                               'ircbot.sqlite3'),
                                  check_same_thread=False)
        cursor = self.db.cursor()
        try:
            cursor.execute('select * from config limit 1')
        except sqlite3.OperationalError:  # table no exist
            cursor.execute(
                'create table config ( `group` varchar(100), `key` varchar(100), `value` varchar(100) NULL )'
            )
        cursor.close()
        modules_blacklist = data.get('blacklist', None)
        self.modules = ModuleManager(self, modules_blacklist)

        self.channel_ops = {}

        server = self.current_server['host']
        port = self.current_server[
            'port'] if 'port' in self.current_server else 6667
        ssl_enabled = self.current_server[
            'ssl'] if 'ssl' in self.current_server else False
        ipv6_enabled = self.current_server[
            'ipv6'] if 'ipv6' in self.current_server else False
        password = self.current_server[
            'password'] if 'password' in self.current_server else ''
        nickname = self.current_server['nickname']

        factory = irc.connection.Factory(
            wrapper=ssl.wrap_socket if ssl_enabled else lambda x: x,
            ipv6=ipv6_enabled)

        super(Bot, self).__init__([irc.bot.ServerSpec(server, port, password)],
                                  nickname,
                                  nickname,
                                  connect_factory=factory)

        self.connection.set_rate_limit(30)

        for module_name in self.modules.get_available_modules():
            self.modules.enable_module(module_name)
Exemple #2
0
    def __init__(self, config_file):
        self.config_file = config_file
        self.config = json.load(open(self.config_file))
        self.me = self.config["me"]
        self.net = self.config["network"]
        self.module_manager = ModuleManager(self)
        self.hook_manager = HookManager(self)
        self.perms = Permissions(self)
        self.connection = IRCConnection(self.net["address"], self.net["port"], self.net["ssl"], self.config["proxies"].get(self.net.get("proxy", "none"), None), self.net.get("flood_interval", 0.0))
        self.running = True
        self.state = {}  # Dict used to hold stuff like last line received and last message etc...
        self.db = Database("etc/buhirc.db")
        self.db.connect()
        logging.basicConfig(level=getattr(logging, self.config["misc"]["loglevel"]), format='[%(asctime)s] %(levelname)s: %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')
        self.requests_session = requests.session()
        if self.config["misc"].get("http_proxy", "none") != "none":
            proxy = self.config["proxies"].get(self.config["misc"]["http_proxy"], "none")
            if proxy != "none":
                self.requests_session.proxies = {"http": proxy, "https": proxy}

        self.flood_verbs = [x.lower() for x in self.net.get("flood_verbs", [])]
        self.help = {}