Как сделать, Обработчик кнопки?
Подскажите пожалуйста, нужно сделать, обработчик кнопки, чтобы, снять ограничения в группе, например, если минимум 20 контактов, пригласил, в группу.
Хендлер, при отправке сообщения, удаляет и устанавливает ограничения.
@dp.message_handler(content_types=['text', 'photo', 'video', 'document', 'audio', 'video_note', 'voice', 'animation', 'contact', 'dice', 'location', 'poll', 'sticker', 'venue'])
async def get_handler(message: types.Message, state: FSMContext):
user_id = message.from_user.id
username = message.from_user.username
chat_id = message.chat.id
first_name = message.from_user.first_name
last_name = message.from_user.last_name
name = message.from_user.full_name
ChatMember.status = await bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id)
ChatMemberUpdated.new_chat_member = await bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id)
#print(ChatMemberUpdated)
if not ChatMember.status in ChatMemberUpdated.new_chat_member.user:
keyboard = types.InlineKeyboardMarkup(row_width=1)
checkurl = types.InlineKeyboardButton(text='✅Я добавил(а) контакты', callback_data=f'captcha_member:{user_id}')
keyboard.add(checkurl)
try:
msg = await message.reply(f"Извините! <a href=\"tg://user?id={user_id}\">{name}</a>. \n<b>📢 Вам нужно добавить, 40 человек, прежде чем, Вы сможете, публиковать сообщения, в группе.</b>".format(message.from_user.id), disable_web_page_preview=True, parse_mode='html', reply_markup=keyboard)
asyncio.create_task(delete_message(msg, 180))
await message.delete()
await asyncio.sleep(2)
await bot.restrict_chat_member(message.chat.id, message.from_user.id, ChatPermissions(can_send_messages=False, can_send_media_messages=False, can_send_other_messages=False, can_add_web_page_previews=False, can_send_polls=False, can_pin_messages=False, can_invite_users=True))
except Exception as e:
print(e)
return
Обработчик кнопки, но при добавлении контактов, не, снимает ограничения.
@dp.callback_query_handler(text_startswith='captcha')
#@dp.callback_query_handler(text="captcha")
async def captcha_member(call: types.CallbackQuery):
user_id = str(call.from_user.id)
to_id = call.data.split(':')[1]
chat_id = call.message.chat.id
username = call.from_user.username
name = call.from_user.full_name
new_chat_members = len(call.message.new_chat_members)
ChatMemberMember.status = await bot.get_chat_member(chat_id=call.message.chat.id, user_id=call.from_user.id)
ChatMemberUpdated.new_chat_member = await bot.get_chat_member(chat_id=call.message.chat.id, user_id=call.from_user.id)
if ChatMemberUpdated.new_chat_member in ChatMemberMember.status and user_id in to_id:
await bot.restrict_chat_member(chat_id=call.message.chat.id, user_id=call.from_user.id, permissions=types.ChatPermissions(can_send_messages=True, can_send_media_messages=True, can_send_other_messages=True, can_add_web_page_previews=True, can_send_polls=True, can_pin_messages=True, can_invite_users=True, can_change_info=True, until_date=None))
if db.user_exists(user_id, chat_id):
db.add_to_db(call.from_user.id, chat_id, name, username, new_chat_members)
elif user_id in to_id:
await call.answer(text="Вы пригласили, меньше 40 или ни кого, не пригласили.", show_alert=True)
else:
await call.answer(text="Эта ссылка адресована другому пользователю", show_alert=True)
Источник: Stack Overflow на русском