discord-havoc/api.py

49 lines
1.3 KiB
Python
Raw Normal View History

2025-02-13 14:51:35 -05:00
#!/usr/bin/env python3.12
import importlib
from typing import Optional
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import util
class ValidSendMsgRequest(BaseModel):
"""
- **guild**: optional, guild id in case multiple channels match (normally first result would be used)
- **channel**: channel to target
- **message**: message to send
"""
guild: Optional[int] = None
channel: str
message: str
class API:
"""API [FastAPI Instance] for Havoc"""
def __init__(self, discord_bot):
api_app = FastAPI(title="Havoc API")
self.bot = discord_bot
self.api_app = api_app
@api_app.get("/{any:path}")
def block_get():
raise HTTPException(status_code=403, detail="Invalid request")
@api_app.post("/send_msg")
async def send_msg_handler(data: ValidSendMsgRequest):
await util.discord_helpers.send_message(
bot=self.bot,
guild=data.guild,
channel=data.channel,
message=data.message,
)
return {
'result': "presumed_success",
}
def __init__():
import util # pylint: disable=redefined-outer-name, reimported, import-outside-toplevel
importlib.reload(util)
__init__()