Как ограничить доступ к выполнению команд и Reply клавиатуре?

Всех приветствую! Подскажите, как ограничить доступ к выполнению команд и пользовательского ввода с Reply-клавиатуры для user_id, которые отсутствуют в базе данных?

С командами пока не придумал.

Но с обработчиками Reply клавиатуры пробовал так:

def check_id(message):
    id = message.from_user.id
    cursor.execute('SELECT * FROM registration WHERE user_id=?', (id, )).fetchone()

@bot.message_handler(content_types=['text']) 
def statistics_step(message): 
    if message.text.lower() == 'анкета 1' and check_id is None:
        one_anketa_step(message)
    if message.text.lower() == 'анкета 2' and check_id is None:
        two_anketa_step(message)

Мой способ не сработал, бот совсем перестал реагировать на клавиатуру.

P.S. TelegramBotAPI+SQLite+Python


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

Автор решения: dtroyan

Попробуйте так, что-то вроде этого. Кстати в условиях вы тоже вроде ошиблись, если я правильно понял вашу логику:

def check_id(message):
    id = message.from_user.id
    record = cursor.execute('SELECT * FROM registration WHERE user_id=?', (id, )).fetchone()
    if record:
        return True
    else:
        return False

@bot.message_handler(content_types=['text'])
def statistics_step(message):
    if (message.text.lower() == 'анкета 1') and check_id(message):
        one_anketa_step(message)
    if (message.text.lower() == 'анкета 2') and check_id(message):
        two_anketa_step(message)
→ Ссылка