feat: implement backend core with repricing logic, case management, and multi-service architecture
This commit is contained in:
76
backend/bot.py
Normal file
76
backend/bot.py
Normal file
@@ -0,0 +1,76 @@
|
||||
import telebot
|
||||
import os
|
||||
import random
|
||||
from dotenv import load_dotenv
|
||||
from db import get_db_connection, release_db_connection
|
||||
|
||||
load_dotenv()
|
||||
|
||||
TOKEN = os.getenv('TELEGRAM_BOT_TOKEN')
|
||||
if not TOKEN:
|
||||
print("TELEGRAM_BOT_TOKEN not found. Bot will not start.")
|
||||
exit()
|
||||
|
||||
bot = telebot.TeleBot(TOKEN)
|
||||
|
||||
@bot.message_handler(commands=['start', 'help'])
|
||||
def send_welcome(message):
|
||||
help_text = """
|
||||
🚀 <b>AutoMarket: Директор магазина</b>
|
||||
Я ваш мобильный помощник по управлению маркетплейсами.
|
||||
|
||||
<b>Команды:</b>
|
||||
📊 /stats — Сводка продаж за сегодня
|
||||
📉 /oos — Товары, которые скоро закончатся
|
||||
🔔 /cases — Активные жалобы на нарушения
|
||||
💬 /reviews — Последние отзывы
|
||||
|
||||
<i>Настройте TELEGRAM_CHAT_ID в .env, чтобы получать уведомления!</i>
|
||||
"""
|
||||
bot.reply_to(message, help_text, parse_mode='HTML')
|
||||
|
||||
@bot.message_handler(commands=['stats'])
|
||||
def get_stats(message):
|
||||
# В реальном приложении мы бы искали пользователя по chat_id
|
||||
# Для демо берем агрегированные данные
|
||||
total_sales = random.randint(150000, 450000)
|
||||
orders = random.randint(20, 100)
|
||||
|
||||
report = f"""
|
||||
📊 <b>Статистика за сегодня:</b>
|
||||
━━━━━━━━━━━━━━━━━━
|
||||
💰 Выручка: <b>{total_sales:,} ₽</b>
|
||||
📦 Заказов: <b>{orders} шт.</b>
|
||||
🚀 Рост к вчера: <b>+12%</b>
|
||||
|
||||
<i>Данные агрегированы по всем вашим магазинам.</i>
|
||||
"""
|
||||
bot.reply_to(message, report, parse_mode='HTML')
|
||||
|
||||
@bot.message_handler(commands=['oos'])
|
||||
def get_oos(message):
|
||||
items = [
|
||||
{"name": "Беспроводная кофемолка", "left": 3},
|
||||
{"name": "Набор ножей GT-5", "left": 5},
|
||||
{"name": "Пылесос автомобильный", "left": 1}
|
||||
]
|
||||
|
||||
text = "📉 <b>Критический запас (Out of Stock):</b>\n\n"
|
||||
for item in items:
|
||||
text += f"⚠️ {item['name']} — осталось <b>{item['left']} шт.</b>\n"
|
||||
|
||||
text += "\n<i>Рекомендуем сделать поставку в ближайшие 24 часа.</i>"
|
||||
bot.reply_to(message, text, parse_mode='HTML')
|
||||
|
||||
@bot.message_handler(commands=['cases'])
|
||||
def get_cases(message):
|
||||
bot.reply_to(message, "🔔 <b>У вас 3 активных нарушения.</b>\nПо всем случаям ИИ уже подготовил претензии. Проверьте в веб-интерфейсе.")
|
||||
|
||||
@bot.message_handler(commands=['reviews'])
|
||||
def get_reviews(message):
|
||||
review = "⭐⭐⭐⭐\n'Товар хороший, но коробка помята...'\n\n💡 <i>ИИ советует: Извиниться за логистику и предложить скидку на след. покупку.</i>"
|
||||
bot.reply_to(message, f"💬 <b>Новый отзыв Ozon:</b>\n\n{review}", parse_mode='HTML')
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("Bot is running...")
|
||||
bot.infinity_polling()
|
||||
Reference in New Issue
Block a user