예제 #1
0
    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)))
예제 #2
0
 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))
예제 #3
0
파일: coins.py 프로젝트: jesopo/bitbot
 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))
예제 #4
0
    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
예제 #5
0
파일: __init__.py 프로젝트: jesopo/bitbot
    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
예제 #6
0
파일: coins.py 프로젝트: panicbit/bitbot
    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))
예제 #7
0
파일: words.py 프로젝트: panicbit/bitbot
 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")
예제 #8
0
파일: ducks.py 프로젝트: rmoorman/bitbot
    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()
예제 #9
0
파일: ducks.py 프로젝트: rmoorman/bitbot
    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()
예제 #10
0
 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