122 lines
No EOL
1.9 KiB
Python
122 lines
No EOL
1.9 KiB
Python
import time
|
|
from os import remove
|
|
from PIL import Image as IMAGE
|
|
|
|
from files.helpers.wrappers import *
|
|
from files.helpers.alerts import *
|
|
from files.helpers.sanitize import *
|
|
from files.helpers.security import *
|
|
from files.helpers.get import *
|
|
from files.helpers.images import *
|
|
from files.helpers.const import *
|
|
from files.classes import *
|
|
from flask import *
|
|
from files.__main__ import app, cache, limiter, db_session
|
|
from .front import frontlist
|
|
from files.helpers.discord import add_role
|
|
from datetime import datetime
|
|
import requests
|
|
from urllib.parse import quote, urlencode
|
|
|
|
|
|
|
|
import sys
|
|
from flask_socketio import *
|
|
|
|
month = datetime.now().strftime('%B')
|
|
|
|
sex = SocketIO(
|
|
app
|
|
)
|
|
|
|
@app.get("/chat")
|
|
@auth_required
|
|
def chat( v):
|
|
return render_template("chat.html", v=v)
|
|
|
|
|
|
SIDS={}
|
|
|
|
COMMANDS={}
|
|
HELP={}
|
|
|
|
TYPING={}
|
|
|
|
|
|
|
|
@sex.on('connect')
|
|
def socket_connect_auth_user():
|
|
|
|
|
|
g.db=db_session()
|
|
|
|
v=get_logged_in_user()
|
|
|
|
if v.id in SIDS:
|
|
SIDS[v.id].append(request.sid)
|
|
else:
|
|
SIDS[v.id]=[request.sid]
|
|
|
|
|
|
emit("status", {'status':"connected"})
|
|
|
|
g.db.close()
|
|
|
|
|
|
def socket_auth_required(f):
|
|
|
|
def wrapper(*args, **kwargs):
|
|
|
|
g.db=db_session()
|
|
v=get_logged_in_user()
|
|
|
|
if request.sid not in SIDS.get(v.id, []):
|
|
if v.id in SIDS:
|
|
SIDS[v.id].append(request.sid)
|
|
else:
|
|
SIDS[v.id]=[request.sid]
|
|
|
|
f(*args, v, **kwargs)
|
|
g.db.close()
|
|
|
|
|
|
wrapper.__name__=f.__name__
|
|
return wrapper
|
|
|
|
|
|
|
|
@sex.on('join room')
|
|
@socket_auth_required
|
|
def join_guild_room(data, v):
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
@sex.on('leave room')
|
|
@socket_auth_required
|
|
def leave_guild_room(data, v):
|
|
emit("status", {'status':f"Left #{guild.name}"})
|
|
|
|
|
|
|
|
|
|
@sex.on('speak')
|
|
@socket_auth_required
|
|
def speak(data, v):
|
|
|
|
raw_text=data['text'][0:1000].lstrip().rstrip()
|
|
if not raw_text:return
|
|
|
|
text = sanitize(raw_text)
|
|
|
|
data={
|
|
"avatar": v.profile_url,
|
|
"username":v.username,
|
|
"text":text,
|
|
"time": time.strftime("%d %b %Y at %H:%M:%S", time.gmtime(int(time.time()))),
|
|
"userlink":v.url
|
|
}
|
|
|
|
emit('speak', data) |