def wordiest(self, event): """ :help: Show wordiest users :usage: [channel] """ channel_query = None word_prefix = "" if event["args_split"]: channel_query = event["args_split"][0].lower() word_prefix = " (%s)" % channel_query words = event["server"].find_all_user_channel_settings("words") user_words = {} for channel_name, nickname, word_count in words: if not channel_query or channel_name == channel_query: 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: utils.prevent_highlight(event[ "server"].get_user(nickname).nickname)) event["stdout"].write("wordiest%s: %s" % (word_prefix, ", ".join(top_10)))
def richest(self, event): """ :help: Show the top 10 richest users """ top_10 = utils.top_10(self._all_coins(event["server"]), convert_key=lambda nickname: utils.prevent_highlight( event["server"].get_user(nickname).nickname), value_format=lambda value: self._coin_str_human(value)) event["stdout"].write("Richest users: %s" % ", ".join(top_10))
def _prevent_highlight(self, channel, s): for user in channel.users: while user.nickname.lower() in s.lower(): index = s.lower().index(user.nickname.lower()) length = len(user.nickname.lower()) original = s[index:index + length] original = utils.prevent_highlight(original) s = s[:index] + original + s[index + length:] return s
def _prevent_highlight(self, channel, s): for user in channel.users: while user.nickname.lower() in s.lower(): index = s.lower().index(user.nickname.lower()) length = len(user.nickname.lower()) original = s[index:index+length] original = utils.prevent_highlight(original) s = s[:index] + original + s[index+length:] return s
def richest(self, event): """ :help: Show the top 10 richest users """ all_coins = event["server"].get_all_user_settings("coins", []) all_coins = list( filter(lambda coin: decimal.Decimal(coin[1]), all_coins)) items = [(coin[0], decimal.Decimal(coin[1])) for coin in all_coins] all_coins = dict(items) top_10 = utils.top_10( all_coins, convert_key=lambda nickname: utils.prevent_highlight(event[ "server"].get_user(nickname).nickname), value_format=lambda value: "{0:.2f}".format(value)) event["stdout"].write("Richest users: %s" % ", ".join(top_10))
def word_users(self, event): """ :help: Show who has used a tracked word the most :usage: <word> """ word = event["args_split"][0].lower() if word in event["server"].get_setting("tracked-words", []): word_users = event["server"].get_all_user_settings( "word-%s" % word, []) items = [(word_user[0], word_user[1]) for word_user in word_users] word_users = dict(items) top_10 = utils.top_10(word_users, convert_key=lambda nickname: utils.prevent_highlight( event["server"].get_user(nickname).nickname)) event["stdout"].write("Top '%s' users: %s" % (word, ", ".join(top_10))) else: event["stderr"].write("That word is not being tracked")
def duck_friends(self, event): """ :help: Show the top duck friends """ friends = event["server"].find_all_user_channel_settings( "ducks-befriended") friendliest = {} friend_nicks = [] friend_ducks = [] for i in friends: if i[1] in friendliest.keys(): friendliest[i[1]] += i[2] else: friendliest[i[1]] = i[2] for user, friends in sorted(friendliest.items(), key=itemgetter(1), reverse=True): friend_nicks.append(user) friend_ducks.append(friends) sentence = utils.irc.bold("Duck Friends: ") length = len(friend_nicks) if len(friend_nicks) < 8 else 8 build = [] for i in range(0, length): nick = utils.prevent_highlight(friend_nicks[i]) build.append("%s (%s)" \ % (utils.irc.bold(nick), friend_ducks[i]) ) sentence += ", ".join(build) event["stdout"].write(sentence) event.eat()
def duck_enemies(self, event): """ :help: Show the top duck shooters """ the_enemy = event["server"].find_all_user_channel_settings( "ducks-shot") notorious = {} enemy_nicks = [] enemy_ducks = [] for i in the_enemy: if i[1] in notorious.keys(): notorious[i[1]] += i[2] else: notorious[i[1]] = i[2] for user, enemies in sorted(notorious.items(), key=itemgetter(1), reverse=True): enemy_nicks.append(user) enemy_ducks.append(enemies) sentence = utils.irc.bold("Duck Wranglers: ") build = [] length = len(enemy_nicks) if len(enemy_nicks) < 8 else 8 for i in range(0, length): nick = utils.prevent_highlight(enemy_nicks[i]) build.append("%s (%s)" \ % (utils.irc.bold(nick), enemy_ducks[i])) sentence += ", ".join(build) event["stdout"].write(sentence) event.eat()
def _get_nickname(self, server, target, nickname): nickname = server.get_user(nickname).nickname if target.get_setting("wordiest-prevent-highlight", True): nickname = utils.prevent_highlight(nickname) return nickname