Поместите код в тело вопроса. Оберните код тегом code для правильного отображения. Длинный код спрячьте под спойлер.
Поясните, чего конкретно ожидаете от кода и что получаете.
Код надо обернуть тегом code для правильного отображения.
Вопрос надо формулировать как в русском, а не как попало. Иначе ответ «да, запуск postgresql в docker» будет вполне ответом.
Что касается первого вопроса - мне кажется, не надо разбивать его на хендлеры по вопросам/ответам.
Если ответов будет 100 или 200, делать под каждый чих отдельную функцию - не правильно.
По-хорошему, у тебя должно быть три-четыре типичных варианта, типа «управление» (старт/стоп/что там ещё), «настройки» (бот выясняет, что и как хочет пользователь), «основная функция» (что там у тебя - обучение языку?), «прочее» - болтовня какая-либо. Ну ещё можно вопросы оплаты отдельно вынести.
А внутри каждого типа должно быть одно единственное - связь с базой данных, только в каждом случае с разными специфическими полями или таблицами. Для управления - состояния для каждого пользователя; для настроек - фио, сложность, особенности интерфейса… и т.п.
Код в вопросе надо оборачивать тегом code для правильного отображения. Кроме того, заголовок вопроса надо формулировать как в русском. А то ответ на твой вопрос - «Да, не работает».
Тут так не принято. Код (конкретный важный фрагмент кода) надо приводить в теле вопроса (обрамлять тегом code). И объяснять, чего ожидал от этого кода и что не получается.
Разбираться в грудах чужого кода - ну, может, и найдутся любители, но вероятность получить ответ оперативно довольно мала.
К тому же, нарушен целый ряд правил публикации вопросов, и в таком виде вопрос может быть модераторами удален.
Рекомендую доработать вопрос в соответствии с правилами. Практически весь 3 параграф, да и п.5.12 тоже.
Рекомендую более развёрнуто задать вопрос. Чем не устраивает приведённый код, что от него ожидается и что получается?
Краткость - сестра таланта; однако, не талант.
Рекомендую, во-первых, показать свою попытку решить задачу, пусть неудачную. Покажите код, как запускали, что ожидали увидеть и что получилось.
Код оберните тегом code.
Кроме того, рекомендую вопрос переформулировать «по шагам» - а то вообще не понятно, кто на ком стоял…
Во-первых, в качестве параметра должен быть или tuple, или dict.
Судя по записи (f'{id}') вы хотели tuple, но тогда надо так: (f'{id}',)
Кортежи обязательно с запятой, даже если там вроде как один элемент.
Во-вторых, cur.execute должен вроде как итератор создать, нет? Соответственно, по нему надо пройтись циклом или что-нибудь в этом роде…
Правила