refactor: use explicit dependency injection for groq_api_key

This commit is contained in:
Re-bin 2026-02-03 06:36:58 +00:00
parent eb20cea668
commit 8989adc9ae
2 changed files with 6 additions and 12 deletions

View File

@ -36,10 +36,10 @@ class ChannelManager:
if self.config.channels.telegram.enabled:
try:
from nanobot.channels.telegram import TelegramChannel
# Inject parent config for access to providers
self.config.channels.telegram.parent = self.config
self.channels["telegram"] = TelegramChannel(
self.config.channels.telegram, self.bus
self.config.channels.telegram,
self.bus,
groq_api_key=self.config.providers.groq.api_key,
)
logger.info("Telegram channel enabled")
except ImportError as e:
@ -49,8 +49,6 @@ class ChannelManager:
if self.config.channels.whatsapp.enabled:
try:
from nanobot.channels.whatsapp import WhatsAppChannel
# Inject parent config for access to providers
self.config.channels.whatsapp.parent = self.config
self.channels["whatsapp"] = WhatsAppChannel(
self.config.channels.whatsapp, self.bus
)

View File

@ -85,9 +85,10 @@ class TelegramChannel(BaseChannel):
name = "telegram"
def __init__(self, config: TelegramConfig, bus: MessageBus):
def __init__(self, config: TelegramConfig, bus: MessageBus, groq_api_key: str = ""):
super().__init__(config, bus)
self.config: TelegramConfig = config
self.groq_api_key = groq_api_key
self._app: Application | None = None
self._chat_ids: dict[str, int] = {} # Map sender_id to chat_id for replies
@ -253,12 +254,7 @@ class TelegramChannel(BaseChannel):
# Handle voice transcription
if media_type == "voice" or media_type == "audio":
from nanobot.providers.transcription import GroqTranscriptionProvider
# Try to get Groq API key from config
groq_key = None
if hasattr(self.config, 'parent') and hasattr(self.config.parent, 'providers'):
groq_key = self.config.parent.providers.groq.api_key
transcriber = GroqTranscriptionProvider(api_key=groq_key)
transcriber = GroqTranscriptionProvider(api_key=self.groq_api_key)
transcription = await transcriber.transcribe(file_path)
if transcription:
logger.info(f"Transcribed {media_type}: {transcription[:50]}...")