From 9b66edeb62f4a7014db816c1539b51aa49662048 Mon Sep 17 00:00:00 2001 From: Sweetbread Date: Thu, 11 May 2023 17:57:08 +0300 Subject: [PATCH] [refactor]: Clear code --- cogs/economic.py | 77 ++++++++++++++++++++---------------------------- 1 file changed, 32 insertions(+), 45 deletions(-) diff --git a/cogs/economic.py b/cogs/economic.py index bf4fc7f..7b37d6f 100644 --- a/cogs/economic.py +++ b/cogs/economic.py @@ -67,60 +67,47 @@ class Economic(commands.Cog, name="Экономика"): ) if message.author.voice is not None: - delta_exp = int(delta_exp / 10) + delta_exp //= 10 delta_money = rint(1, 5) # Глобальные опыт/уроень db.members.update_one({"id": message.author.id}, - {"$set": {"exp": data["exp"] + delta_exp}}) # Изменяем exp + {"$inc": {"exp": delta_exp}}) # Изменяем exp data = db.members.find_one({"id": message.author.id}) if data is not None: level = data["level"] if level ** 2 * 50 + 5 <= data["exp"]: db.members.update_one({"id": message.author.id}, - {"$set": {"level": data["level"] + 1}}) # Изменяем level + {"$inc": {"level": 1}}) # Изменяем level if data["level"]+1 >= data["max_level"]: db.members.update_one({"id": message.author.id}, - {"$set": { - "money": data["money"] + (level + 1) * delta_money}}) # Изменяем money - db.members.update_one({"id": message.author.id}, - {"$set": {"max_level": data["level"] + 1}}) # Изменяем level + {"$inc": {"money": (level + 1) * delta_money}}) # Изменяем money # Локальные опыт/уровень prefix = f"guild_stat.{message.guild.id}" if str(message.guild.id) not in db.members.find_one({"id": message.author.id})["guild_stat"].keys(): db.members.update_many({"id": message.author.id}, - { - "$set": { - f"{prefix}.exp": 0, - f"{prefix}.level": 0, - f"{prefix}.secs_in_voice": 0, - f"{prefix}.history": { - "hour": {}, - "day": {}, - "siv_h": {}, - "siv_d": {} - } - } - }) # Создаем в guild_stat поле для сервера + {"$set": { + f"{prefix}.exp": 0, + f"{prefix}.level": 0, + f"{prefix}.secs_in_voice": 0, + f"{prefix}.history": { + "hour": {}, + "day": {}, + "siv_h": {}, + "siv_d": {} + } + }}) # Создаем в guild_stat поле для сервера data = db.members.find_one({"id": message.author.id})["guild_stat"][str(message.guild.id)] db.members.update_one({"id": message.author.id}, - { - "$set": { - f"{prefix}.exp": data['exp'] + delta_exp - } - }) + {"$inc": {f"{prefix}.exp": delta_exp}}) data = db.members.find_one({"id": message.author.id})["guild_stat"][str(message.guild.id)] level = data["level"] if level ** 2 * 50 + 5 <= data["exp"]: db.members.update_one({"id": message.author.id}, - { - "$set": { - f"{prefix}.level": data['level'] + 1 - } - }) + {"$inc": {f"{prefix}.level": 1}}) data = db.guild_settings.find_one({"id": message.guild.id}) if data is not None and data['levelup'] == "send": await message.reply( @@ -160,15 +147,14 @@ class Economic(commands.Cog, name="Экономика"): # При выходе if after.channel is None: - #logger.info(f"{member.name}#{member.discriminator} вышел. В канале осталось {len(list(filter(lambda x: not x.bot, before.channel.members)))} человек") try: del self.bot.voice_counter[str(member.id)] - except: pass #logger.info(f"У {member.name}#{member.discriminator} не было информации о времени захода в канал") + except: pass def voice_register(self, member, voice_state): - try: secs = (datetime.now() - self.bot.voice_counter[str(member.id)]).seconds - except: - #logger.info(f"У {member.name}#{member.discriminator} не было информации о времени захода в канал") + if member.id in self.bot.voice_counter.keys(): + secs = (datetime.now() - self.bot.voice_counter[member.id]).seconds + else: secs = 0 # TODO: Убрать нахуй эти ифы @@ -184,11 +170,12 @@ class Economic(commands.Cog, name="Экономика"): k *= 2 exp = int(secs // 5 * k) money = exp * rint(1, 5) - db.members.update_one({"id": member.id}, {"$inc": { - f"guild_stat.{member.guild.id}.secs_in_voice": secs, - f"guild_stat.{member.guild.id}.exp": exp, - "exp": exp, - "money": money + db.members.update_one({"id": member.id}, { + "$inc": { + f"guild_stat.{member.guild.id}.secs_in_voice": secs, + f"guild_stat.{member.guild.id}.exp": exp, + "exp": exp, + "money": money }}) db.history.update_one( @@ -196,7 +183,7 @@ class Economic(commands.Cog, name="Экономика"): {"$inc": {f'current.{datetime.now().hour}': exp}} ) - self.bot.voice_counter[str(member.id)] = datetime.now() + self.bot.voice_counter[member.id] = datetime.now() logger.info( f"{member.name}#{member.discriminator}\n" @@ -218,7 +205,7 @@ class Economic(commands.Cog, name="Экономика"): logger.debug(member_data["guild_stat"][str(member.guild.id)]["exp"], end="\t") db.members.update_one( {"id": member.id}, - {"$set": { "exp": member_data["exp"] + member_data["guild_stat"][str(member.guild.id)]["exp"] }} + {"$inc": {"exp": member_data["guild_stat"][str(member.guild.id)]["exp"]}} ) @commands.Cog.listener() @@ -232,7 +219,7 @@ class Economic(commands.Cog, name="Экономика"): logger.debug(member_data["guild_stat"][str(member.guild.id)]["exp"], end="\t") db.members.update_one( {"id": member.id}, - {"$set": { "exp": member_data["exp"] - member_data["guild_stat"][str(member.guild.id)]["exp"] } + {"$dec": {"exp": member_data["guild_stat"][str(member.guild.id)]["exp"]} }) @commands.Cog.listener() @@ -241,7 +228,7 @@ class Economic(commands.Cog, name="Экономика"): logger.debug(m["guild_stat"][str(guild.id)]["exp"], end="\t") db.members.update_one( {"id": m['id']}, - {"$set": { "exp": m["exp"] + m["guild_stat"][str(guild.id)]["exp"] } + {"$inc": {"exp": m["guild_stat"][str(guild.id)]["exp"]} }) logger.debug(m["guild_stat"][str(guild.id)]["exp"]) @@ -251,7 +238,7 @@ class Economic(commands.Cog, name="Экономика"): logger.debug(m["guild_stat"][str(guild.id)]["exp"], end="\t") db.members.update_one( {"id": m['id']}, - {"$set": {"exp": m["exp"] - m["guild_stat"][str(guild.id)]["exp"]} + {"$dec": {"exp": m["guild_stat"][str(guild.id)]["exp"]} }) logger.debug(m["guild_stat"][str(guild.id)]["exp"])