Update app.py
Browse files
app.py
CHANGED
@@ -30,19 +30,7 @@ import base64
|
|
30 |
from base import replace_null_with_empty_string
|
31 |
|
32 |
|
33 |
-
#test
|
34 |
-
from pywebio.platform.flask import webio_view
|
35 |
-
from pywebio import start_server
|
36 |
-
from pywebio.input import *
|
37 |
-
from pywebio.output import *
|
38 |
-
from pywebio.session import defer_call, info as session_info, run_async, run_js
|
39 |
-
import asyncio
|
40 |
|
41 |
-
chat_msgs = []
|
42 |
-
online_users = set()
|
43 |
-
|
44 |
-
MAX_MESSAGES_COUNT = 100
|
45 |
-
#test
|
46 |
|
47 |
# Замените на ваш реальный ключ Системы
|
48 |
api_key_sys = os.getenv('api_key_sys')
|
@@ -2135,63 +2123,6 @@ def monitor():
|
|
2135 |
|
2136 |
|
2137 |
|
2138 |
-
|
2139 |
-
async def main():
|
2140 |
-
global chat_msgs
|
2141 |
-
|
2142 |
-
put_markdown("## 🧊 Добро пожаловать в онлайн чат!\nИсходный код данного чата укладывается в 100 строк кода!")
|
2143 |
-
|
2144 |
-
msg_box = output()
|
2145 |
-
put_scrollable(msg_box, height=300, keep_bottom=True)
|
2146 |
-
|
2147 |
-
nickname = await input("Войти в чат", required=True, placeholder="Ваше имя", validate=lambda n: "Такой ник уже используется!" if n in online_users or n == '📢' else None)
|
2148 |
-
online_users.add(nickname)
|
2149 |
-
|
2150 |
-
chat_msgs.append(('📢', f'`{nickname}` присоединился к чату!'))
|
2151 |
-
msg_box.append(put_markdown(f'📢 `{nickname}` присоединился к чату'))
|
2152 |
-
|
2153 |
-
refresh_task = run_async(refresh_msg(nickname, msg_box))
|
2154 |
-
|
2155 |
-
while True:
|
2156 |
-
data = await input_group("💭 Новое сообщение", [
|
2157 |
-
input(placeholder="Текст сообщения ...", name="msg"),
|
2158 |
-
actions(name="cmd", buttons=["Отправить", {'label': "Выйти из чата", 'type': 'cancel'}])
|
2159 |
-
], validate = lambda m: ('msg', "Введите текст сообщения!") if m["cmd"] == "Отправить" and not m['msg'] else None)
|
2160 |
-
|
2161 |
-
if data is None:
|
2162 |
-
break
|
2163 |
-
|
2164 |
-
msg_box.append(put_markdown(f"`{nickname}`: {data['msg']}"))
|
2165 |
-
chat_msgs.append((nickname, data['msg']))
|
2166 |
-
|
2167 |
-
refresh_task.close()
|
2168 |
-
|
2169 |
-
online_users.remove(nickname)
|
2170 |
-
toast("Вы вышли из чата!")
|
2171 |
-
msg_box.append(put_markdown(f'📢 Пользователь `{nickname}` покинул чат!'))
|
2172 |
-
chat_msgs.append(('📢', f'Пользователь `{nickname}` покинул чат!'))
|
2173 |
-
|
2174 |
-
put_buttons(['Перезайти'], onclick=lambda btn:run_js('window.location.reload()'))
|
2175 |
-
|
2176 |
-
async def refresh_msg(nickname, msg_box):
|
2177 |
-
global chat_msgs
|
2178 |
-
last_idx = len(chat_msgs)
|
2179 |
-
|
2180 |
-
while True:
|
2181 |
-
await asyncio.sleep(1)
|
2182 |
-
|
2183 |
-
for m in chat_msgs[last_idx:]:
|
2184 |
-
if m[0] != nickname: # if not a message from current user
|
2185 |
-
msg_box.append(put_markdown(f"`{m[0]}`: {m[1]}"))
|
2186 |
-
|
2187 |
-
# remove expired
|
2188 |
-
if len(chat_msgs) > MAX_MESSAGES_COUNT:
|
2189 |
-
chat_msgs = chat_msgs[len(chat_msgs) // 2:]
|
2190 |
-
|
2191 |
-
last_idx = len(chat_msgs)
|
2192 |
-
|
2193 |
-
# Создаем маршрут для чата
|
2194 |
-
app.add_url_rule('/chat', 'webio_view', webio_view(main), methods=['GET', 'POST', 'OPTIONS'])
|
2195 |
|
2196 |
|
2197 |
|
|
|
30 |
from base import replace_null_with_empty_string
|
31 |
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
|
|
|
|
|
|
|
|
|
|
|
34 |
|
35 |
# Замените на ваш реальный ключ Системы
|
36 |
api_key_sys = os.getenv('api_key_sys')
|
|
|
2123 |
|
2124 |
|
2125 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2126 |
|
2127 |
|
2128 |
|