Add is_automated field to websocket

This commit is contained in:
Nexus 2023-11-07 11:32:30 +00:00
parent 2b33d0dd71
commit 4a6fe5e79b
Signed by: nex
GPG key ID: 0FA334385D0B689F
2 changed files with 7 additions and 0 deletions

View file

@ -60,6 +60,7 @@ class MessagePayload(pydantic.BaseModel):
message_id: int message_id: int
author: str author: str
is_automated: bool = False
avatar: str avatar: str
content: str content: str
clean_content: str clean_content: str
@ -346,6 +347,7 @@ class Events(commands.Cog):
_payload = MessagePayload( _payload = MessagePayload(
message_id=_message.id, message_id=_message.id,
author=_message.author.name, author=_message.author.name,
is_automated=_message.author.bot or _message.author.system,
avatar=_message.author.display_avatar.with_static_format("webp").with_size(512).url, avatar=_message.author.display_avatar.with_static_format("webp").with_size(512).url,
content=_message.content or '', content=_message.content or '',
clean_content=str(_message.clean_content or ''), clean_content=str(_message.clean_content or ''),

View file

@ -55,6 +55,7 @@ except ImportError:
bot = None bot = None
app.state.last_sender = None app.state.last_sender = None
app.state.last_sender_ts = datetime.utcnow() app.state.last_sender_ts = datetime.utcnow()
app.state.ws_connected = False
@app.middleware("http") @app.middleware("http")
@ -291,9 +292,12 @@ async def bridge(req: Request):
async def bridge_recv(ws: WebSocket, secret: str = Header(None)): async def bridge_recv(ws: WebSocket, secret: str = Header(None)):
if secret != app.state.bot.http.token: if secret != app.state.bot.http.token:
raise HTTPException(status_code=401, detail="Invalid secret.") raise HTTPException(status_code=401, detail="Invalid secret.")
if app.state.ws_connected:
raise HTTPException(status_code=409, detail="Already connected.")
queue: asyncio.Queue = app.state.bot.bridge_queue queue: asyncio.Queue = app.state.bot.bridge_queue
await ws.accept() await ws.accept()
app.state.ws_connected = True
while True: while True:
try: try:
data = queue.get_nowait() data = queue.get_nowait()
@ -307,3 +311,4 @@ async def bridge_recv(ws: WebSocket, secret: str = Header(None)):
break break
finally: finally:
queue.task_done() queue.task_done()
app.state.ws_connected = False