v1.25 Приветствие новых участников

🎉 ПРИВЕТСТВИЕ:
• Бот встречает новых участников
• Отправляет привет в личку
• Рассказывает про ЖК Ленком 37
• Инструкция по верификации
• Полезные команды

📁 ФАЙЛЫ:
• handlers/users.py: welcome_new_member
• router.chat_member: LEFT → MEMBER

🚀 АКТИВАЦИЯ:
• QR код на объявлениях
• Новые жильцы в чате
• Автоматическое приветствие

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
Admin 2026-03-13 15:34:46 +04:00
parent 377b061ac9
commit b7d9508e56

View file

@ -5,8 +5,9 @@
import logging import logging
import json import json
from aiogram import Router, F from aiogram import Router, F
from aiogram.types import Message, CallbackQuery from aiogram.types import Message, CallbackQuery, ChatMemberUpdated, BotCommand
from aiogram.filters import Command, CommandStart from aiogram.filters import Command, CommandStart, ChatMemberFilter, MEMBER
from aiogram.enums import ChatMemberStatus
from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import select from sqlalchemy import select
from database.db import AsyncSessionLocal from database.db import AsyncSessionLocal
@ -124,7 +125,7 @@ async def cmd_start(message: Message):
parse_mode='HTML' parse_mode='HTML'
) )
else: else:
# Неверифицированный — подробная инструкция (БЕЗ <font>!) # Неверифицированный — подробная инструкция
verify_text = f'''🔴 <b>ТРЕБУЕТСЯ ВЕРИФИКАЦИЯ</b> verify_text = f'''🔴 <b>ТРЕБУЕТСЯ ВЕРИФИКАЦИЯ</b>
👋 Здравствуйте, {message.from_user.first_name}! 👋 Здравствуйте, {message.from_user.first_name}!
@ -1118,3 +1119,63 @@ async def cmd_edit_user(message: Message):
'\n'.join(f'{item}' for item in updated), '\n'.join(f'{item}' for item in updated),
parse_mode='HTML' parse_mode='HTML'
) )
# =============================================================================
# ПРИВЕТСТВИЕ НОВЫХ УЧАСТНИКОВ
# =============================================================================
@router.chat_member(ChatMemberFilter(ChatMemberStatus.LEFT, ChatMemberStatus.MEMBER))
async def welcome_new_member(event: ChatMemberUpdated, bot: Bot):
"""Приветствие нового участника группы"""
from aiogram.exceptions import TelegramForbiddenError
user = event.from_user
chat = event.chat
logger.info(f'Новый участник в чате {chat.title}: {user.first_name} (@{user.username})')
# Отправляем привет в личку
try:
bot_username = (await bot.get_me()).username
welcome_text = f'''🏠 <b>Добро пожаловать в чат ЖК "Ленком 37"!</b>
👋 Привет, {user.first_name}!
Я домовой бот нашего дома.
📋 <b>Что здесь происходит:</b>
Общение соседей
Объявления и новости
Вопросы по ЖКХ
Взаимопомощь
<b>Чтобы получить полный доступ:</b>
1. Напиши мне в личку: @{bot_username}
2. Отправь номер квартиры (например: <code>45</code>)
3. Дождись подтверждения админа
📞 <b>Полезные команды:</b>
/телефон Экстренные службы
/мастера Сантехники, электрики
/участковый Контакты полиции
/график Отключения воды/света
/правила Правила чата
💡 <b>Нужна помощь?</b>
Напишите администратору чата.
🎉 <b>Рады видеть вас в нашем сообществе!</b>'''
await bot.send_message(
chat_id=user.id,
text=welcome_text,
parse_mode='HTML'
)
logger.info(f'Приветствие отправлено {user.id}')
except TelegramForbiddenError:
logger.warning(f'Не удалось отправить приветствие {user.id} (закрыт от ботов)')
except Exception as e:
logger.error(f'Ошибка при отправке приветствия: {e}')