Ejemplo n.º 1
0
def recommend(fro, chan, message):
    user_id = userUtils.getID(fro)
    user = userUtils.getUserStats(user_id, 0)

    params = {
        'pp': user['pp'],
        'token': glob.conf.config["kotrik"]["pprapi"]
    }
    mega_pp_recommendation = requests.get("https://api.kotrik.ru/api/recommendMap", params=params)
    result = None
    try:
        result = json.loads(mega_pp_recommendation.text)
    except:
        return "I can't recommend you, because api is broken("

    mods = generalUtils.readableMods(result['m'])
    if mods == "":
        mods = "nomod"

    formatResult = "[http://osu.ppy.sh/b/{bid} {art} - {name} [{diff}]] Stars: {stars} | BPM: {bpm} | Length: {length} | PP: {pps} {mods}".format(
        bid=result['b'],
        art=result['art'],
        name=result['t'],
        diff=result['v'],
        stars=result['d'],
        bpm=result['bpm'],
        length=kotrikhelper.secondsToFormatted(result['l']),
        pps=result['pp99'],
        mods=f"+{mods}"
    )

    return formatResult
Ejemplo n.º 2
0
    def updateCachedStats(self):
        """
		Update all cached stats for this token

		:return:
		"""
        stats = userUtils.getUserStats(self.userID, self.gameMode)
        stats_relax = userUtils.getUserStatsRx(self.userID, self.gameMode)
        log.debug(str(stats))

        if stats is None:
            log.warning("Stats query returned None")
            return
        if self.relaxing:
            self.gameRank = stats_relax["gameRank"]
            self.pp = stats_relax["pp"]
            self.rankedScore = stats_relax["rankedScore"]
            self.accuracy = stats_relax["accuracy"] / 100
            self.playcount = stats_relax["playcount"]
            self.totalScore = stats_relax["totalScore"]
        else:
            self.gameRank = stats["gameRank"]
            self.pp = stats["pp"]
            self.rankedScore = stats["rankedScore"]
            self.accuracy = stats["accuracy"] / 100
            self.playcount = stats["playcount"]
            self.totalScore = stats["totalScore"]
Ejemplo n.º 3
0
def user_stats(fro, chan, message):
    args = [m.lower() for m in message]
    nickname = None
    mode = 0
    if len(args) < 1:
        nickname = fro
    else:
        nickname = args[0].lower()

    if len(args) > 1 and args[1].isdigit():
        mode = int(args[1])

    if mode > 3:
        return "mode is incorrect"

    user_id = userUtils.getID(nickname)
    if not user_id:
        return "User not found!"

    mode_str = gameModes.getGameModeForDB(mode)
    user = userUtils.getUserStats(user_id, mode)

    acc = "{0:.2f}%".format(user['accuracy'])
    return (
        f"User: {nickname}\n"
        f"ID: {user_id}\n"
        "---------------------\n"
        f"Stats for {mode_str} #{user['gameRank']}\n"
        f"Ranked score: {humanize(user['rankedScore'])}\n"
        f"Accuracy: {acc}\n"
        f"Play count: {humanize(user['playcount'])}\n"
        f"Total score: {humanize(user['totalScore'])}\n"
        f"PP count: {humanize(user['pp'])}"
    )
Ejemplo n.º 4
0
	def updateCachedStats(self):
		"""
		Update all cached stats for this token

		:return:
		"""
		
		if self.relaxing:
			stats_relax = userUtils.getUserStatsRx(self.userID, self.gameMode)
			
			self.gameRank = stats_relax["gameRank"]
			self.pp = stats_relax["pp"]
			self.rankedScore = stats_relax["rankedScore"]
			self.accuracy = stats_relax["accuracy"]/100
			self.playcount = stats_relax["playcount"]
			self.totalScore = stats_relax["totalScore"]

		elif self.autopiloting:
			stats_ap = userUtils.getUserStatsAP(self.userID, self.gameMode)

			self.gameRank = stats_ap["gameRank"]
			self.pp = stats_ap["pp"]
			self.rankedScore = stats_ap["rankedScore"]
			self.accuracy = stats_ap["accuracy"]/100
			self.playcount = stats_ap["playcount"]
			self.totalScore = stats_ap["totalScore"]
		else:
			stats = userUtils.getUserStats(self.userID, self.gameMode)

			self.gameRank = stats["gameRank"]
			self.pp = stats["pp"]
			self.rankedScore = stats["rankedScore"]
			self.accuracy = stats["accuracy"]/100
			self.playcount = stats["playcount"]
			self.totalScore = stats["totalScore"]
Ejemplo n.º 5
0
    def updateCachedStats(self):
        """
		Update all cached stats for this token

		:return:
		"""
        stats = [
            userUtils.getUserStats(self.userID, self.gameMode),
            userUtils.getUserStatsRelax(self.userID, self.gameMode)
        ]
        if features.RANKING_SCOREV2:
            stats.append(userUtils.getUserStatsAlt(self.userID, self.gameMode))

        if stats is None:
            log.warning("Stats query returned None")
            return

        if self.specialMode in range(len(stats)):
            stats = stats[self.specialMode]
        else:
            stats = stats[0]

        self.gameRank = stats["gameRank"]
        self.pp = stats["pp"]
        self.rankedScore = stats["rankedScore"]
        self.accuracy = stats["accuracy"] / 100.0
        self.playcount = stats["playcount"]
        self.totalScore = stats["totalScore"]
Ejemplo n.º 6
0
    def update(self, userID, gameMode, data=None):
        """
		Update cached user stats in redis with new values

		:param userID: userID
		:param gameMode: game mode number
		:param data: data to cache. Optional. If not passed, will get from db
		:return:
		"""
        if data is None:
            data = {}
        if len(data) == 0:
            data = userUtils.getUserStats(userID, gameMode)
        log.debug("userStatsCache set {}".format(data))
        glob.redis.set("lets:user_stats_cache:{}:{}".format(gameMode, userID),
                       json.dumps(data), 1800)
Ejemplo n.º 7
0
    def updateCachedStats(self):
        """
		Update all cached stats for this token

		:return:
		"""
        stats = userUtils.getUserStats(self.userID, self.gameMode)
        stats_relax = userUtils.getUserStatsRx(self.userID, self.gameMode)
        stats_relax2 = userUtils.getUserStatsRx2(self.userID, self.gameMode)
        log.debug(str(stats))

        if self.userID == 1001:
            self.irc = False
            self.country = 111
            self.actionID = actions.WATCHING
            self.actionText = "the chat"
        if stats is None:
            log.warning("Stats query returned None")
            return
        if self.relaxing:
            self.gameRank = stats_relax["gameRank"]
            self.pp = stats_relax["pp"]
            self.rankedScore = stats_relax["rankedScore"]
            self.accuracy = stats_relax["accuracy"] / 100
            self.playcount = stats_relax["playcount"]
            self.totalScore = stats_relax["totalScore"]
        elif self.relaxing2:
            self.gameRank = stats_relax2["gameRank"]
            self.pp = stats_relax2["pp"]
            self.rankedScore = stats_relax2["rankedScore"]
            self.accuracy = stats_relax2["accuracy"] / 100
            self.playcount = stats_relax2["playcount"]
            self.totalScore = stats_relax2["totalScore"]
        else:
            self.gameRank = stats["gameRank"]
            self.pp = stats["pp"]
            self.rankedScore = stats["rankedScore"]
            self.accuracy = stats["accuracy"] / 100
            self.playcount = stats["playcount"]
            self.totalScore = stats["totalScore"]