Форум программистов, компьютерный форум, киберфорум
Python: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 14.11.2022
Сообщений: 11

Странное заполнение в sqllite телеграмм ботом

18.03.2024, 19:23. Показов 730. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такая проблемка , заполняет он как-то криво , как будто на перед , так еще project_type_choice не в какую не хочет вписываться в бд , открывал ее через сервис , и что получается показал на фото , помогите прошу вас , уже голову ломаю , не знаю что не так
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
@bot.callback_query_handler(func=lambda call: cursor.execute("SELECT square FROM users WHERE chat_id = ?", (call.message.chat.id,)).fetchone()[0] == '')
def square(call):
    cursor.execute("UPDATE users SET square = ? WHERE chat_id = ?", (call.data, call.message.chat.id))
    conn.commit()
    bot.send_message(call.message.chat.id, "Введите данные метража в квадратных метрах:")
    cursor.execute("UPDATE users SET area = ? WHERE chat_id = ?", ('', call.message.chat.id))
    conn.commit()
 
@bot.message_handler(func=lambda message: cursor.execute("SELECT area FROM users WHERE chat_id = ?", (message.chat.id,)).fetchone()[0] == '')
def area(message):
    cursor.execute("UPDATE users SET area = ? WHERE chat_id = ?", (message.text, message.chat.id))
    conn.commit()
    bot.send_message(message.chat.id, "Давайте вместе определим стиль интерьера", reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton("Далее", callback_data='end')]]))
    cursor.execute("UPDATE users SET style = ? WHERE chat_id = ?", ('', message.chat.id))
    conn.commit()
    
@bot.callback_query_handler(func=lambda call: cursor.execute("SELECT style FROM users WHERE chat_id = ?", (call.message.chat.id,)).fetchone()[0] == '')
def style(call):
    cursor.execute("UPDATE users SET style = ? WHERE chat_id = ?", (call.data, call.message.chat.id))
    conn.commit()
    bot.answer_callback_query(call.id)
    bot.send_message(call.message.chat.id,
                     "Колористика. Мы рекомендуем природные оттенки и нейтральную цветовую гамму, чтобы интерьер "
                     "не надоел и не вышел из моды. А какие цветовые сочетания нравятся вам?")
    media = [telebot.types.InputMediaPhoto(open(path, "rb")) for path in IMAGE_PATHS]
    bot.send_media_group(call.message.chat.id, media=media)
    keyboard = InlineKeyboardMarkup()
    keyboard.row(InlineKeyboardButton("ЯРКИЕ ОТТЕНКИ", callback_data='Яркие'),
                 InlineKeyboardButton("ПАСТЕЛЬНЫЕ ЦВЕТНЫЕ ОТТЕНКИ", callback_data='Пастельные'))
    keyboard.row(InlineKeyboardButton("НЕЙТРАЛЬНЫЕ ОТТЕНКИ (Белый, бежевый, серый)", callback_data='Нейтральные'),
                 InlineKeyboardButton("ТЕМНЫЕ ОТТЕНКИ", callback_data='Темные'))
    bot.send_message(call.message.chat.id, "Выберите один из вариантов:", reply_markup=keyboard)
    cursor.execute("UPDATE users SET condition = ? WHERE chat_id = ?", ('COLORS', call.message.chat.id))
    conn.commit()
 
