1
0
Fork 0
mirror of https://github.com/EDeev/chatping_abobot.git synced 2026-10-07 20:49:45 +03:00

Статистика «за месяц» обнуляется в начале месяца

Раньше месячные счётчики нигде не сбрасывались — ни в коде, ни на сервере — и копились с
момента создания таблиц. При первом запуске месяц только запоминается (в таблице meta),
обнуление — со следующей смены месяца.
This commit is contained in:
Деев Егор Викторович 2026-10-06 01:10:52 +00:00
parent e00b035265
commit e4786d8b68

View file

@ -1,14 +1,43 @@
import asyncio import asyncio
import logging import logging
from datetime import date
from init import bot, dp from init import bot, dp, db, dm
from handlers import router from handlers import router
def reset_month_if_needed(today=None):
"""Статистика «за месяц» раньше нигде не обнулялась и копилась с момента создания таблиц.
При первом запуске месяц только запоминается — обнуление со следующей смены месяца"""
key = (today or date.today()).strftime("%Y-%m")
saved = db.get_meta("month")
if saved == key:
return False
if saved is not None:
db.reset_month()
dm.reset_all()
logging.info("Месячная статистика обнулена: %s → %s", saved, key)
db.set_meta("month", key)
return saved is not None
async def month_watcher():
while True:
try:
reset_month_if_needed()
except Exception:
logging.exception("Не удалось обнулить месячную статистику")
await asyncio.sleep(600)
async def main() -> None: async def main() -> None:
dp.include_router(router) dp.include_router(router)
await bot.delete_webhook(drop_pending_updates=True) await bot.delete_webhook(drop_pending_updates=True)
await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types(), skip_updates=True) watcher = asyncio.create_task(month_watcher())
try:
await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types())
finally:
watcher.cancel()
if __name__ == '__main__': if __name__ == '__main__':