[upd] better settings provider user id getter

This commit is contained in:
h
2025-03-29 13:14:30 +02:00
parent 8acbbb286c
commit 1b0bae2fc2

View File

@@ -1,4 +1,4 @@
from aiogram.types import TelegramObject
from aiogram.types import InlineQuery, TelegramObject, User
from dishka import Provider, Scope, provide
from bot.modules.settings import UserSettings
@@ -8,13 +8,13 @@ from utils.db import UserSettingsDocument
class SettingsProvider(Provider):
@provide(scope=Scope.REQUEST)
async def get_user_settings(self, event: TelegramObject) -> UserSettings:
if not hasattr(event, "from_user") and (
not hasattr(event, "inline_query") or event.inline_query is None
if isinstance(from_user := getattr(event, "from_user", None), User):
user_id = from_user.id
elif isinstance(
inline_query := getattr(event, "inline_query", None), InlineQuery
):
user_id = 0
elif hasattr(event, "inline_query") and event.inline_query is not None:
user_id = event.inline_query.from_user.id
user_id = inline_query.from_user.id
else:
user_id = event.from_user.id
user_id = 0
return await UserSettingsDocument.get_user_settings(user_id)