diff options
| author | Igor Tolmachov <me@igorek.dev> | 2022-12-05 22:29:41 +0900 |
|---|---|---|
| committer | Igor Tolmachov <me@igorek.dev> | 2022-12-05 22:29:41 +0900 |
| commit | 0de7969d30e3e57d681afdfcadd245f6988a0342 (patch) | |
| tree | bc0957e9208f51354aa2330dc20a090b7f680823 /handlers/member.py | |
| parent | 0d5cab62b0d077ad7946b64a534e3914f1cc79dd (diff) | |
| download | karpov_ai_bot-0de7969d30e3e57d681afdfcadd245f6988a0342.tar.gz karpov_ai_bot-0de7969d30e3e57d681afdfcadd245f6988a0342.zip | |
2.1
Diffstat (limited to 'handlers/member.py')
| -rw-r--r-- | handlers/member.py | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/handlers/member.py b/handlers/member.py index 830351d..b228f6c 100644 --- a/handlers/member.py +++ b/handlers/member.py | |||
| @@ -1,17 +1,22 @@ | |||
| 1 | from aiogram import types as t | 1 | from aiogram import types as t |
| 2 | 2 | ||
| 3 | from shared.instances import bot, config, dp | 3 | from shared.instances import bot, chats, dp |
| 4 | from utils import filters as f | 4 | from utils import filters as f |
| 5 | 5 | ||
| 6 | polls: dict[int, int] = {} | ||
| 7 | |||
| 6 | 8 | ||
| 7 | @dp.chat_join_request_handler() | 9 | @dp.chat_join_request_handler() |
| 8 | async def new_member(cjr: t.ChatJoinRequest) -> None: | 10 | async def new_member(cjr: t.ChatJoinRequest) -> None: |
| 11 | if cjr.from_user.id in polls: | ||
| 12 | return | ||
| 13 | |||
| 9 | reply = await bot.send_message( | 14 | reply = await bot.send_message( |
| 10 | cjr.chat.id, | 15 | cjr.chat.id, |
| 11 | f'<a href="tg://user?id={cjr.from_user.id}">{cjr.from_user.mention}</a> хочет в чат', | 16 | f'<a href="tg://user?id={cjr.from_user.id}">{cjr.from_user.mention}</a> хочет в чат', |
| 12 | parse_mode=t.ParseMode.HTML, | 17 | parse_mode=t.ParseMode.HTML, |
| 13 | ) | 18 | ) |
| 14 | await reply.reply_poll( | 19 | poll = await reply.reply_poll( |
| 15 | "Пускаем ?", | 20 | "Пускаем ?", |
| 16 | [ | 21 | [ |
| 17 | "Да", | 22 | "Да", |
| @@ -28,6 +33,18 @@ async def new_member(cjr: t.ChatJoinRequest) -> None: | |||
| 28 | await bot.send_message( | 33 | await bot.send_message( |
| 29 | cjr.from_user.id, "Заявка на вступление в группу будет вскоре рассмотрена" | 34 | cjr.from_user.id, "Заявка на вступление в группу будет вскоре рассмотрена" |
| 30 | ) | 35 | ) |
| 36 | polls[cjr.from_user.id] = poll.message_id | ||
| 37 | |||
| 38 | |||
| 39 | @dp.chat_member_handler(f.user.new_user) | ||
| 40 | async def admin_accept_member(cmu: t.ChatMemberUpdated) -> None: | ||
| 41 | user_id = cmu.new_chat_member.user.id | ||
| 42 | if user_id in polls: | ||
| 43 | polls.pop(user_id) | ||
| 44 | await bot.send_message( | ||
| 45 | user_id, | ||
| 46 | "Ваша заявка на вступление принята, добро пожаловать в группу", | ||
| 47 | ) | ||
| 31 | 48 | ||
| 32 | 49 | ||
| 33 | @dp.callback_query_handler( | 50 | @dp.callback_query_handler( |
| @@ -38,7 +55,7 @@ async def check_poll(clb: t.CallbackQuery) -> None: | |||
| 38 | msg = clb.message | 55 | msg = clb.message |
| 39 | data = clb.data.split(":") | 56 | data = clb.data.split(":") |
| 40 | user_id = int(data[1]) | 57 | user_id = int(data[1]) |
| 41 | min_answers = config.get_config(msg.chat.id).members.answer_count | 58 | min_answers = chats.get(msg.chat.id).members.answer_count |
| 42 | 59 | ||
| 43 | if poll.total_voter_count < min_answers: | 60 | if poll.total_voter_count < min_answers: |
| 44 | await clb.answer( | 61 | await clb.answer( |
