aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IRCBot.py1
-rw-r--r--modules/words.py20
-rwxr-xr-xstart.py2
3 files changed, 20 insertions, 3 deletions
diff --git a/IRCBot.py b/IRCBot.py
index a76175cf..9d211035 100644
--- a/IRCBot.py
+++ b/IRCBot.py
@@ -19,6 +19,7 @@ class Bot(object):
nickname, username, realname, connect=False):
new_server = IRCServer.Server(id, hostname, port, password,
ipv4, tls, nickname, username, realname, self)
+ self.events.on("new").on("server").call(server=new_server)
self.servers[new_server.fileno()] = new_server
if connect:
self.connect(new_server)
diff --git a/modules/words.py b/modules/words.py
index c0c8169b..42c0b19a 100644
--- a/modules/words.py
+++ b/modules/words.py
@@ -3,19 +3,35 @@
class Module(object):
def __init__(self, bot):
self.bot = bot
+ bot.events.on("new").on("server").hook(self.new_server)
bot.events.on("received").on("message").on("channel"
).hook(self.channel_message)
bot.events.on("received").on("command").on("words"
).hook(self.words, channel_only=True)
+ def new_server(self, event):
+ event["server"].tracked_words = set([])
+ settings = event["server"].find_settings("word-%")
+ for word, _ in settings:
+ word = word.split("word-", 1)[1]
+ event["server"].tracked_words.add(word)
+
def channel_message(self, event):
- word_count = len(list(filter(None, event["message_split"
- ])))
+ words = list(filter(None, event["message_split"]))
+ word_count = len(words)
words = event["user"].get_setting("words", {})
if not event["channel"].name in words:
words[event["channel"].name] = 0
words[event["channel"].name] += word_count
event["user"].set_setting("words", words)
+ for word in words:
+ if word.lower() in event["server"].tracked_words:
+ setting = "word-%s" % word
+ tracked_word = event["server"].get_setting(setting, {})
+ if not event["user"].name in tracked_word:
+ tracked_word[event["user"].name] = 0
+ tracked_word[event["user"].name] += 1
+ event["server"].set_setting(setting, tracked_word)
def words(self, event):
if event["args_split"]:
diff --git a/start.py b/start.py
index eea23d2d..748a5089 100755
--- a/start.py
+++ b/start.py
@@ -20,12 +20,12 @@ database = Database.Database(bot, args.database)
config_object = Config.Config(bot, args.config)
bot.database = database
bot.config_object = config_object
+bot.modules.load_modules()
servers = database.get_servers()
for server in servers:
bot.add_server(*server)
if len(bot.servers):
- bot.modules.load_modules()
bot.events.on("boot").on("done").call()
time.sleep(5)
bot.connect_all()