Add last sender timestamp

This commit is contained in:
nexy7574 2023-07-24 13:57:48 +01:00
parent 8502b9ea0b
commit 40afef4ad1

View file

@ -54,6 +54,7 @@ try:
except ImportError: except ImportError:
bot = None bot = None
app.state.last_sender = None app.state.last_sender = None
app.state.last_sender_ts = datetime.utcnow()
@app.middleware("http") @app.middleware("http")
@ -291,6 +292,8 @@ async def verify(code: str):
@app.post("/bridge", include_in_schema=False, status_code=201) @app.post("/bridge", include_in_schema=False, status_code=201)
async def bridge(req: Request): async def bridge(req: Request):
now = datetime.utcnow()
ts_diff = (now - app.state.last_sender_ts).total_seconds()
from discord.ext.commands import Paginator from discord.ext.commands import Paginator
body = await req.json() body = await req.json()
if body["secret"] != app.state.bot.http.token: if body["secret"] != app.state.bot.http.token:
@ -319,7 +322,7 @@ async def bridge(req: Request):
paginator.add_line(textwrap.shorten(line, width=1900, placeholder="<...>")) paginator.add_line(textwrap.shorten(line, width=1900, placeholder="<...>"))
if len(paginator.pages) > 1: if len(paginator.pages) > 1:
msg = None msg = None
if app.state.last_sender != body["sender"]: if app.state.last_sender != body["sender"] or ts_diff >= 600:
msg = await channel.send( msg = await channel.send(
f"**{body['sender']}**:" f"**{body['sender']}**:"
) )
@ -335,7 +338,7 @@ async def bridge(req: Request):
app.state.last_sender = body["sender"] app.state.last_sender = body["sender"]
else: else:
content = f"**{body['sender']}**:\n>>> {body['message']}" content = f"**{body['sender']}**:\n>>> {body['message']}"
if app.state.last_sender == body["sender"]: if app.state.last_sender == body["sender"] and ts_diff < 600:
content = f">>> {body['message']}" content = f">>> {body['message']}"
await channel.send( await channel.send(
content, content,
@ -344,6 +347,7 @@ async def bridge(req: Request):
suppress=False suppress=False
) )
app.state.last_sender = body["sender"] app.state.last_sender = body["sender"]
app.state.last_sender_ts = now
return {"status": "ok", "pages": len(paginator.pages)} return {"status": "ok", "pages": len(paginator.pages)}