mirror of
https://github.com/elisiariocouto/leggen.git
synced 2025-12-14 08:32:33 +00:00
Fix notification channels returning null by connecting API to real implementations
- Update notification service to handle both old (api-key/chat-id) and new (token/chat_id) config formats - Connect API service to actual Discord/Telegram notification implementations from CLI codebase - Fix API routes to properly detect configured services using correct config keys - Telegram notifications now work correctly, Discord properly shows as not configured
This commit is contained in:
committed by
Elisiário Couto
parent
541cb262ee
commit
16afa1ed8a
@@ -36,11 +36,14 @@ async def get_notification_settings() -> APIResponse:
|
|||||||
if discord_config.get("webhook")
|
if discord_config.get("webhook")
|
||||||
else None,
|
else None,
|
||||||
telegram=TelegramConfig(
|
telegram=TelegramConfig(
|
||||||
token="***" if telegram_config.get("token") else "",
|
token="***"
|
||||||
chat_id=telegram_config.get("chat_id", 0),
|
if (telegram_config.get("token") or telegram_config.get("api-key"))
|
||||||
|
else "",
|
||||||
|
chat_id=telegram_config.get("chat_id")
|
||||||
|
or telegram_config.get("chat-id", 0),
|
||||||
enabled=telegram_config.get("enabled", True),
|
enabled=telegram_config.get("enabled", True),
|
||||||
)
|
)
|
||||||
if telegram_config.get("token")
|
if (telegram_config.get("token") or telegram_config.get("api-key"))
|
||||||
else None,
|
else None,
|
||||||
filters=NotificationFilters(
|
filters=NotificationFilters(
|
||||||
case_insensitive=filters_config.get("case-insensitive", {}),
|
case_insensitive=filters_config.get("case-insensitive", {}),
|
||||||
@@ -158,12 +161,24 @@ async def get_notification_services() -> APIResponse:
|
|||||||
"telegram": {
|
"telegram": {
|
||||||
"name": "Telegram",
|
"name": "Telegram",
|
||||||
"enabled": bool(
|
"enabled": bool(
|
||||||
notifications_config.get("telegram", {}).get("token")
|
(
|
||||||
and notifications_config.get("telegram", {}).get("chat_id")
|
notifications_config.get("telegram", {}).get("token")
|
||||||
|
or notifications_config.get("telegram", {}).get("api-key")
|
||||||
|
)
|
||||||
|
and (
|
||||||
|
notifications_config.get("telegram", {}).get("chat_id")
|
||||||
|
or notifications_config.get("telegram", {}).get("chat-id")
|
||||||
|
)
|
||||||
),
|
),
|
||||||
"configured": bool(
|
"configured": bool(
|
||||||
notifications_config.get("telegram", {}).get("token")
|
(
|
||||||
and notifications_config.get("telegram", {}).get("chat_id")
|
notifications_config.get("telegram", {}).get("token")
|
||||||
|
or notifications_config.get("telegram", {}).get("api-key")
|
||||||
|
)
|
||||||
|
and (
|
||||||
|
notifications_config.get("telegram", {}).get("chat_id")
|
||||||
|
or notifications_config.get("telegram", {}).get("chat-id")
|
||||||
|
)
|
||||||
),
|
),
|
||||||
"active": notifications_config.get("telegram", {}).get("enabled", True),
|
"active": notifications_config.get("telegram", {}).get("enabled", True),
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -95,7 +95,8 @@ class NotificationService:
|
|||||||
telegram_config = self.notifications_config.get("telegram", {})
|
telegram_config = self.notifications_config.get("telegram", {})
|
||||||
return bool(
|
return bool(
|
||||||
telegram_config.get("token")
|
telegram_config.get("token")
|
||||||
and telegram_config.get("chat_id")
|
or telegram_config.get("api-key")
|
||||||
|
and (telegram_config.get("chat_id") or telegram_config.get("chat-id"))
|
||||||
and telegram_config.get("enabled", True)
|
and telegram_config.get("enabled", True)
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -117,11 +118,67 @@ class NotificationService:
|
|||||||
|
|
||||||
async def _send_discord_test(self, message: str) -> None:
|
async def _send_discord_test(self, message: str) -> None:
|
||||||
"""Send Discord test notification"""
|
"""Send Discord test notification"""
|
||||||
logger.info(f"Sending Discord test: {message}")
|
try:
|
||||||
|
from leggen.notifications.discord import send_expire_notification
|
||||||
|
import click
|
||||||
|
|
||||||
|
# Create a mock context with the webhook
|
||||||
|
ctx = click.Context(click.Command("test"))
|
||||||
|
ctx.obj = {
|
||||||
|
"notifications": {
|
||||||
|
"discord": {
|
||||||
|
"webhook": self.notifications_config.get("discord", {}).get(
|
||||||
|
"webhook"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Send test notification using the actual implementation
|
||||||
|
test_notification = {
|
||||||
|
"bank": "Test",
|
||||||
|
"requisition_id": "test-123",
|
||||||
|
"status": "active",
|
||||||
|
"days_left": 30,
|
||||||
|
}
|
||||||
|
send_expire_notification(ctx, test_notification)
|
||||||
|
logger.info(f"Discord test notification sent: {message}")
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Failed to send Discord test notification: {e}")
|
||||||
|
raise
|
||||||
|
|
||||||
async def _send_telegram_test(self, message: str) -> None:
|
async def _send_telegram_test(self, message: str) -> None:
|
||||||
"""Send Telegram test notification"""
|
"""Send Telegram test notification"""
|
||||||
logger.info(f"Sending Telegram test: {message}")
|
try:
|
||||||
|
from leggen.notifications.telegram import send_expire_notification
|
||||||
|
import click
|
||||||
|
|
||||||
|
# Create a mock context with the telegram config
|
||||||
|
ctx = click.Context(click.Command("test"))
|
||||||
|
telegram_config = self.notifications_config.get("telegram", {})
|
||||||
|
ctx.obj = {
|
||||||
|
"notifications": {
|
||||||
|
"telegram": {
|
||||||
|
"api-key": telegram_config.get("token")
|
||||||
|
or telegram_config.get("api-key"),
|
||||||
|
"chat-id": telegram_config.get("chat_id")
|
||||||
|
or telegram_config.get("chat-id"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Send test notification using the actual implementation
|
||||||
|
test_notification = {
|
||||||
|
"bank": "Test",
|
||||||
|
"requisition_id": "test-123",
|
||||||
|
"status": "active",
|
||||||
|
"days_left": 30,
|
||||||
|
}
|
||||||
|
send_expire_notification(ctx, test_notification)
|
||||||
|
logger.info(f"Telegram test notification sent: {message}")
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Failed to send Telegram test notification: {e}")
|
||||||
|
raise
|
||||||
|
|
||||||
async def _send_discord_expiry(self, notification_data: Dict[str, Any]) -> None:
|
async def _send_discord_expiry(self, notification_data: Dict[str, Any]) -> None:
|
||||||
"""Send Discord expiry notification"""
|
"""Send Discord expiry notification"""
|
||||||
|
|||||||
Reference in New Issue
Block a user