diff options
| author | Igor Tolmachov <me@igorek.dev> | 2022-04-20 02:00:20 +0900 |
|---|---|---|
| committer | Igor Tolmachov <me@igorek.dev> | 2022-04-20 02:00:20 +0900 |
| commit | 6ef5acdce17b95ed5166a32aa479eae0cb7f8cad (patch) | |
| tree | c3baca11b8eb0f8ff62e9125f448fe13e71c7ec3 /handlers/member.py | |
| parent | e2ec80ca3d1cb6c7329c21d4934245e26ec9e74a (diff) | |
| download | karpov_ai_bot-6ef5acdce17b95ed5166a32aa479eae0cb7f8cad.tar.gz karpov_ai_bot-6ef5acdce17b95ed5166a32aa479eae0cb7f8cad.zip | |
Рефакторинг
Добавлена система заявок в группу
Diffstat (limited to 'handlers/member.py')
| -rw-r--r-- | handlers/member.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/handlers/member.py b/handlers/member.py new file mode 100644 index 0000000..f915feb --- /dev/null +++ b/handlers/member.py | |||
| @@ -0,0 +1,66 @@ | |||
| 1 | from asyncio import sleep | ||
| 2 | |||
| 3 | from aiogram import types as t | ||
| 4 | |||
| 5 | from shared.instances import bot, dp | ||
| 6 | from utils import filters as f | ||
| 7 | |||
| 8 | unmute = t.ChatPermissions(*[True] * 8) | ||
| 9 | mute = t.ChatPermissions(*[False] * 8) | ||
| 10 | |||
| 11 | |||
| 12 | @dp.chat_member_handler(f.user.add_member) | ||
| 13 | async def запрашиваем_пропуск(upd: t.ChatMemberUpdated): | ||
| 14 | pass_user_markup = t.InlineKeyboardMarkup().add( | ||
| 15 | t.InlineKeyboardButton( | ||
| 16 | "Да", callback_data=f"pass_user@{upd.new_chat_member.user.id}" | ||
| 17 | ), | ||
| 18 | t.InlineKeyboardButton( | ||
| 19 | "Нет", callback_data=f"kick_user@{upd.new_chat_member.user.id}" | ||
| 20 | ), | ||
| 21 | ) | ||
| 22 | await upd.chat.restrict(upd.new_chat_member.user.id, mute) | ||
| 23 | await bot.send_message( | ||
| 24 | upd.chat.id, | ||
| 25 | f'Это наш <a href="tg://user?id={upd.new_chat_member.user.id}">чел</a> ?', | ||
| 26 | parse_mode=t.ParseMode.HTML, | ||
| 27 | reply_markup=pass_user_markup, | ||
| 28 | ) | ||
| 29 | |||
| 30 | |||
| 31 | @dp.callback_query_handler( | ||
| 32 | f.message.is_chat, lambda clb: clb.data.split("@")[0] == "pass_user" | ||
| 33 | ) | ||
| 34 | async def пропустить(clb: t.CallbackQuery): | ||
| 35 | member = await clb.message.chat.get_member(clb.from_user.id) | ||
| 36 | if not member.is_chat_admin(): | ||
| 37 | await clb.answer("Ты не админ") | ||
| 38 | return | ||
| 39 | else: | ||
| 40 | await clb.message.chat.restrict(int(clb.data.split("@")[1]), unmute) | ||
| 41 | |||
| 42 | await clb.message.delete() | ||
| 43 | await clb.message.answer( | ||
| 44 | f'Добро пожаловать <a href="tg://user?id={int(clb.data.split("@")[1])}">ананасер</a> (<a href="tg://user?id={clb.from_user.id}">принят</a>)', | ||
| 45 | parse_mode=t.ParseMode.HTML, | ||
| 46 | ) | ||
| 47 | |||
| 48 | |||
| 49 | @dp.callback_query_handler( | ||
| 50 | f.message.is_chat, lambda clb: clb.data.split("@")[0] == "kick_user" | ||
| 51 | ) | ||
| 52 | async def выкинуть(clb: t.CallbackQuery): | ||
| 53 | member = await clb.message.chat.get_member(clb.from_user.id) | ||
| 54 | await clb.message.delete() | ||
| 55 | await clb.message.answer( | ||
| 56 | f'Эта группа для <a href="tg://user?id={clb.from_user.id}">крутых</a>', | ||
| 57 | parse_mode=t.ParseMode.HTML, | ||
| 58 | ) | ||
| 59 | |||
| 60 | await sleep(3) | ||
| 61 | |||
| 62 | if not member.is_chat_admin(): | ||
| 63 | await clb.answer("Ты не админ") | ||
| 64 | return | ||
| 65 | else: | ||
| 66 | await clb.message.chat.unban(int(clb.data.split("@")[1]), False) | ||
