Add files via upload

Initial project upload
This commit is contained in:
nini52 authored and GitHub committed 2026-07-08 09:06:08 +03:00
commit 126e76963c
20 files changed
+1227

No files matched your search

Binary file not shown.
Binary file not shown.
Binary file not shown.
+78
View File
@@ -0,0 +1,78 @@
from database import get_user
from ai_core.neural_network import ContentGenerator
from keyboards.reply_keyboards import get_content_keyboard, BUSINESS_TYPES
import time
# Создаем экземпляр генератора контента
content_gen = ContentGenerator()
def handle_content_generation(message, bot, platform_text):
"""Генерирует контент для выбранной платформы"""
user_id = message.from_user.id
user = get_user(user_id)
if not user:
bot.send_message(user_id, "❌ Ты не зарегистрирован. Напиши /start")
return
# Извлекаем платформу из текста кнопки
platform_map = {
"📝 Пост для Instagram": "instagram",
"💼 Пост для LinkedIn": "linkedin",
"📱 Пост для Telegram": "telegram",
"🧵 Пост для Twitter/X": "twitter",
"🎯 Рекламный пост": "ad"
}
platform = platform_map.get(platform_text, "instagram")
platform_emoji = {
"instagram": "📸",
"linkedin": "💼",
"telegram": "📱",
"twitter": "🐦",
"ad": "📢"
}
# Получаем данные пользователя
business_type = BUSINESS_TYPES.get(str(user[4]), {}).get('name', 'Бизнес')
description = user[5] or "не указано"
# Отправляем статус "печатает"
bot.send_chat_action(user_id, "typing")
# Генерируем контент
try:
post = content_gen.generate_post(business_type, description, platform)
# Отправляем результат
response_text = f"""
{platform_emoji.get(platform, '📝')} **ГОТОВЫЙ ПОСТ ДЛЯ {platform.upper()}**
━━━━━━━━━━━━━━━━━━━━━━━
{post}
━━━━━━━━━━━━━━━━━━━━━━━
💡 **Совет:**
• Добавь хештеги из поста
• Прикрепи фото или видео
• Укажи ссылку на свой сайт
📌 Хочешь другой вариант? Снова нажми "💡 Предложить контент"
"""
bot.send_message(user_id, response_text, parse_mode='Markdown')
except Exception as e:
bot.send_message(
user_id,
f"❌ Ошибка генерации: {e}\n\nПопробуй позже или обнови описание бизнеса."
)
# Показываем меню выбора платформы для следующего поста
bot.send_message(
user_id,
"📱 Для какой соцсети нужен следующий пост?",
reply_markup=get_content_keyboard()
)
+139
View File
@@ -0,0 +1,139 @@
from database import get_user, update_user_description
from keyboards.reply_keyboards import get_main_menu_keyboard, get_settings_keyboard, get_content_keyboard, BUSINESS_TYPES
from handlers.content import handle_content_generation
def show_main_menu(user_id, bot):
"""Показывает главное меню"""
user = get_user(user_id)
if user:
bot.send_message(
user_id,
"🏠 Главное меню\n\nВыбери действие:",
reply_markup=get_main_menu_keyboard()
)
else:
bot.send_message(
user_id,
"❌ Ты не зарегистрирован. Напиши /start",
reply_markup=None
)
def handle_menu_choice(message, bot):
"""Обрабатывает выбор в главном меню"""
user_id = message.from_user.id
text = message.text
if text == "📋 Мой профиль":
show_profile(message, bot)
return True
elif text == "✏️ Обновить описание":
# Запускаем процесс обновления описания
from handlers.registration import user_data
user_data[user_id] = {'step': 'edit_description'}
bot.send_message(
user_id,
"📝 Напиши новое описание своего бизнеса:",
reply_markup=None
)
return True
elif text == "📊 Статистика":
show_stats(message, bot)
return True
elif text == "💡 Предложить контент":
# Показываем выбор платформы для контента
bot.send_message(
user_id,
"📱 Для какой соцсети нужен контент?",
reply_markup=get_content_keyboard()
)
return True
elif text == "⚙️ Настройки":
bot.send_message(
user_id,
"⚙️ Настройки:",
reply_markup=get_settings_keyboard()
)
return True
# Обработка кнопок настроек
elif text == "🔔 Включить уведомления":
bot.send_message(user_id, "✅ Уведомления включены!")
return True
elif text == "🔕 Выключить уведомления":
bot.send_message(user_id, "🔕 Уведомления выключены!")
return True
elif text == "📝 Сменить тему бизнеса":
bot.send_message(
user_id,
"Напиши новое описание бизнеса:",
reply_markup=None
)
return True
elif text == "⬅️ Назад в меню":
show_main_menu(user_id, bot)
return True
# Обработка выбора платформы для контента
elif text in ["📝 Пост для Instagram", "💼 Пост для LinkedIn",
"📱 Пост для Telegram", "🧵 Пост для Twitter/X",
"🎯 Рекламный пост"]:
handle_content_generation(message, bot, text)
return True
return False
def show_profile(message, bot):
"""Показывает профиль пользователя"""
user_id = message.from_user.id
user = get_user(user_id)
if not user:
bot.send_message(user_id, "❌ Ты не зарегистрирован. Напиши /start")
return
business_name = BUSINESS_TYPES.get(str(user[4]), {}).get('name', 'Не указан')
profile_text = f"""
📋 **ТВОЙ ПРОФИЛЬ**
━━━━━━━━━━━━━━━━━
👤 **Имя:** {user[2]}
📱 **Телефон:** {user[3]}
🏢 **Вид бизнеса:** {business_name}
📝 **Описание:**
{user[5]}
━━━━━━━━━━━━━━━━━
💡 Хочешь обновить описание? Нажми "✏️ Обновить описание"
"""
bot.send_message(user_id, profile_text, parse_mode='Markdown')
show_main_menu(user_id, bot)
def show_stats(message, bot):
"""Показывает статистику"""
user_id = message.from_user.id
user = get_user(user_id)
if not user:
bot.send_message(user_id, "❌ Ты не зарегистрирован. Напиши /start")
return
stats_text = f"""
📊 **СТАТИСТИКА**
👤 Ты зарегистрирован как предприниматель
📋 Тип: {BUSINESS_TYPES.get(str(user[4]), {}).get('name', 'Не указан')}
📝 Описание: {user[5][:50]}...
💡 Совет: Регулярно обновляй информацию о бизнесе,
чтобы я мог давать тебе точные рекомендации!
"""
bot.send_message(user_id, stats_text, parse_mode='Markdown')
show_main_menu(user_id, bot)
+106
View File
@@ -0,0 +1,106 @@
from handlers.menu import show_main_menu
from keyboards.reply_keyboards import get_phone_keyboard, get_business_types_keyboard, BUSINESS_TYPES
from database import get_user, save_user
# Хранилище для временных данных пользователей
user_data = {}
def process_registration(message, bot):
"""Обработка регистрации"""
user_id = message.from_user.id
text = message.text
step = user_data[user_id].get('step', 1)
if step == 1:
# Сохраняем имя
user_data[user_id]['name'] = text
user_data[user_id]['step'] = 2
bot.send_message(
user_id,
f"👋 Приятно познакомиться, {text}!\n\n"
"📱 Теперь отправь мне свой номер телефона.\n"
"Нажми на кнопку ниже 👇",
reply_markup=get_phone_keyboard()
)
elif step == 2:
# Сохраняем телефон
if message.contact:
phone = message.contact.phone_number
else:
phone = text
user_data[user_id]['phone'] = phone
user_data[user_id]['step'] = 3
bot.send_message(
user_id,
"📋 Выбери свой вид предпринимательства:",
reply_markup=get_business_types_keyboard()
)
elif step == 3:
# Проверяем выбор вида бизнеса
selected_type = None
for key, value in BUSINESS_TYPES.items():
if text == f"{value['emoji']} {key}. {value['name']}":
selected_type = int(key)
break
if not selected_type:
bot.send_message(
user_id,
"❌ Пожалуйста, выбери вид бизнеса из кнопок ниже:",
reply_markup=get_business_types_keyboard()
)
return
user_data[user_id]['business_type'] = selected_type
user_data[user_id]['step'] = 4
bot.send_message(
user_id,
f"✅ Отлично! Ты выбрал: {BUSINESS_TYPES[str(selected_type)]['name']}\n\n"
"📝 Теперь расскажи немного о своем бизнесе:\n"
"(Чем занимаешься? Сколько лет на рынке? Какие цели?)",
reply_markup=None
)
elif step == 4:
# Сохраняем описание
description = text
save_user(
user_id,
user_data[user_id]['name'],
user_data[user_id]['phone'],
user_data[user_id]['business_type'],
description
)
# Сохраняем вид бизнеса для дальнейшего использования
business_type_name = BUSINESS_TYPES[str(user_data[user_id]['business_type'])]['name']
# Очищаем временные данные
del user_data[user_id]
welcome_text = f"""
🎉 ПОЗДРАВЛЯЮ! РЕГИСТРАЦИЯ ЗАВЕРШЕНА!
✅ Ты зарегистрирован как предприниматель!
📋 Тип бизнеса: {business_type_name}
💡 Теперь я буду помогать тебе:
• Генерировать контент для соцсетей
• Давать советы по бизнесу
• Анализировать твою нишу
Нажми «💡 Предложить контент» в меню! 👇
"""
bot.send_message(user_id, welcome_text)
show_main_menu(user_id, bot)
def is_in_registration(user_id):
"""Проверяет, находится ли пользователь в процессе регистрации"""
return user_id in user_data