aboutsummaryrefslogtreecommitdiff
path: root/modules/words.py
diff options
context:
space:
mode:
Diffstat (limited to 'modules/words.py')
-rw-r--r--modules/words.py38
1 files changed, 25 insertions, 13 deletions
diff --git a/modules/words.py b/modules/words.py
index 88dbc6cc..59b9ef92 100644
--- a/modules/words.py
+++ b/modules/words.py
@@ -66,7 +66,7 @@ class Module(ModuleManager.BaseModule):
if event["channel"].get_setting("word-tracking-registered",
event["server"].get_setting("word-tracking-registered", False)):
- if not self.exports.get_one("is-identified")(event["user"]):
+ if not self.exports.get("is-identified")(event["user"]):
return
if user.get_setting("first-words", None) == None:
@@ -105,19 +105,24 @@ class Module(ModuleManager.BaseModule):
self._channel_message(event["server"].get_user(
event["server"].nickname), event)
- @utils.hook("received.command.words", channel_only=True)
+ @utils.hook("received.command.words")
@utils.kwarg("help",
"See how many words you or the given nickname have used")
- @utils.spec("!-channelonly ?<nickname>ouser")
+ @utils.spec("?<nickname>ouser")
def words(self, event):
- target_user = event["spec"][0] or event["user"]
+ if event["spec"][0] and event["is_channel"]:
+ target_user = event["spec"][0]
+ else:
+ target_user = event["user"]
- words = dict(self._user_all(target_user))
- this_channel = words.get(event["target"].id, 0)
+ word_items = self._user_all(target_user)
- total = 0
- for channel_id in words:
- total += words[channel_id]
+ words = {}
+ for channel_id, count in word_items:
+ if not channel_id in words:
+ words[channel_id] = 0
+ words[channel_id] += count
+ total = sum(words.values())
since = ""
first_words = target_user.get_setting("first-words", None)
@@ -125,9 +130,14 @@ class Module(ModuleManager.BaseModule):
since = " since %s" % utils.datetime.format.date_human(
utils.datetime.timestamp(first_words))
- event["stdout"].write("%s has used %d words (%d in %s)%s" % (
- target_user.nickname, total, this_channel, event["target"].name,
- since))
+ if event["is_channel"]:
+ this_channel = words.get(event["target"].id, 0)
+ event["stdout"].write("%s has used %d words (%d in %s)%s" % (
+ target_user.nickname, total, this_channel, event["target"].name,
+ since))
+ else:
+ event["stdout"].write("%s has used %d words%s" % (
+ target_user.nickname, total, since))
@utils.hook("received.command.trackword")
@utils.kwarg("help", "Start tracking a word")
@@ -193,7 +203,9 @@ class Module(ModuleManager.BaseModule):
user_words = {}
for user_id, word_count in words:
_, nickname = self.bot.database.users.by_id(user_id)
- user_words[nickname] = word_count
+ if not nickname in user_words:
+ user_words[nickname] = 0
+ user_words[nickname] += word_count
top_10 = utils.top_10(user_words,
convert_key=lambda nickname: self._get_nickname(