@bot.callback_query_handler(func=lambda call: cursor.execute("SELECT condition FROM users WHERE chat_id = ?", (call.message.chat.id,)).fetchone()[0] == 'COLORS')
def colors(call):
    cursor.execute("UPDATE users SET colors = ? WHERE chat_id = ?", (call.data, call.message.chat.id))
    conn.commit()
    bot.answer_callback_query(call.id)
    bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                          text="Стиль, который вам откликается больше других?")
    media_group_1 = [telebot.types.InputMediaPhoto(open(path, "rb")) for path in IMAGE_PATHS_2]
    bot.send_media_group(call.message.chat.id, media=media_group_1)
    media_group_2 = [telebot.types.InputMediaPhoto(open(path, "rb")) for path in IMAGE_PATHS_3]
    bot.send_media_group(call.message.chat.id, media=media_group_2)
    keyboard = InlineKeyboardMarkup()
    keyboard.row(InlineKeyboardButton("КЛАССИКА", callback_data='Классика'),
                 InlineKeyboardButton("МУЖСКОЙ", callback_data='Мужской'))
    keyboard.row(InlineKeyboardButton("СОВРЕМЕННЫЙ", callback_data='Современный'),
                 InlineKeyboardButton("СКАНДИНАВСКИЙ/КОНТЕМПОРАРИ", callback_data='Скандинавский/Контемпорари'))
    keyboard.row(InlineKeyboardButton("ЛОФТ", callback_data='Лофт'),
                 InlineKeyboardButton("МИНИМАЛИЗМ", callback_data='Минимализм'))
    keyboard.row(InlineKeyboardButton("НЕОКЛАССИКА", callback_data='Неоклассика'),
                 InlineKeyboardButton("ЭКЛЕКТИКА", callback_data='Эклектика'))
    bot.send_message(call.message.chat.id, "Выберите один из предложенных стилей:", reply_markup=keyboard)
    cursor.execute("UPDATE users SET condition = ? WHERE chat_id = ?", ('INTERIOR_STYLE', call.message.chat.id))
    conn.commit()
 
 
@bot.callback_query_handler(func=lambda call: cursor.execute("SELECT condition FROM users WHERE chat_id = ?", (call.message.chat.id,)).fetchone()[0] == 'INTERIOR_STYLE')
def interior_style(call):
    cursor.execute("UPDATE users SET interior_style = ? WHERE chat_id = ?", (call.data, call.message.chat.id))
    conn.commit()
    keyboard = InlineKeyboardMarkup()
    keyboard.row(InlineKeyboardButton("БЕЗ ОТДЕЛКИ", callback_data='Без_отделки'),
                 InlineKeyboardButton("ОТДЕЛКА WHITE BOX", callback_data='white_box'))
    keyboard.row(InlineKeyboardButton("ВТОРИЧНОЕ ЖИЛЬЕ", callback_data='Вторичное_жилье'),
                 InlineKeyboardButton("ГОТОВАЯ ОТДЕЛКА ОТ ЗАСТРОЙЩИКА", callback_data='Готовая_отделка'))
    bot.send_message(call.message.chat.id, "Укажите текущий статус отделки", reply_markup=keyboard)
    cursor.execute("UPDATE users SET condition = ? WHERE chat_id = ?", ('PROJECT_TYPE_CHOICE', call.message.chat.id))
    conn.commit()
 
@bot.callback_query_handler(func=lambda call: cursor.execute("SELECT condition FROM users WHERE chat_id = ?", (call.message.chat.id,)).fetchone()[0] == 'PROJECT_TYPE_CHOICE')
def project_type_choice(call):
    cursor.execute("UPDATE users SET doproj = ? WHERE chat_id = ?", (call.data, call.message.chat.id))
    conn.commit()
    bot.answer_callback_query(call.id)
    media_group_1 = [telebot.types.InputMediaPhoto(open(path, "rb")) for path in IMAGE_PATHS_4]
    bot.send_media_group(call.message.chat.id, media=media_group_1)
    keyboard = InlineKeyboardMarkup()
    keyboard.row(InlineKeyboardButton("ПЛАНИРОВКА", callback_data='Планировка'),
                 InlineKeyboardButton("ПЛАНИРОВКА + ЧЕРТЕЖИ", callback_data='Планировка_чертежи'))
    keyboard.row(InlineKeyboardButton("ПЛАНИРОВКА + ВИЗУАЛИЗАЦИЯ", callback_data='Планировка_визуализация'),
                 InlineKeyboardButton("ПОД КЛЮЧ (ПЛАНИРОВКА, ЧЕРТЕЖИ, ВИЗУАЛИЗАЦИЯ)", callback_data='Под_ключ'))
    keyboard.row(InlineKeyboardButton("ЗАТРУДНЯЮСЬ ОТВЕТИТЬ", callback_data='Затрудняюсь_ответить'))
    bot.send_message(call.message.chat.id, "Какой тип проекта вы бы предпочли?", reply_markup=keyboard)
    cursor.execute("UPDATE users SET condition = ? WHERE chat_id = ?", ('TEL', call.message.chat.id))
    conn.commit()
 
