🔒 ЗАЩИТА ОТ СПАМА В ОБЩИЙ ЧАТ
✅ Все команды теперь работают ТОЛЬКО В ЛИЧКЕ: - /start, /help - только в личке - Все кнопки меню - только в личке - Админ-команды - только в личке (уже было) 📝 Что будет если написать в общем чате: '💡 Бот работает только в личных сообщениях! Нажмите на имя бота сверху и напишите /start в личке' 🎯 Преимущества: - Нет спама в общем чате - Все диалоги конфиденциальны - Жильцы общаются с ботом в личке - Админы управляют через личку 💡 Исключения: - Мониторинг сообщений (анти-мат, анти-спам) - Детект шпионов - Рейтинги активности - Эти функции работают в чате но не спам! Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
parent
8a41de9ddb
commit
5adb3d7818
1 changed files with 33 additions and 5 deletions
|
|
@ -22,7 +22,16 @@ router = Router()
|
|||
|
||||
@router.message(CommandStart())
|
||||
async def cmd_start(message: Message):
|
||||
"""Команда /start"""
|
||||
"""Команда /start (ТОЛЬКО В ЛИЧКЕ!)"""
|
||||
# Проверяем что это личка
|
||||
if message.chat.type != 'private':
|
||||
await message.answer(
|
||||
'💡 <b>Бот работает только в личных сообщениях!</b>\n\n'
|
||||
'Нажмите на имя бота сверху и напишите /start в личке',
|
||||
parse_mode='HTML'
|
||||
)
|
||||
return
|
||||
|
||||
user_id = message.from_user.id
|
||||
|
||||
async with AsyncSessionLocal() as session:
|
||||
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Reference in a new issue