Edit on GitHub

src.handlers.group

Действия в чате

 1"""Действия в чате"""
 2
 3from aiogram import Bot, F, Router
 4from aiogram.filters.chat_member_updated import (ADMINISTRATOR, IS_NOT_MEMBER,
 5                                                 MEMBER,
 6                                                 ChatMemberUpdatedFilter)
 7from aiogram.types import ChatMemberUpdated, Message
 8
 9from core.config import settings
10from core.err import bot_except
11
12router = Router()
13router.my_chat_member.filter(F.chat.type.in_({"group", "supergroup"}))
14router.message.filter(F.chat.type != "private")
15chats_variants = {"group": "группу", "supergroup": "супергруппу"}
16
17
18@router.my_chat_member(
19    ChatMemberUpdatedFilter(member_status_changed=IS_NOT_MEMBER >> ADMINISTRATOR)
20)
21@bot_except
22async def bot_added_as_admin(event: ChatMemberUpdated):
23    """Обработчик события, когда бот добавлен в чат как администратор.
24
25    Args:
26        event (ChatMemberUpdated): Событие, содержащее информацию о изменении статуса участника.
27    """
28    await event.answer(
29        text=f"Привет! Спасибо, что добавили меня в "
30        f'{chats_variants[event.chat.type]} "{event.chat.title}" '
31        f"как администратора. ID чата: {event.chat.id}"
32    )
33
34
35@router.my_chat_member(
36    ChatMemberUpdatedFilter(member_status_changed=IS_NOT_MEMBER >> MEMBER)
37)
38@bot_except
39async def bot_added_as_member(event: ChatMemberUpdated, bot: Bot):
40    """Обработчик события, когда бот добавлен в чат как участник.
41
42    Args:
43        event (ChatMemberUpdated): Событие, содержащее информацию о изменении статуса участника.
44        bot (Bot): Экземпляр бота для выполнения действий.
45    """
46    chat_info = await bot.get_chat(event.chat.id)
47    if chat_info.permissions.can_send_messages:
48        await event.answer(
49            text=f"Привет! Спасибо, что добавили меня в "
50            f'{chats_variants[event.chat.type]} "{event.chat.title}" '
51            f"как обычного участника. ID чата: {event.chat.id}"
52        )
53
54
55@router.chat_member(
56    ChatMemberUpdatedFilter(member_status_changed=IS_NOT_MEMBER >> MEMBER)
57)
58@bot_except
59async def new_members_hi(event: ChatMemberUpdated):
60    """Обработчик события, когда новый участник присоединяется к чату.
61
62    Args:
63        event (ChatMemberUpdated): Событие, содержащее информацию о новом участнике.
64    """
65    await event.answer(
66        f"Добро пожаловать в чат нашего VPN сервиса, {event.new_chat_member.user.first_name}. 🫡\n\n"
67        "Здесь вы можете задавать интересующие вас вопросы, "
68        "общаться с другими клиентами и авторами сервиса, "
69        "а также следить за актуальными новостями и обновлениями сервиса",
70    )
71
72
73@router.message(F.text)
74@bot_except
75async def leave_group(message: Message):
76    """Обработчик текстовых сообщений, который выводит бота из группы.
77
78    Args:
79        message (Message): Сообщение, содержащее текст.
80    """
81    if message.chat.id != settings.BOT_CHAT:
82        await message.chat.leave()
router = <Router '0x7f23dac55310'>
chats_variants = {'group': 'группу', 'supergroup': 'супергруппу'}
@router.my_chat_member(ChatMemberUpdatedFilter(member_status_changed=IS_NOT_MEMBER >> ADMINISTRATOR))
@bot_except
async def bot_added_as_admin(event: aiogram.types.chat_member_updated.ChatMemberUpdated):
19@router.my_chat_member(
20    ChatMemberUpdatedFilter(member_status_changed=IS_NOT_MEMBER >> ADMINISTRATOR)
21)
22@bot_except
23async def bot_added_as_admin(event: ChatMemberUpdated):
24    """Обработчик события, когда бот добавлен в чат как администратор.
25
26    Args:
27        event (ChatMemberUpdated): Событие, содержащее информацию о изменении статуса участника.
28    """
29    await event.answer(
30        text=f"Привет! Спасибо, что добавили меня в "
31        f'{chats_variants[event.chat.type]} "{event.chat.title}" '
32        f"как администратора. ID чата: {event.chat.id}"
33    )

Обработчик события, когда бот добавлен в чат как администратор.

Arguments:
  • event (ChatMemberUpdated): Событие, содержащее информацию о изменении статуса участника.
@router.my_chat_member(ChatMemberUpdatedFilter(member_status_changed=IS_NOT_MEMBER >> MEMBER))
@bot_except
async def bot_added_as_member( event: aiogram.types.chat_member_updated.ChatMemberUpdated, bot: aiogram.client.bot.Bot):
36@router.my_chat_member(
37    ChatMemberUpdatedFilter(member_status_changed=IS_NOT_MEMBER >> MEMBER)
38)
39@bot_except
40async def bot_added_as_member(event: ChatMemberUpdated, bot: Bot):
41    """Обработчик события, когда бот добавлен в чат как участник.
42
43    Args:
44        event (ChatMemberUpdated): Событие, содержащее информацию о изменении статуса участника.
45        bot (Bot): Экземпляр бота для выполнения действий.
46    """
47    chat_info = await bot.get_chat(event.chat.id)
48    if chat_info.permissions.can_send_messages:
49        await event.answer(
50            text=f"Привет! Спасибо, что добавили меня в "
51            f'{chats_variants[event.chat.type]} "{event.chat.title}" '
52            f"как обычного участника. ID чата: {event.chat.id}"
53        )

Обработчик события, когда бот добавлен в чат как участник.

Arguments:
  • event (ChatMemberUpdated): Событие, содержащее информацию о изменении статуса участника.
  • bot (Bot): Экземпляр бота для выполнения действий.
@router.chat_member(ChatMemberUpdatedFilter(member_status_changed=IS_NOT_MEMBER >> MEMBER))
@bot_except
async def new_members_hi(event: aiogram.types.chat_member_updated.ChatMemberUpdated):
56@router.chat_member(
57    ChatMemberUpdatedFilter(member_status_changed=IS_NOT_MEMBER >> MEMBER)
58)
59@bot_except
60async def new_members_hi(event: ChatMemberUpdated):
61    """Обработчик события, когда новый участник присоединяется к чату.
62
63    Args:
64        event (ChatMemberUpdated): Событие, содержащее информацию о новом участнике.
65    """
66    await event.answer(
67        f"Добро пожаловать в чат нашего VPN сервиса, {event.new_chat_member.user.first_name}. 🫡\n\n"
68        "Здесь вы можете задавать интересующие вас вопросы, "
69        "общаться с другими клиентами и авторами сервиса, "
70        "а также следить за актуальными новостями и обновлениями сервиса",
71    )

Обработчик события, когда новый участник присоединяется к чату.

Arguments:
  • event (ChatMemberUpdated): Событие, содержащее информацию о новом участнике.
@router.message(F.text)
@bot_except
async def leave_group(message: aiogram.types.message.Message):
74@router.message(F.text)
75@bot_except
76async def leave_group(message: Message):
77    """Обработчик текстовых сообщений, который выводит бота из группы.
78
79    Args:
80        message (Message): Сообщение, содержащее текст.
81    """
82    if message.chat.id != settings.BOT_CHAT:
83        await message.chat.leave()

Обработчик текстовых сообщений, который выводит бота из группы.

Arguments:
  • message (Message): Сообщение, содержащее текст.