@bot.callback_query_handler(func=lambda call: cursor.execute("SELECT condition FROM users WHERE chat_id = ?", (call.message.chat.id,)).fetchone()[0] == 'TEL')
def tel(call):
    phone_number = call.data 
    cursor.execute("UPDATE users SET dop = ? WHERE chat_id = ?", (phone_number, call.message.chat.id))
    conn.commit()
    bot.send_message(call.message.chat.id, "Ура, вы ответили на все вопросы и самое время для подарков! Укажите Ваш номер телефона для \n получения бонуса и расчета по вашей заявке и выбирайте подарок далее!")
    cursor.execute("UPDATE users SET condition = ?, dop = ? WHERE chat_id = ?", ('GIFT', '', call.message.chat.id))  # Обновляем состояние и значение dop
    conn.commit()
Миниатюры
Странное заполнение в sqllite телеграмм ботом  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.03.2024, 19:23
Ответы с готовыми решениями:

Как получить id сообщения, отправленного ботом телеграмм?
Подскажите как получить id отправленного сообщения ботом телеграмм, бот пишется на python

Отправка файла телеграмм ботом
Здравствуйте, можете подсказать, как сделать отправку телеграмм ботом архива?

Нужна помощь с телеграмм ботом
Доброго времени суток, столкнулся с такой проблемой. Нужно создать телеграмм бота который будет каждый день утром и вечером в нужное мне...

6
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
19.03.2024, 14:22
Цитата Сообщение от Summew Посмотреть сообщение
еще project_type_choice не в какую не хочет вписываться в б
И действительно, к чему бы… (ни в одном из sql-запросов не участвует это поле)

Добавлено через 11 минут
Долго гадал зачем вам func=lambda , потом понял что это такой "роутинг".

Телеграм ботов ни разу не писал и не пользовался, то сделал бы так:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@bot.callback_query_handler
def handler(call):
    chat_id = call.message.chat.id
    date = call.data
    condition = cursor.execute('SELECT condition FROM users WHERE chat_id = ?', (chat_id,)).fetchone()[0]
    # в condition я хранил бы шаги: 10, 20, 30…
    {
        'square': set_square,
        'area': set_area,
    }[condition](chat_id, data)
    conn.commit()
 
 
def set_square(chat_id: int, data):
    cursor.execute('UPDATE users SET square = ? WHERE chat_id = ?', (data, chat_id))
    bot.send_message(
        chat_id,
        'Введите данные метража в квадратных метрах:'
    )
 
 
def set_area(chat_id: int, data):
    cursor.execute("UPDATE users SET area = ? WHERE chat_id = ?", (data, chat_id))
    bot.send_message(
        chat_id,
        'Давайте вместе определим стиль интерьера',
        reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton('Далее', callback_data='end')]])
    )
1
0 / 0 / 0
Регистрация: 14.11.2022
Сообщений: 11
19.03.2024, 14:54  [ТС]
Python
1
cursor.execute("UPDATE users SET doproj = ? WHERE chat_id = ?", (call.data, call.message.chat.id))
запрос есть , просто я создавал еще одно поле , чтоб проверить как оно будет вписывать , и в итоге все равно оно не вписывается
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
19.03.2024, 14:56
А надо так:
SQL
1
UPDATE users SET project_type_choice = ? WHERE chat_id = ?
0
0 / 0 / 0
Регистрация: 14.11.2022
Сообщений: 11
19.03.2024, 14:59  [ТС]
я понимаю , изначально оно так и было , но оно не хочет записываться в это поле не в какую , да и в другие тоже хах..

