# Обработчик всех остальных сообщений
@bot.message_handler(func=lambda message: True)
def handle_message(message):
# Проверка, есть ли у пользователя текущее напоминание
cursor.execute("SELECT * FROM reminders WHERE user_id=? AND reminder_date IS NULL", (message.from_user.id,))
reminder = cursor.fetchone()
if reminder is None:
# Если у пользователя нет текущего напоминания, просим его ввести дату/время
bot.send_message(message.chat.id, "Когда тебе нужно напомнить?")
bot.register_next_step_handler(message, handle_date)
else:
# Если у пользователя уже есть дата/время, сохраняем текст напоминания
cursor.execute("UPDATE reminders SET reminder_text=? WHERE id=?", (message.text, reminder[0]))
conn.commit()
# Отправляем сообщение с датой/временем и текстом напоминания
keyboard = types.InlineKeyboardMarkup()
keyboard.row(
types.InlineKeyboardButton("Да, верно", callback_data="confirm"),
types.InlineKeyboardButton("Нет, редактировать дату/время", callback_data="edit_date"),
types.InlineKeyboardButton("Нет, редактировать сообщение", callback_data="edit_message")
)
bot.send_message(message.chat.id, f"Ты хочешь, чтобы я напомнил тебе:\n\n{reminder[4]}\n\n{reminder[3]}",
reply_markup=keyboard)
Где то здесь есть ошибка, когда дело доходит до спроса текста и даты/время после ввода он меня начинает бесконечно одно и тоже спрашивать. а именно когда тебе надо напомнить и текст напоминания, помогите пожалуйста ?
Python
Что делать если не работает программа на питоне с базой данных
# Обработчик всех остальных сообщений
@bot.message_handler(func=lambda message: True)
def handle_message(message):
# Проверка, есть ли у пользователя текущее напоминание
cursor.execute("SELECT * FROM reminders WHERE user_id=? AND reminder_date IS NULL", (message.from_ user.id ,))
reminder = cursor.fetchone()
if reminder is None:
# Если у пользователя нет текущего напоминания, просим его ввести дату/время
bot.send_message(message.chat.id, "Когда тебе нужно напомнить?")
bot.register_next_step_handler(message, handle_date)
else:
# Если у пользователя уже есть дата/время, сохраняем текст напоминания
cursor.execute("UPDATE reminders SET reminder_text=? WHERE id=?", (message.text, reminder[0]))
conn.commit()
# Отправляем сообщение с датой/временем и текстом напоминания
keyboard = types.InlineKeyboardMarkup()
keyboard.row(
types.InlineKeyboardButton("Да, верно", callback_data="confirm"),
types.InlineKeyboardButton("Нет, редактировать дату/время", callback_data="edit_date"),
types.InlineKeyboardButton("Нет, редактировать сообщение", callback_data="edit_message")
)
bot.send_message(message.chat.id, f"Ты хочешь, чтобы я напомнил тебе:\n\n{reminder[4]}\n\n{reminder[3]}",
reply_markup=keyboard)
# Обработчик для получения даты/времени
def handle_date(message):
# Здесь вы можете добавить логику для обработки введенной даты/времени
pass
@bot.message_handler(func=lambda message: True)
def handle_message(message):
# Проверка, есть ли у пользователя текущее напоминание
cursor.execute("SELECT * FROM reminders WHERE user_id=? AND reminder_date IS NULL", (message.from_ user.id ,))
reminder = cursor.fetchone()
if reminder is None:
# Если у пользователя нет текущего напоминания, просим его ввести дату/время
bot.send_message(message.chat.id, "Когда тебе нужно напомнить?")
bot.register_next_step_handler(message, handle_date)
else:
# Если у пользователя уже есть дата/время, сохраняем текст напоминания
cursor.execute("UPDATE reminders SET reminder_text=? WHERE id=?", (message.text, reminder[0]))
conn.commit()
# Отправляем сообщение с датой/временем и текстом напоминания
keyboard = types.InlineKeyboardMarkup()
keyboard.row(
types.InlineKeyboardButton("Да, верно", callback_data="confirm"),
types.InlineKeyboardButton("Нет, редактировать дату/время", callback_data="edit_date"),
types.InlineKeyboardButton("Нет, редактировать сообщение", callback_data="edit_message")
)
bot.send_message(message.chat.id, f"Ты хочешь, чтобы я напомнил тебе:\n\n{reminder[4]}\n\n{reminder[3]}",
reply_markup=keyboard)
# Обработчик для получения даты/времени
def handle_date(message):
# Здесь вы можете добавить логику для обработки введенной даты/времени
pass
Не вижу нигде никакого добавления в бд. Только обновление существующих ячеек
Sergey Pospelov
А как это можно сделать?
Akjol Abdikadir
Он именно просто так начинает по кругу спрашивать, или пишет, что неправильный формат даты?
Akjol Abdikadir
Проверь, что бот на свои же сообщения не реагирует случайно
не могу увидеть всю структуру вашего кода и не знаю, какие переменные у вас определены ранее
думаю, ошибка мб разная.
исходя из фрагментов кода, я заметил несколько вещей:
внимательно просмотрите свой код и прежде всего проверьте основные проблемы
думаю, ошибка мб разная.
исходя из фрагментов кода, я заметил несколько вещей:
- у вас используется база данных, но вы не показали код связанный с созданием подключения и курсора. убедитесь, что вы правильно подключили базу данных и создали курсор для выполнения запросов.
- ваш обработчик сообщений вызывает функцию `handle_date`, когда пользователь вводит дату/время. вы не предоставили эту функцию в предоставленном коде. убедитесь, что у вас есть отдельная функция для обработки ввода даты/времени пользователя.
- используете `bot.register_next_step_handler(message, handle_date)` для регистрации следующего обработчика. убедитесь что правильно реализовали функцию `handle_date` и что она завершает свою работу (не выходит из цикла ожидания новых сообщений), чтобы не вызывать повторный вызов того же обработчика.
- условие `func=lambda message: True` в обработчике сообщений. это условие означает, что обработчик будет вызываться для всех сообщений, включая ответы пользователя. можете добавить дополнительные условия, чтобы указать, в какой ситуации вызывать обработчик для сообщений.
внимательно просмотрите свой код и прежде всего проверьте основные проблемы
Den Рыбаков
https://qna.habr.com/q/1290652 Здесь полный ко посмотрите пожалуйста(
Похожие вопросы
- Запуск программы через питон
- Помогите программу на Питоне правильно составить.
- Не работает бот на питоне
- Программа на ПИТОНе нужна
- Программа на питоне
- Напишите пж программу на Питоне
- Напиши программу по питону
- ЛЮДИ ПОМОГИТЕ У МЕНЯ ЭТОТ КОД НЕ РАБОТАЕТ НУЖНА ПОМОЩЬ ПИТОН ЗАВТРА СДАТЬ НАДО
- Напишите программу на питоне
- Написать программы на питоне
Я использую SqLiteStudio, у меня юзер айди и т.д в SqLiteStudio не отображается во вкладке данные