aboutsummaryrefslogtreecommitdiff
path: root/src/IRCBot.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/IRCBot.py')
-rw-r--r--src/IRCBot.py27
1 files changed, 22 insertions, 5 deletions
diff --git a/src/IRCBot.py b/src/IRCBot.py
index 67a85c42..f5407e59 100644
--- a/src/IRCBot.py
+++ b/src/IRCBot.py
@@ -2,7 +2,7 @@ import enum, queue, os, select, socket, threading, time, traceback, typing, uuid
from src import EventManager, Exports, IRCServer, Logging, ModuleManager
from src import Socket, utils
-VERSION = "v1.7.1"
+VERSION = "v1.8.0"
SOURCE = "https://git.io/bitbot"
class TriggerResult(enum.Enum):
@@ -62,8 +62,18 @@ class Bot(object):
def load_modules(self, safe: bool=False
) -> typing.Tuple[typing.List[str], typing.List[str]]:
- whitelist = self.get_setting("module-whitelist", [])
- blacklist = self.get_setting("module-blacklist", [])
+ db_blacklist = set(self.get_setting("module-blacklist", []))
+ db_whitelist = set(self.get_setting("module-whitelist", []))
+
+ conf_blacklist = self.config.get("module-blacklist", "").split(",")
+ conf_whitelist = self.config.get("module-whitelist", "").split(",")
+
+ conf_blacklist = set(filter(None, conf_blacklist))
+ conf_whitelist = set(filter(None, conf_whitelist))
+
+ blacklist = db_blacklist|conf_blacklist
+ whitelist = db_whitelist|conf_whitelist
+
return self.modules.load_modules(self, whitelist=whitelist,
blacklist=blacklist, safe=safe)
@@ -237,7 +247,13 @@ class Bot(object):
for piece in data:
sock.parse_data(piece)
elif event & select.EPOLLOUT:
- sock._send()
+ try:
+ sock._send()
+ except:
+ self.log.error("Failed to write to %s",
+ [str(sock)])
+ raise
+
if sock.fileno() in self.servers:
self.register_read(sock)
elif event & select.EPULLHUP:
@@ -262,7 +278,8 @@ class Bot(object):
self.log.warn(
"Disconnected from %s, reconnecting in %d seconds",
[str(server), reconnect_delay])
- elif (server.socket.waiting_send() and
+ elif server.socket.waiting_immediate_send() or (
+ server.socket.waiting_send() and
server.socket.throttle_done()):
self.register_both(server)