сейчас переписываю весь код на стейты , и проблема пока что остается
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@bot.callback_query_handler(func=lambda call: user_states.get(call.message.chat.id) == States.PROJECT_TYPE_CHOICE)
def project_type_choice(call):
    user_states[call.message.chat.id] = States.TEL
    cursor.execute("UPDATE users SET project_type_choice = ? WHERE chat_id = ?", (call.data, call.message.chat.id))
    conn.commit()  
    bot.answer_callback_query(call.id)
    media_group_1 = [telebot.types.InputMediaPhoto(open(path, "rb")) for path in IMAGE_PATHS_4]
    bot.send_media_group(call.message.chat.id, media=media_group_1)
    keyboard = InlineKeyboardMarkup()
    keyboard.row(InlineKeyboardButton("ПЛАНИРОВКА", callback_data='Планировка'),
                 InlineKeyboardButton("ПЛАНИРОВКА + ЧЕРТЕЖИ", callback_data='Планировка_чертежи'))
    keyboard.row(InlineKeyboardButton("ПЛАНИРОВКА + ВИЗУАЛИЗАЦИЯ", callback_data='Планировка_визуализация'),
                 InlineKeyboardButton("ПОД КЛЮЧ (ПЛАНИРОВКА, ЧЕРТЕЖИ, ВИЗУАЛИЗАЦИЯ)", callback_data='Под_ключ'))
    keyboard.row(InlineKeyboardButton("ЗАТРУДНЯЮСЬ ОТВЕТИТЬ", callback_data='Затрудняюсь_ответить'))
    bot.send_message(call.message.chat.id, "Какой тип проекта вы бы предпочли?", reply_markup=keyboard)
    cursor.execute("UPDATE users SET condition = ? WHERE chat_id = ?", ('TEL', call.message.chat.id))
    conn.commit()
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
19.03.2024, 14:59
Я не вижу проблем в коде. Дошёлкайте бота, чтобы он выполнил
Python
1
cursor.execute("UPDATE users SET condition = ? WHERE chat_id = ?", ('PROJECT_TYPE_CHOICE', call.message.chat.id))
А потом посмотрите в БД, что поле condition содержит нужные данные.

Скорее всего тупо функция def project_type_choice(call): не вызывается и управлние уходит в по другому пути.
0
0 / 0 / 0
Регистрация: 14.11.2022
Сообщений: 11
19.03.2024, 15:09  [ТС]
отлично , оно записывает теперь как до , но в поле tel ахах , а сам телефон не записывается вообще никуда , я не понимаю , почти в запросе я пишу туда вставить , а он вставляет на поле вперед , ну короче теперь телефон не вводиться в бд , и главный вопрос , почему когда я в телефоне пишу текст , он не переходит к подарку (если можете , объясните пожалуйста почему так зависает типо , дохожу до момента с телефоном , пишу его , и ничего , но стоит нажать наверху где-то кнопку и все проходит дальше)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@bot.callback_query_handler(func=lambda call: user_states.get(call.message.chat.id) == States.PROJECT_TYPE_CHOICE)
def project_type_choice(call):
        user_states[call.message.chat.id] = States.TEL
        cursor.execute("UPDATE users SET project_type_choice = ? WHERE chat_id = ?", (call.data, call.message.chat.id))
        conn.commit()  
        bot.answer_callback_query(call.id)
        media_group_1 = [telebot.types.InputMediaPhoto(open(path, "rb")) for path in IMAGE_PATHS_4]
        bot.send_media_group(call.message.chat.id, media=media_group_1)
        keyboard = InlineKeyboardMarkup()
        keyboard.row(InlineKeyboardButton("ПЛАНИРОВКА", callback_data='Планировка'),
                     InlineKeyboardButton("ПЛАНИРОВКА + ЧЕРТЕЖИ", callback_data='Планировка_чертежи'))
        keyboard.row(InlineKeyboardButton("ПЛАНИРОВКА + ВИЗУАЛИЗАЦИЯ", callback_data='Планировка_визуализация'),
                     InlineKeyboardButton("ПОД КЛЮЧ (ПЛАНИРОВКА, ЧЕРТЕЖИ, ВИЗУАЛИЗАЦИЯ)", callback_data='Под_ключ'))
        keyboard.row(InlineKeyboardButton("ЗАТРУДНЯЮСЬ ОТВЕТИТЬ", callback_data='Затрудняюсь_ответить'))
        bot.send_message(call.message.chat.id, "Какой тип проекта вы бы предпочли?", reply_markup=keyboard)
        cursor.execute("UPDATE users SET condition = ? WHERE chat_id = ?", ('TEL', call.message.chat.id))
        conn.commit()
 
