Example #1
0
File: coins.py Project: xfnw/bitbot
 def richest(self, event):
     top_10 = utils.top_10(
         self._all_coins(event["server"]),
         convert_key=lambda nickname: event["server"].get_user(nickname
                                                               ).nickname,
         value_format=lambda value: self._coin_str_human(value))
     event["stdout"].write("Richest users: %s" % ", ".join(top_10))
Example #2
0
File: words.py Project: xfnw/bitbot
    def wordiest(self, event):
        date_str = ""

        if event["spec"][0]:
            date1 = utils.datetime.format.date_human(event["spec"][0])
            date2 = utils.datetime.format.date_human(
                event["spec"][1] or utils.datetime.utcnow())

            date_str = f" ({date1} to {date2})"
            words = self._channel_between_dates(event["target"], date1, date2)
        else:
            words = self._channel_all(event["target"])

        user_words = {}
        for user_id, word_count in words:
            _, nickname = self.bot.database.users.by_id(user_id)
            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(
                                  event["server"], event["target"], nickname))
        event["stdout"].write(
            "wordiest in %s%s: %s" %
            (str(event["target"]), date_str, ", ".join(top_10)))
Example #3
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)))
Example #4
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))
Example #5
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))
Example #6
0
 def word_users(self, event):
     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: self._get_nickname(
             event["server"], event["target"], nickname))
         event["stdout"].write("Top '%s' users: %s" % (word,
             ", ".join(top_10)))
     else:
         event["stderr"].write("That word is not being tracked")
Example #7
0
    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))
Example #8
0
 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:
             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")
Example #9
0
    def _duck_stats(self, server, setting, description, channel_query):
        channel_query_str = ""
        if not channel_query == None:
            channel_query = server.irc_lower(channel_query)
            channel_query_str = " in %s" % channel_query

        stats = server.find_all_user_channel_settings(setting)

        user_stats = {}
        for channel, nickname, value in stats:
            if not channel_query or channel_query == channel:
                if not nickname in user_stats:
                    user_stats[nickname] = 0
                user_stats[nickname] += value

        top_10 = utils.top_10(user_stats,
            convert_key=lambda nickname: server.get_user(nickname).nickname)
        return "Top duck %s%s: %s" % (description, channel_query_str,
            ", ".join(top_10))