From 6d34e41c738659079208ef7262e682635f9ac560 Mon Sep 17 00:00:00 2001 From: h Date: Tue, 1 Jul 2025 18:46:16 +0300 Subject: [PATCH] feat(solaris): add proper client initialization --- .env.example | 5 ++--- src/bot/filters/admin.py | 1 + src/bot/modules/solaris/__init__.py | 0 src/bot/modules/solaris/client.py | 16 +++++----------- src/dependencies/__init__.py | 6 +++++- src/dependencies/providers/__init__.py | 1 + src/dependencies/providers/solaris.py | 13 +++++++++++++ src/utils/env.py | 5 +++++ 8 files changed, 32 insertions(+), 15 deletions(-) create mode 100644 src/bot/modules/solaris/__init__.py create mode 100644 src/dependencies/providers/solaris.py diff --git a/.env.example b/.env.example index a9da007..6b18a53 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,6 @@ -BOT__TOKEN= -GOOGLE_API_KEY= +BOT__TOKEN= -GROUP_ID= +GOOGLE__API_KEY= DB__HOST=mongodb DB__PORT=27017 diff --git a/src/bot/filters/admin.py b/src/bot/filters/admin.py index 444c487..1b1dbc0 100644 --- a/src/bot/filters/admin.py +++ b/src/bot/filters/admin.py @@ -3,6 +3,7 @@ from aiogram.types import Message from bot.common import config + class Admin(BaseFilter): def __init__(self, notify: bool = True): self.notify = notify diff --git a/src/bot/modules/solaris/__init__.py b/src/bot/modules/solaris/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/bot/modules/solaris/client.py b/src/bot/modules/solaris/client.py index 1246366..abcf773 100644 --- a/src/bot/modules/solaris/client.py +++ b/src/bot/modules/solaris/client.py @@ -1,20 +1,14 @@ -import os from google import genai from google.genai.types import GenerateContentConfig, ThinkingConfig -from dotenv import load_dotenv -load_dotenv() class SolarisClient: - def __init__(self) -> None: - client = genai.Client(api_key=os.getenv('GOOGLE_API_KEY')).aio + def __init__(self, api_key: str) -> None: + client = genai.Client(api_key=api_key).aio self.chat = client.chats.create( model="gemini-2.5-flash", config=GenerateContentConfig( - system_instruction="meow meow meow", # надо где-то промпт хранить, в бд наверное хезе - thinking_config=ThinkingConfig(thinking_budget=0) - ) + system_instruction="meow meow meow", # надо где-то промпт хранить, в бд наверное хезе + thinking_config=ThinkingConfig(thinking_budget=0), + ), ) - - -# мяу \ No newline at end of file diff --git a/src/dependencies/__init__.py b/src/dependencies/__init__.py index 91d4995..6708082 100644 --- a/src/dependencies/__init__.py +++ b/src/dependencies/__init__.py @@ -1,3 +1,7 @@ from dishka import make_async_container -container = make_async_container() +from .providers import SolarisClientProvider + +container = make_async_container( + SolarisClientProvider(), +) diff --git a/src/dependencies/providers/__init__.py b/src/dependencies/providers/__init__.py index e69de29..d09362c 100644 --- a/src/dependencies/providers/__init__.py +++ b/src/dependencies/providers/__init__.py @@ -0,0 +1 @@ +from .solaris import SolarisClientProvider diff --git a/src/dependencies/providers/solaris.py b/src/dependencies/providers/solaris.py new file mode 100644 index 0000000..1a8cf00 --- /dev/null +++ b/src/dependencies/providers/solaris.py @@ -0,0 +1,13 @@ +from typing import AsyncIterable + +from dishka import Provider, Scope, provide + +from bot.modules.solaris.client import SolarisClient +from utils.env import env + + +class SolarisClientProvider(Provider): + @provide(scope=Scope.APP) + async def get_client(self) -> AsyncIterable[SolarisClient]: + client = SolarisClient(env.google.api_key.get_secret_value()) + yield client diff --git a/src/utils/env.py b/src/utils/env.py index 16d9dc7..e2a1566 100644 --- a/src/utils/env.py +++ b/src/utils/env.py @@ -26,10 +26,15 @@ class LogSettings(BaseSettings): console_width: int = 150 +class GoogleSettings(BaseSettings): + api_key: SecretStr + + class Settings(BaseSettings): bot: BotSettings db: DatabaseSettings log: LogSettings + google: GoogleSettings model_config = SettingsConfigDict( case_sensitive=False,