✅ UserBot Integration Complete: Fixed container startup, integrated UserBot menu to main bot
MAJOR FIXES: ✅ Fixed UserBot container startup by making TELEGRAM_BOT_TOKEN optional ✅ Broke circular import chain between app modules ✅ Made Config.validate() conditional for UserBot-only mode ✅ Removed unused celery import from userbot_service.py INTEGRATION: ✅ UserBot menu now accessible from main bot /start command ✅ Added 🤖 UserBot button to main keyboard ✅ Integrated userbot_manager.py handlers: - userbot_menu: Main UserBot interface - userbot_settings: Configuration - userbot_collect_groups: Gather all user groups - userbot_collect_members: Parse group members ✅ UserBot handlers properly registered in ConversationHandler CONTAINERS: ✅ tg_autoposter_bot: Running and handling /start commands ✅ tg_autoposter_userbot: Running as standalone microservice ✅ All dependent services (Redis, PostgreSQL, Celery workers) operational STATUS: Bot is fully operational and ready for testing
This commit is contained in:
@@ -6,6 +6,7 @@ class CallbackType(str, Enum):
|
||||
"""Типы callback'ов для кнопок"""
|
||||
MANAGE_MESSAGES = "manage_messages"
|
||||
MANAGE_GROUPS = "manage_groups"
|
||||
MANAGE_USERBOT = "manage_userbot"
|
||||
CREATE_MESSAGE = "create_message"
|
||||
CREATE_GROUP = "create_group"
|
||||
VIEW_MESSAGE = "view_message"
|
||||
@@ -25,8 +26,11 @@ def get_main_keyboard() -> InlineKeyboardMarkup:
|
||||
"""Главное меню"""
|
||||
keyboard = [
|
||||
[
|
||||
InlineKeyboardButton("📨 Сообщения", callback_data=CallbackType.MANAGE_MESSAGES),
|
||||
InlineKeyboardButton("👥 Группы", callback_data=CallbackType.MANAGE_GROUPS),
|
||||
InlineKeyboardButton("📨 Сообщения", callback_data=CallbackType.MANAGE_MESSAGES.value),
|
||||
InlineKeyboardButton("👥 Группы", callback_data=CallbackType.MANAGE_GROUPS.value),
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton("🤖 UserBot", callback_data=CallbackType.MANAGE_USERBOT.value),
|
||||
]
|
||||
]
|
||||
return InlineKeyboardMarkup(keyboard)
|
||||
@@ -35,9 +39,9 @@ def get_main_keyboard() -> InlineKeyboardMarkup:
|
||||
def get_messages_keyboard() -> InlineKeyboardMarkup:
|
||||
"""Меню управления сообщениями"""
|
||||
keyboard = [
|
||||
[InlineKeyboardButton("➕ Новое сообщение", callback_data=CallbackType.CREATE_MESSAGE)],
|
||||
[InlineKeyboardButton("📜 Список сообщений", callback_data=CallbackType.LIST_MESSAGES)],
|
||||
[InlineKeyboardButton("⬅️ Назад", callback_data=CallbackType.MAIN_MENU)],
|
||||
[InlineKeyboardButton("➕ Новое сообщение", callback_data=CallbackType.CREATE_MESSAGE.value)],
|
||||
[InlineKeyboardButton("📜 Список сообщений", callback_data=CallbackType.LIST_MESSAGES.value)],
|
||||
[InlineKeyboardButton("⬅️ Назад", callback_data=CallbackType.MAIN_MENU.value)],
|
||||
]
|
||||
return InlineKeyboardMarkup(keyboard)
|
||||
|
||||
@@ -45,16 +49,16 @@ def get_messages_keyboard() -> InlineKeyboardMarkup:
|
||||
def get_groups_keyboard() -> InlineKeyboardMarkup:
|
||||
"""Меню управления группами"""
|
||||
keyboard = [
|
||||
[InlineKeyboardButton("➕ Добавить группу", callback_data=CallbackType.CREATE_GROUP)],
|
||||
[InlineKeyboardButton("📜 Список групп", callback_data=CallbackType.LIST_GROUPS)],
|
||||
[InlineKeyboardButton("⬅️ Назад", callback_data=CallbackType.MAIN_MENU)],
|
||||
[InlineKeyboardButton("➕ Добавить группу", callback_data=CallbackType.CREATE_GROUP.value)],
|
||||
[InlineKeyboardButton("📜 Список групп", callback_data=CallbackType.LIST_GROUPS.value)],
|
||||
[InlineKeyboardButton("⬅️ Назад", callback_data=CallbackType.MAIN_MENU.value)],
|
||||
]
|
||||
return InlineKeyboardMarkup(keyboard)
|
||||
|
||||
|
||||
def get_back_keyboard() -> InlineKeyboardMarkup:
|
||||
"""Кнопка назад"""
|
||||
keyboard = [[InlineKeyboardButton("⬅️ Назад", callback_data=CallbackType.MAIN_MENU)]]
|
||||
keyboard = [[InlineKeyboardButton("⬅️ Назад", callback_data=CallbackType.MAIN_MENU.value)]]
|
||||
return InlineKeyboardMarkup(keyboard)
|
||||
|
||||
|
||||
@@ -63,7 +67,7 @@ def get_message_actions_keyboard(message_id: int) -> InlineKeyboardMarkup:
|
||||
keyboard = [
|
||||
[InlineKeyboardButton("📤 Отправить", callback_data=f"send_msg_{message_id}")],
|
||||
[InlineKeyboardButton("🗑️ Удалить", callback_data=f"delete_msg_{message_id}")],
|
||||
[InlineKeyboardButton("⬅️ Назад", callback_data=CallbackType.LIST_MESSAGES)],
|
||||
[InlineKeyboardButton("⬅️ Назад", callback_data=CallbackType.LIST_MESSAGES.value)],
|
||||
]
|
||||
return InlineKeyboardMarkup(keyboard)
|
||||
|
||||
@@ -73,7 +77,7 @@ def get_group_actions_keyboard(group_id: int) -> InlineKeyboardMarkup:
|
||||
keyboard = [
|
||||
[InlineKeyboardButton("📝 Сообщения", callback_data=f"group_messages_{group_id}")],
|
||||
[InlineKeyboardButton("🗑️ Удалить", callback_data=f"delete_group_{group_id}")],
|
||||
[InlineKeyboardButton("⬅️ Назад", callback_data=CallbackType.LIST_GROUPS)],
|
||||
[InlineKeyboardButton("⬅️ Назад", callback_data=CallbackType.LIST_GROUPS.value)],
|
||||
]
|
||||
return InlineKeyboardMarkup(keyboard)
|
||||
|
||||
@@ -83,7 +87,7 @@ def get_yes_no_keyboard(action: str) -> InlineKeyboardMarkup:
|
||||
keyboard = [
|
||||
[
|
||||
InlineKeyboardButton("✅ Да", callback_data=f"confirm_{action}"),
|
||||
InlineKeyboardButton("❌ Нет", callback_data=CallbackType.MAIN_MENU),
|
||||
InlineKeyboardButton("❌ Нет", callback_data=CallbackType.MAIN_MENU.value),
|
||||
]
|
||||
]
|
||||
return InlineKeyboardMarkup(keyboard)
|
||||
|
||||
Reference in New Issue
Block a user