2018-09-13 19:37:32 +00:00
|
|
|
import re
|
|
|
|
import operator
|
|
|
|
|
|
|
|
def hmm(self, name, source, response):
|
|
|
|
botnick = self.bot.botnick
|
|
|
|
pattern = re.compile("hm+")
|
|
|
|
matches = re.findall(pattern, response)
|
|
|
|
score = len(matches)
|
|
|
|
|
|
|
|
if name not in self.bot.memories["users"]:
|
|
|
|
self.bot.memories["users"][name] = dict()
|
|
|
|
|
|
|
|
if "hmmscore" not in self.bot.memories["users"][name]:
|
|
|
|
self.bot.memories["users"][name]["hmmscore"] = 0
|
|
|
|
|
|
|
|
current_score = self.bot.memories["users"][name]["hmmscore"]
|
|
|
|
self.bot.memories["users"][name]["hmmscore"] = current_score + score
|
|
|
|
|
|
|
|
self.bot.save_memories()
|
|
|
|
|
|
|
|
def hmmscore(self, name, source, response):
|
|
|
|
botnick = self.bot.botnick
|
|
|
|
score = 0
|
|
|
|
score_format = "Hmm score for '{}': {}"
|
|
|
|
|
|
|
|
if " " in response:
|
2018-09-16 04:35:30 +00:00
|
|
|
name = response.split(" ", 1)[1].strip()
|
2018-09-13 19:37:32 +00:00
|
|
|
|
|
|
|
if name not in self.bot.memories["users"]:
|
|
|
|
self.bot.send_message(source, score_format.format(name, score))
|
|
|
|
return
|
|
|
|
|
|
|
|
if "hmmscore" in self.bot.memories["users"][name]:
|
|
|
|
score = self.bot.memories["users"][name]["hmmscore"]
|
|
|
|
self.bot.send_message(source, score_format.format(name, score))
|
|
|
|
return
|
|
|
|
|
|
|
|
def hmmscoreboard(self, name, source, response):
|
|
|
|
botnick = self.bot.botnick
|
|
|
|
hmmscores = list()
|
|
|
|
|
|
|
|
for user, values in self.bot.memories["users"].items():
|
|
|
|
hmmscores.append({
|
|
|
|
"name": user,
|
|
|
|
"score": values.get("hmmscore", 0)
|
|
|
|
})
|
|
|
|
|
|
|
|
size = 3
|
|
|
|
start = -size
|
|
|
|
|
|
|
|
sort_scores = sorted(hmmscores, key=lambda k: k["score"])
|
|
|
|
top_scores = sort_scores[start:][::-1]
|
|
|
|
|
|
|
|
leaders = " | ".join([
|
|
|
|
"{} {}".format(ts["name"], ts["score"]) for ts in top_scores
|
|
|
|
])
|
|
|
|
|
|
|
|
self.bot.send_message(source, "Hmm Score Leaderboard: {}".format(leaders))
|