aboutsummaryrefslogtreecommitdiff
path: root/handlers/member.py
diff options
context:
space:
mode:
Diffstat (limited to 'handlers/member.py')
-rw-r--r--handlers/member.py66
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 @@
1from asyncio import sleep
2
3from aiogram import types as t
4
5from shared.instances import bot, dp
6from utils import filters as f
7
8unmute = t.ChatPermissions(*[True] * 8)
9mute = t.ChatPermissions(*[False] * 8)
10
11
12@dp.chat_member_handler(f.user.add_member)
13async 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)
34async 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)
52async 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)