@bot.callback_query_handler(func=lambda call: user_states.get(call.message.chat.id) == States.TEL)
def tel(call):
    phone_number = call.data 
    cursor.execute("UPDATE users SET tel = ? WHERE chat_id = ?", (phone_number, call.message.chat.id))
    conn.commit()
    bot.send_message(call.message.chat.id, "Ура, вы ответили на все вопросы и самое время для подарков! Укажите Ваш номер телефона для \n получения бонуса и расчета по вашей заявке и выбирайте подарок далее!")
    user_states[call.message.chat.id] = States.GIFT  # Устанавливаем состояние на GIFT
    cursor.execute("UPDATE users SET condition = ? WHERE chat_id = ?", ('GIFT', call.message.chat.id))  # Обновляем состояние
    conn.commit()
 
@bot.callback_query_handler(func=lambda call: user_states.get(call.message.chat.id) == States.GIFT)
def gift(call):
    cursor.execute("UPDATE users SET gift = ? WHERE chat_id = ?", (call.data, call.message.chat.id))
    conn.commit()
    bot.answer_callback_query(call.id)
    keyboard = InlineKeyboardMarkup()
    keyboard.row(InlineKeyboardButton("СПЕЦ.ЦЕНА НА РЕМОНТНЫЕ РАБОТЫ", callback_data='Спец_цена'),
                 InlineKeyboardButton("ПРОВЕДЕНИЕ ОБМЕРОВ БЕСПЛАТНО", callback_data='Проведение_обмеров'))
    keyboard.row(InlineKeyboardButton("ПРОМОКОДЫ НА ПОКУПКУ МЕБЕЛИ, МАТЕРИАЛОВ, ОСВЕЩЕНИЯ С ДИЗАЙНЕРСКОЙ СКИДКОЙ", callback_data='Промокоды'))
    bot.send_message(call.message.chat.id, "Выберите подарок, который хотели бы получить:", reply_markup=keyboard)
    user_states[call.message.chat.id] = States.END
    cursor.execute("UPDATE users SET condition = ? WHERE chat_id = ?", ('END', call.message.chat.id))
    conn.commit()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.03.2024, 15:09
Помогаю со студенческими работами здесь

Странное заполнение массива
Подскажите, есть код let result = ; for(i=1; i<=5;i++){ result.push(result+'x');} как-то странно заполняется массив, почему...

Странное заполнение списка
Здравствуйте. Написал я вот такой код, он создает массив строк и список, который эти массивы строк будет содержать. SQL запросом получаю...

Странное создание/заполнение матрицы
Здравствуйте, появилась задача создать матрицу n*n, заполнить нолями и по диагонали номера строк, и непонятное поведение в matrix2,...

Sqllite
Подскажите,не происходит удаление в qdatatable qt3 пишет qdatatable: deletecurrent no primary index, может кто сталкивался. Добавлено...

C#+SqlLite
Требуется написать программу на C# с применением базы данных, желательно СклЛайт, но можно и с другой. Базы данных содержит две таблицы - в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru