2022-02-13 13:00:10 +09:00
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
|
from quart import escape
|
|
|
|
|
2022-02-15 19:11:53 +09:00
|
|
|
class Rejected(Exception):
|
|
|
|
pass
|
|
|
|
|
|
|
|
async def broadcast(websockets, payload):
|
|
|
|
for queue in websockets:
|
|
|
|
await queue.put(payload)
|
|
|
|
|
|
|
|
async def add_chat_message(chat, websockets, token, message_id, comment):
|
|
|
|
# check message
|
|
|
|
if len(comment) == 0:
|
|
|
|
raise Rejected('Message was empty')
|
|
|
|
|
|
|
|
# add message
|
2022-02-13 13:00:10 +09:00
|
|
|
dt = datetime.utcnow()
|
2022-02-15 19:11:53 +09:00
|
|
|
markup = escape(comment)
|
2022-02-13 13:00:10 +09:00
|
|
|
chat[message_id] = {
|
|
|
|
'id': message_id,
|
|
|
|
'token': token,
|
|
|
|
'timestamp': int(dt.timestamp()),
|
|
|
|
'date': dt.strftime('%Y-%m-%d'),
|
|
|
|
'time_minutes': dt.strftime('%H:%M'),
|
|
|
|
'time_seconds': dt.strftime('%H:%M:%S'),
|
2022-02-15 19:11:53 +09:00
|
|
|
'nomarkup': comment,
|
2022-02-13 13:00:10 +09:00
|
|
|
'markup': markup,
|
|
|
|
}
|
2022-02-15 19:11:53 +09:00
|
|
|
|
|
|
|
# broadcast message to websockets
|
|
|
|
await broadcast(
|
|
|
|
websockets,
|
|
|
|
payload={
|
|
|
|
'type': 'chat',
|
|
|
|
'color': '#c7007f',
|
|
|
|
'name': 'Anonymous',
|
|
|
|
'markup': markup,
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
return markup
|