diff --git a/handlers/users.py b/handlers/users.py
index df87c30..f8232a1 100644
--- a/handlers/users.py
+++ b/handlers/users.py
@@ -22,15 +22,24 @@ router = Router()
@router.message(CommandStart())
async def cmd_start(message: Message):
- """Команда /start"""
- user_id = message.from_user.id
+ """Команда /start (ТОЛЬКО В ЛИЧКЕ!)"""
+ # Проверяем что это личка
+ if message.chat.type != 'private':
+ await message.answer(
+ '💡 Бот работает только в личных сообщениях!\n\n'
+ 'Нажмите на имя бота сверху и напишите /start в личке',
+ parse_mode='HTML'
+ )
+ return
+ user_id = message.from_user.id
+
async with AsyncSessionLocal() as session:
# Проверяем, есть ли пользователь в БД
stmt = select(User).where(User.user_id == user_id)
result = await session.execute(stmt)
user = result.scalar_one_or_none()
-
+
if not user:
# Создаём нового пользователя
user = User(
@@ -41,7 +50,7 @@ async def cmd_start(message: Message):
)
session.add(user)
await session.commit()
-
+
welcome_text = (
f'🏠 Добро пожаловать, {message.from_user.first_name}!\n\n'
f'Я — домовой бот нашего дома.\n\n'
@@ -55,7 +64,7 @@ async def cmd_start(message: Message):
user.first_name = message.from_user.first_name
user.last_name = message.from_user.last_name
await session.commit()
-
+
if user.verified:
await message.answer(
f'👋 Здравствуйте, {message.from_user.first_name}!\n\n'
@@ -387,9 +396,20 @@ from sqlalchemy import desc
_thank_pages: dict[int, dict] = {}
+# Проверка что сообщение в личке
+def check_private_chat(callback: CallbackQuery) -> bool:
+ """Проверяет что callback из лички"""
+ if callback.message.chat.type != 'private':
+ callback.answer('💡 Это работает только в личных сообщениях!', show_alert=True)
+ return False
+ return True
+
+
@router.callback_query(F.data == 'achievements')
async def cb_achievements_menu(callback: CallbackQuery):
"""Кнопка Достижения"""
+ if not check_private_chat(callback):
+ return
await callback.answer()
# Перенаправляем на команду /achievements
from handlers.achievements import cmd_achievements
@@ -399,6 +419,8 @@ async def cb_achievements_menu(callback: CallbackQuery):
@router.callback_query(F.data == 'events')
async def cb_events_menu(callback: CallbackQuery):
"""Кнопка События"""
+ if not check_private_chat(callback):
+ return
await callback.answer()
# Перенаправляем на команду /events
from handlers.events import cmd_events
@@ -408,6 +430,8 @@ async def cb_events_menu(callback: CallbackQuery):
@router.callback_query(F.data == 'payments')
async def cb_payments_menu(callback: CallbackQuery):
"""Кнопка Платежи"""
+ if not check_private_chat(callback):
+ return
await callback.answer()
# Перенаправляем на команду /payments
from handlers.payments import cmd_payments
@@ -417,6 +441,8 @@ async def cb_payments_menu(callback: CallbackQuery):
@router.callback_query(F.data == 'polls')
async def cb_polls_menu(callback: CallbackQuery):
"""Кнопка Опросы"""
+ if not check_private_chat(callback):
+ return
await callback.answer()
# Перенаправляем на команду /polls
from handlers.polls import cmd_polls
@@ -426,6 +452,8 @@ async def cb_polls_menu(callback: CallbackQuery):
@router.callback_query(F.data == 'thank_user')
async def cb_thank_user_menu(callback: CallbackQuery):
"""Кнопка Поблагодарить - выбор пользователя"""
+ if not check_private_chat(callback):
+ return
await callback.answer()
async with AsyncSessionLocal() as session: