Как Снять ограничения, если пользователь пригласил контакты?

Подскажите пожалуйста, А можно ли, по кнопке, сделать проверку приглашения контактов, например, если пользователь, пригласил минимум 10 контактов, в группу телеграм, стена откроется и сможет разместить одну публикация?

Как переделать, мой код, мне недавно, помогли, на этом сайте, но для проверки бот или нет, как его улучшить?

#База Данных
conn = sqlite3.connect("misqlite.db")
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS USERS
        (id INTEGER PRIMARY KEY NOT NULL, user_id INTEGER, username TEXT, name TEXT, last_name TEXT, chat_id INTEGER)''')
conn.commit()
#conn.close()

class SQLither:

    def __init__(self, database) -> object:
        self.conn = sqlite3.connect(database)
        self.c = self.conn.cursor()


    def exists_user_chat(self, user_id, chat_id):
        """Проверка существования пользователя в БД и в группе"""
        #return bool(self.c.execute("SELECT * FROM users WHERE user_id=?", (user_id,)).fetchone())
        return bool(self.c.execute("SELECT * FROM users WHERE user_id=? and chat_id=?", (user_id, chat_id,)).fetchone())

    def add_to_db(self, user_id, username, name, last_name, chat_id):
        """Добавление пользователя в БД"""
        #self.c.execute("INSERT INTO users ('user_id') VALUES(?)", (user_id,)) and self.c.execute("INSERT INTO users ('username') VALUES(?)", (username,))
        self.c.execute("INSERT INTO users(user_id, username, name, last_name, chat_id) VALUES(?,?,?,?,?)", (user_id, username, name, last_name, chat_id))
        self.conn.commit()

db = SQLither("misqlite.db")

@dp.message_handler(content_types=['text'])
async def handler_text(message: types.Message):
    member = await bot.get_chat_member(message.chat.id, message.from_user.id)

    user_id = message.from_user.id
    username = message.from_user.username
    last_name = message.from_user.last_name
    name = message.from_user.full_name
    chat_id = message.chat.id

    if not db.exists_user_chat(user_id, chat_id):
            keyboard = types.InlineKeyboardMarkup(row_width=1)
            checkYes = types.InlineKeyboardButton(text='Я не робот!', callback_data=f'captcha:{user_id}')
            keyboard.add(checkYes)
            msg = await bot.send_message(message.chat.id, f"нажми кнопку.".format(message.from_user), parse_mode='html', disable_notification=True, disable_web_page_preview=True, reply_markup = keyboard)
            asyncio.create_task(delete_message(msg, 180))
            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, disable_notification=True, can_invite_users=True))
            await message.delete()
            db.add_to_db(message.from_user.id, username, name, last_name, message.chat.id)
            return


@dp.callback_query_handler(text_startswith='captcha')
async def captcha(call: types.CallbackQuery):
    user_id = str(call.from_user.id)
    to_id = call.data.split(':')[1]

    username = call.from_user.username
    last_name = call.from_user.last_name
    name = call.from_user.full_name
    chat_id = call.message.chat.id
    
    if not db.exists_user_chat(user_id, chat_id):
        db.add_to_db(call.from_user.id, username, name, last_name, call.message.chat.id)

    member = await bot.get_chat_member(chat_id=call.message.chat.id, user_id=call.from_user.id)
    if user_id in to_id:
        await call.answer(text="Спасибо)", show_alert=True)
        #await call.message.delete()
        await bot.restrict_chat_member(call.message.chat.id, call.from_user.id, 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))
    else:
        await call.answer(text="Не принято", show_alert=True)


Ответы (0 шт):