def show_all_vote(message): """Show all voted keywords""" keywords = r.smembers(VOTE_WORDS) counts = r.mget(VOTE_PREFIX.format(keyword) for keyword in keywords) counts = sorted(zip(keywords, map(lambda x: x or 0, counts))) message.send('\n'.join('{} is voted to {}'.format(k, c) for k, c in counts))
def search_content(message, words): """search all related contents.""" hits = [] for key in r.smembers(ALL_KEYWORDS): if Levenshtein.ratio(words, key) > 0.8: hits.append("---- %s ----\n\n%s\n\n\n" % (key, r.get(KEYWORD_PREFIX % key))) if hits: message.reply("".join(hits))
def search_keyword(message, keyword): """search keyword.""" all_keywords = r.smembers(ALL_KEYWORDS) result = [] for word in all_keywords: if keyword in word: result.append(word) if result: message.send(",".join(result)) else: message.send("Not found")
def display_all_keywords(message, keywords): """search keyword and show them all at once.""" all_keywords = r.smembers(ALL_KEYWORDS) result = [] for word in all_keywords: if all(keyword in word for keyword in keywords.split()): result.append(word) if result: texts = zip(result, r.mget(KEYWORD_PREFIX % w for w in result)) message.send("".join("---- %s ----\n\n%s\n\n\n" % seg for seg in texts)) else: message.send("Not found")
def get_everyone(self): for team in r.smembers(ONCALL_SET): self._migrate_if_necessary(team) yield team, self.get_oncall(team)
def all_keywords_with_prefix(message, prefix): """list all keywords starts with <prefix>.""" keys = [k for k in r.smembers(ALL_KEYWORDS) if k.startswith(prefix)] message.send('\n'.join(keys))
def all_keywords(message): """list all keywords.""" message.send(','.join(r.smembers(ALL_KEYWORDS)))