From 647527123433209d1a220e85db581e1efdfdebe4 Mon Sep 17 00:00:00 2001 From: kiriharu Date: Sat, 30 Jan 2021 13:34:08 +0300 Subject: [PATCH] save command logs to database --- apps/tgbot/pyproject.toml | 1 + apps/tgbot/tgbot/bot.py | 4 ++-- apps/tgbot/tgbot/middlewares/write_command_metric.py | 6 ++++++ apps/tgbot/tgbot/models/__init__.py | 2 ++ apps/tgbot/tgbot/models/requests.py | 7 +++++++ apps/tgbot/tgbot/models/user.py | 1 - 6 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 apps/tgbot/tgbot/models/requests.py diff --git a/apps/tgbot/pyproject.toml b/apps/tgbot/pyproject.toml index 43967fb..bec37b6 100644 --- a/apps/tgbot/pyproject.toml +++ b/apps/tgbot/pyproject.toml @@ -14,6 +14,7 @@ aioinflux = "^0.9.0" loguru = "^0.5.3" whois-vu = "^0.3.0" tortoise-orm = "^0.16.20" +aiomysql = "^0.0.21" [tool.poetry.dev-dependencies] diff --git a/apps/tgbot/tgbot/bot.py b/apps/tgbot/tgbot/bot.py index d698dee..04f6ed5 100644 --- a/apps/tgbot/tgbot/bot.py +++ b/apps/tgbot/tgbot/bot.py @@ -20,7 +20,7 @@ async def database_init(): await Tortoise.init( db_url=db_url, modules={ - 'default': ['tgbot.models'] + 'models': ['tgbot.models'] } ) await Tortoise.generate_schemas() @@ -30,9 +30,9 @@ async def database_init(): async def on_startup(disp: Dispatcher): await database_init() handlers.default.setup(disp) + disp.middleware.setup(ThrottlingMiddleware()) disp.middleware.setup(WriteCommandMetric()) disp.middleware.setup(LoggingMiddleware()) - disp.middleware.setup(ThrottlingMiddleware()) disp.middleware.setup(UserMiddleware()) if __name__ == '__main__': diff --git a/apps/tgbot/tgbot/middlewares/write_command_metric.py b/apps/tgbot/tgbot/middlewares/write_command_metric.py index a56e808..67d1053 100644 --- a/apps/tgbot/tgbot/middlewares/write_command_metric.py +++ b/apps/tgbot/tgbot/middlewares/write_command_metric.py @@ -1,6 +1,7 @@ from aiogram.dispatcher.middlewares import BaseMiddleware from aiogram.types import Message from tgbot.handlers.metrics import push_metric +from tgbot.models import User, UserCheckRequests class WriteCommandMetric(BaseMiddleware): @@ -9,6 +10,11 @@ class WriteCommandMetric(BaseMiddleware): super().__init__() async def on_process_message(self, message: Message, data: dict): + # commands to DB + user, _ = await User.get_or_create(telegram_id=message.from_user.id) + await UserCheckRequests.create(user=user, request=message.text) + + # metrics to influxdb await push_metric( measurement="bot_processed_messages", fields=dict( diff --git a/apps/tgbot/tgbot/models/__init__.py b/apps/tgbot/tgbot/models/__init__.py index f4a2da0..896e11a 100644 --- a/apps/tgbot/tgbot/models/__init__.py +++ b/apps/tgbot/tgbot/models/__init__.py @@ -1 +1,3 @@ from .user import * +from .requests import * + diff --git a/apps/tgbot/tgbot/models/requests.py b/apps/tgbot/tgbot/models/requests.py new file mode 100644 index 0000000..8d390cb --- /dev/null +++ b/apps/tgbot/tgbot/models/requests.py @@ -0,0 +1,7 @@ +from tortoise import Model, fields + + +class UserCheckRequests(Model): + id = fields.IntField(pk=True) + user = fields.ForeignKeyField('models.User', related_name='requests') + request = fields.CharField(max_length=255) diff --git a/apps/tgbot/tgbot/models/user.py b/apps/tgbot/tgbot/models/user.py index 78d99d3..dc9252b 100644 --- a/apps/tgbot/tgbot/models/user.py +++ b/apps/tgbot/tgbot/models/user.py @@ -5,4 +5,3 @@ class User(Model): telegram_id = fields.IntField(pk=True) created_at = fields.DatetimeField(auto_now_add=True) updated_at = fields.DatetimeField(auto_now=True) -