fix: Fix chat message broadcasting to all users
All checks were successful
continuous-integration/drone/push Build is passing

- Fixed get_all_active_users() to broadcast to ALL users regardless of registration status
- Merged duplicate text message handlers (check_exit_keywords and handle_text_message)
- Added detailed logging for chat message broadcasting
- Now users can receive messages in chat without full registration

Resolves: Messages not being delivered to unregistered users in chat
This commit is contained in:
2026-02-17 01:03:36 +09:00
parent 8eca76b844
commit 6b2e915452
4 changed files with 471 additions and 332 deletions

View File

@@ -128,12 +128,6 @@ def get_admin_main_keyboard() -> InlineKeyboardMarkup:
def get_lottery_management_keyboard() -> InlineKeyboardMarkup:
"""Клавиатура управления розыгрышами"""
buttons = [
<<<<<<< HEAD
[InlineKeyboardButton(text=" Создать розыгрыш", callback_data="admin_create_lottery")],
[InlineKeyboardButton(text="<EFBFBD> Список всех розыгрышей", callback_data="admin_list_all_lotteries")],
[InlineKeyboardButton(text="🎭 Настройка отображения победителей", callback_data="admin_winner_display_settings")],
[InlineKeyboardButton(text="🔙 Назад", callback_data="admin_panel")]
=======
[InlineKeyboardButton(text="✨ Создать", callback_data="admin_create_lottery"),
InlineKeyboardButton(text="✏️ Редактировать", callback_data="admin_edit_lottery")],
[InlineKeyboardButton(text="📜 Список всех", callback_data="admin_list_all_lotteries")],
@@ -141,7 +135,6 @@ def get_lottery_management_keyboard() -> InlineKeyboardMarkup:
[InlineKeyboardButton(text="✅ Завершить", callback_data="admin_finish_lottery"),
InlineKeyboardButton(text="🗑️ Удалить", callback_data="admin_delete_lottery")],
[InlineKeyboardButton(text="◀️ Назад", callback_data="admin_panel")]
>>>>>>> v2_functions
]
return InlineKeyboardMarkup(inline_keyboard=buttons)
@@ -164,19 +157,12 @@ def get_participant_management_keyboard() -> InlineKeyboardMarkup:
def get_winner_management_keyboard() -> InlineKeyboardMarkup:
"""Клавиатура управления победителями"""
buttons = [
<<<<<<< HEAD
[InlineKeyboardButton(text="👑 Установить победителя", callback_data="admin_set_manual_winner")],
[InlineKeyboardButton(text="📝 Изменить победителя", callback_data="admin_edit_winner")],
[InlineKeyboardButton(text="❌ Удалить победителя", callback_data="admin_remove_winner")],
[InlineKeyboardButton(text=" Назад", callback_data="admin_panel")]
=======
[InlineKeyboardButton(text="🏆 Установить вручную", callback_data="admin_set_manual_winner")],
[InlineKeyboardButton(text="✏️ Изменить", callback_data="admin_edit_winner"),
InlineKeyboardButton(text="❌ Удалить", callback_data="admin_remove_winner")],
[InlineKeyboardButton(text="📜 Список победителей", callback_data="admin_list_winners")],
[InlineKeyboardButton(text="👁️ Настройка отображения", callback_data="admin_winner_display_settings")],
[InlineKeyboardButton(text="◀️ Назад", callback_data="admin_panel")]
>>>>>>> v2_functions
]
return InlineKeyboardMarkup(inline_keyboard=buttons)
@@ -591,30 +577,14 @@ async def show_lottery_detail(callback: CallbackQuery):
if not lottery.is_completed:
# Розыгрыш ещё не проведён
buttons.extend([
<<<<<<< HEAD
[InlineKeyboardButton(text="🎲 Провести розыгрыш", callback_data=f"admin_conduct_{lottery_id}")],
[InlineKeyboardButton(text="👑 Установить победителя", callback_data=f"admin_set_winner_{lottery_id}")],
])
else:
# Розыгрыш завершён - показываем управление победителями
buttons.extend([
[InlineKeyboardButton(text="✅ Проверка победителей", callback_data=f"admin_check_winners_{lottery_id}")],
[InlineKeyboardButton(text="🔄 Провести повторно", callback_data=f"admin_redraw_{lottery_id}")],
=======
[InlineKeyboardButton(text="🏆 Установить победителя", callback_data=f"admin_set_winner_{lottery_id}")],
[InlineKeyboardButton(text="🎰 Провести розыгрыш", callback_data=f"admin_conduct_{lottery_id}")],
>>>>>>> v2_functions
])
buttons.extend([
[InlineKeyboardButton(text="📝 Редактировать", callback_data=f"admin_edit_{lottery_id}")],
[InlineKeyboardButton(text="👥 Участники", callback_data=f"admin_participants_{lottery_id}")],
<<<<<<< HEAD
[InlineKeyboardButton(text="🗑️ Удалить", callback_data=f"admin_del_lottery_{lottery_id}")],
[InlineKeyboardButton(text="🔙 К списку", callback_data="admin_list_all_lotteries")]
=======
[InlineKeyboardButton(text="◀️ К списку", callback_data="admin_list_all_lotteries")]
>>>>>>> v2_functions
])
await callback.message.edit_text(text, reply_markup=InlineKeyboardMarkup(inline_keyboard=buttons))
@@ -3690,7 +3660,6 @@ async def show_admin_settings(callback: CallbackQuery):
buttons = [
[InlineKeyboardButton(text="💿 Экспорт пользователей", callback_data="admin_export_users")],
[InlineKeyboardButton(text="⬆️ Импорт пользователей", callback_data="admin_import_users")],
[InlineKeyboardButton(text="💿 Экспорт данных", callback_data="admin_export_data")],
[InlineKeyboardButton(text="🧹 Очистка старых данных", callback_data="admin_cleanup")],
[InlineKeyboardButton(text="📜 Системная информация", callback_data="admin_system_info")],
[InlineKeyboardButton(text="◀️ Назад", callback_data="admin_panel")]