from niquests import AsyncSession from settings import settings import logging from fastapi import HTTPException logger = logging.getLogger(__name__) async def issues(payload, request_client: AsyncSession): if payload["action"] not in ["opened", "closed", "reopened", "deleted"]: return embed = { "author": { "name": payload["sender"]["login"], "icon_url": payload["sender"]["avatar_url"], }, "title": f"[{payload['repository']['full_name']}] Issue {payload['action'].capitalize()}: #{payload['issue']['number']} {payload['issue']['title']}", "url": payload["issue"]["html_url"], "description": payload["issue"].get("body"), } data = { "username": "Github-OpenGist", "embeds": [embed], } await send_discord_webhook(request_client=request_client, data=data) async def send_discord_webhook(request_client: AsyncSession, data): resp = await request_client.post(settings.DISCORD_WEBHOOK_URL, json=data) if resp.status_code != 204: raise HTTPException(status_code=400, detail="Failed to send Discord webhook") logger.info(f"Discord webhook sent with status code {resp.status_code}")