Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -4,8 +4,6 @@ import os
|
|
| 4 |
from datetime import datetime
|
| 5 |
from aiogram import Bot, Dispatcher, types, F
|
| 6 |
from aiogram.filters import Command
|
| 7 |
-
from aiogram.fsm.context import FSMContext
|
| 8 |
-
from aiogram.fsm.state import State, StatesGroup
|
| 9 |
from aiogram.utils.keyboard import ReplyKeyboardBuilder, InlineKeyboardBuilder
|
| 10 |
from flask import Flask, request, jsonify, render_template_string
|
| 11 |
import logging
|
|
@@ -44,11 +42,6 @@ def save_data(data):
|
|
| 44 |
|
| 45 |
data = load_data()
|
| 46 |
|
| 47 |
-
# Состояния для FSM (Finite State Machine)
|
| 48 |
-
class CartStates(StatesGroup):
|
| 49 |
-
waiting_for_product = State()
|
| 50 |
-
waiting_for_quantity = State()
|
| 51 |
-
|
| 52 |
# Клавиатуры
|
| 53 |
def get_main_keyboard():
|
| 54 |
builder = ReplyKeyboardBuilder()
|
|
@@ -243,16 +236,10 @@ def delete_product(product_id):
|
|
| 243 |
logger.error(f"Ошибка при удалении товара: {e}")
|
| 244 |
return jsonify({'status': 'error', 'message': str(e)}), 500
|
| 245 |
|
| 246 |
-
# Запуск бота и Flask
|
| 247 |
async def on_startup(_):
|
| 248 |
logger.info("Бот запущен!")
|
| 249 |
|
| 250 |
-
def run_bot():
|
| 251 |
-
try:
|
| 252 |
-
asyncio.run(dp.start_polling(bot, on_startup=on_startup))
|
| 253 |
-
except Exception as e:
|
| 254 |
-
logger.error(f"Ошибка в боте: {e}")
|
| 255 |
-
|
| 256 |
def run_flask():
|
| 257 |
try:
|
| 258 |
app.run(host='0.0.0.0', port=7860)
|
|
@@ -260,9 +247,13 @@ def run_flask():
|
|
| 260 |
logger.error(f"Ошибка в Flask: {e}")
|
| 261 |
|
| 262 |
if __name__ == '__main__':
|
| 263 |
-
|
|
|
|
|
|
|
|
|
|
| 264 |
flask_thread = threading.Thread(target=run_flask)
|
| 265 |
-
|
| 266 |
flask_thread.start()
|
| 267 |
-
|
|
|
|
| 268 |
flask_thread.join()
|
|
|
|
| 4 |
from datetime import datetime
|
| 5 |
from aiogram import Bot, Dispatcher, types, F
|
| 6 |
from aiogram.filters import Command
|
|
|
|
|
|
|
| 7 |
from aiogram.utils.keyboard import ReplyKeyboardBuilder, InlineKeyboardBuilder
|
| 8 |
from flask import Flask, request, jsonify, render_template_string
|
| 9 |
import logging
|
|
|
|
| 42 |
|
| 43 |
data = load_data()
|
| 44 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
# Клавиатуры
|
| 46 |
def get_main_keyboard():
|
| 47 |
builder = ReplyKeyboardBuilder()
|
|
|
|
| 236 |
logger.error(f"Ошибка при удалении товара: {e}")
|
| 237 |
return jsonify({'status': 'error', 'message': str(e)}), 500
|
| 238 |
|
| 239 |
+
# Запуск бота и Flask
|
| 240 |
async def on_startup(_):
|
| 241 |
logger.info("Бот запущен!")
|
| 242 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 243 |
def run_flask():
|
| 244 |
try:
|
| 245 |
app.run(host='0.0.0.0', port=7860)
|
|
|
|
| 247 |
logger.error(f"Ошибка в Flask: {e}")
|
| 248 |
|
| 249 |
if __name__ == '__main__':
|
| 250 |
+
# Запускаем бота в главном потоке
|
| 251 |
+
asyncio.run(dp.start_polling(bot, on_startup=on_startup))
|
| 252 |
+
|
| 253 |
+
# Запускаем Flask в отдельном потоке
|
| 254 |
flask_thread = threading.Thread(target=run_flask)
|
| 255 |
+
flask_thread.daemon = True # Flask будет завершаться при завершении основного потока
|
| 256 |
flask_thread.start()
|
| 257 |
+
|
| 258 |
+
# Ждём завершения основного цикла бота
|
| 259 |
flask_thread.join()
|