65 lines
1.2 KiB
Python
65 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
SocketIO events.
|
|
"""
|
|
import time
|
|
|
|
import bleach
|
|
from flask_socketio import SocketIO, emit, join_room
|
|
|
|
import database as db
|
|
|
|
socketio = SocketIO()
|
|
|
|
@socketio.on('joined')
|
|
def joined(data):
|
|
"""
|
|
Sent by clients when they enter a room.
|
|
"""
|
|
room = data["room"]
|
|
join_room(room)
|
|
|
|
|
|
@socketio.on('message')
|
|
def message(data):
|
|
"""
|
|
Sent by a client when the user entered a new message.
|
|
"""
|
|
room = data["room"]
|
|
|
|
message = data["message"]
|
|
date = int(time.time())
|
|
data["date"] = date
|
|
|
|
message = message.strip()
|
|
if not message:
|
|
return
|
|
tags = ["b", "code", "i", "s"]
|
|
message = bleach.clean(message, tags=tags)
|
|
lines = []
|
|
for line in message.splitlines():
|
|
if line.startswith(">"):
|
|
line = '<span class="greenText">' + line + '</span>'
|
|
lines.append(line)
|
|
message = "<br />".join(lines)
|
|
data["message"] = message
|
|
|
|
db.log_chat_message(data)
|
|
emit("message", data, room=room)
|
|
|
|
|
|
@socketio.on("new_post")
|
|
def new_post(data):
|
|
"""
|
|
Called when the QM makes a new post.
|
|
"""
|
|
room = data["room"]
|
|
post = data["post"]
|
|
|
|
post = bleach.clean(post.strip())
|
|
post = post.replace("\n", "<br />")
|
|
data["post"] = [post]
|
|
db.insert_quest_post(room, post, int(time.time()))
|
|
|
|
emit("new_post", data, room=room)
|