diff --git a/games/economy.py b/games/economy.py index 9b3b7e3..4eca0e5 100644 --- a/games/economy.py +++ b/games/economy.py @@ -546,28 +546,27 @@ class EconomyManager: # Баланс cursor.execute('SELECT balance FROM user_balances WHERE user_id = ?', (user_id,)) - balance = cursor.fetchone()[0] if cursor.fetchone() else 0.0 - + row = cursor.fetchone() + balance = row[0] if row else 0.0 + # Активные вклады cursor.execute('SELECT COUNT(*), SUM(amount) FROM deposits WHERE user_id = ? AND is_active = 1', (user_id,)) deposits = cursor.fetchone() - + # Активные кредиты cursor.execute('SELECT COUNT(*), SUM(amount) FROM loans WHERE user_id = ? AND is_repaid = 0', (user_id,)) loans = cursor.fetchone() - - conn.close() - + # Получаем статистику сообщений за сегодня today = datetime.now().strftime('%Y-%m-%d') cursor.execute('SELECT message_count FROM daily_activity WHERE user_id = ? AND activity_date = ?', (user_id, today)) today_messages = cursor.fetchone() - + # Получаем статистику сообщений за вчера yesterday = (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d') cursor.execute('SELECT message_count FROM daily_activity WHERE user_id = ? AND activity_date = ?', (user_id, yesterday)) yesterday_messages = cursor.fetchone() - + conn.close() return { diff --git a/main.py b/main.py index 9af8ad7..667e3b3 100644 --- a/main.py +++ b/main.py @@ -1446,6 +1446,7 @@ async def handle_central_bank_cmd(message: Message): /cb_stats - краткая статистика /cb_rules - правила работы ЦБ """ + await message.answer(text, parse_mode=None) async def handle_cb_stats_cmd(message: Message): """Статистика ЦБ для всех пользователей""" @@ -1782,37 +1783,6 @@ def main(): # Запуск фоновых задач экономики asyncio.create_task(economy_background_tasks()) -async def economy_background_tasks(): - """Фоновые задачи для экономики""" - while True: - try: - # Проверяем текущее время по МСК - from datetime import datetime - from zoneinfo import ZoneInfo - - moscow_time = datetime.now(ZoneInfo("Europe/Moscow")) - current_hour = moscow_time.hour - current_minute = moscow_time.minute - - # Ежедневный сбор налогов (каждый час проверяем) - await asyncio.to_thread(economy.collect_daily_taxes) - - # Регулирование инфляции (раз в день) - await asyncio.to_thread(economy.regulate_inflation) - - # Выплаты за активность в 00:00 по МСК - if current_hour == 0 and current_minute == 0: - users_paid = await asyncio.to_thread(economy.pay_daily_activity_rewards) - if users_paid > 0: - logger.info(f"Activity rewards paid to {users_paid} users at 00:00 MSK") - - logger.info(f"Economy background tasks completed at {moscow_time.strftime('%H:%M:%S MSK')}") - except Exception as e: - logger.exception(f"Economy background task failed: {e}") - - # Ждём 1 минуту до следующей проверки (для точности в 00:00) - await asyncio.sleep(60) - dp.startup.register(on_startup) async def start_settle(bot: Bot): @@ -1822,5 +1792,28 @@ async def economy_background_tasks(): logger.info("Бот запущен...") asyncio.run(dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types())) + +async def economy_background_tasks(): + """Фоновые задачи для экономики""" + while True: + try: + moscow_time = datetime.now(ZoneInfo("Europe/Moscow")) + current_hour = moscow_time.hour + current_minute = moscow_time.minute + + await asyncio.to_thread(economy.collect_daily_taxes) + await asyncio.to_thread(economy.regulate_inflation) + + if current_hour == 0 and current_minute == 0: + users_paid = await asyncio.to_thread(economy.pay_daily_activity_rewards) + if users_paid > 0: + logger.info(f"Activity rewards paid to {users_paid} users at 00:00 MSK") + + logger.info(f"Economy background tasks completed at {moscow_time.strftime('%H:%M:%S MSK')}") + except Exception as e: + logger.exception(f"Economy background task failed: {e}") + + await asyncio.sleep(60) + if __name__ == "__main__": main()