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

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

18.03.2024, 19:23. Показов 767. Ответов 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
 Аватар для Рыжий Лис
5973 / 3735 / 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
 Аватар для Рыжий Лис
5973 / 3735 / 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
 Аватар для Рыжий Лис
5973 / 3735 / 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
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru