| """Messaging platform factory. |
| |
| Creates the appropriate messaging platform adapter based on configuration. |
| To add a new platform (e.g. Discord, Slack): |
| 1. Create a new class implementing MessagingPlatform in messaging/platforms/ |
| 2. Add a case to create_messaging_platform() below |
| """ |
|
|
| from loguru import logger |
|
|
| from .base import MessagingPlatform |
|
|
|
|
| def create_messaging_platform( |
| platform_type: str, |
| **kwargs, |
| ) -> MessagingPlatform | None: |
| """Create a messaging platform instance based on type. |
| |
| Args: |
| platform_type: Platform identifier ("telegram", "discord", etc.) |
| **kwargs: Platform-specific configuration passed to the constructor. |
| |
| Returns: |
| Configured MessagingPlatform instance, or None if not configured. |
| """ |
| if platform_type == "telegram": |
| bot_token = kwargs.get("bot_token") |
| if not bot_token: |
| logger.info("No Telegram bot token configured, skipping platform setup") |
| return None |
|
|
| from .telegram import TelegramPlatform |
|
|
| return TelegramPlatform( |
| bot_token=bot_token, |
| allowed_user_id=kwargs.get("allowed_user_id"), |
| ) |
|
|
| if platform_type == "discord": |
| bot_token = kwargs.get("discord_bot_token") |
| if not bot_token: |
| logger.info("No Discord bot token configured, skipping platform setup") |
| return None |
|
|
| from .discord import DiscordPlatform |
|
|
| return DiscordPlatform( |
| bot_token=bot_token, |
| allowed_channel_ids=kwargs.get("allowed_discord_channels"), |
| ) |
|
|
| logger.warning( |
| f"Unknown messaging platform: '{platform_type}'. Supported: 'telegram', 'discord'" |
| ) |
| return None |
|
|