


Ошибка тг бота в питоне
import telebot
import datetime
import threading
# Создаем объект бота и передаем ему токен нашего бота
bot = telebot.TeleBot('мой токен')
# Обработчик команды /start
@bot.message_handler(commands=['start'])
def start_message(message):
# Отправляем сообщение пользователю
bot.send_message(message.chat.id, 'Привет! Я бот-напоминалка. Чтобы создать напоминание, введите /reminder.')
# Обработчик команды /reminder
@bot.message_handler(commands=['reminder'])
def reminder_message(message):
# Запрашиваем у пользователя название напоминания и дату и время напоминания
bot.send_message(message.chat.id, 'Введите название напоминания:')
bot.register_next_step_handler(message, set_reminder_name)
# Функция, которую вызывает обработчик команды /reminder для установки названия напоминания
def set_reminder_name(message):
user_data = {}
user_data[message.chat.id] = {'reminder_name': message.text}
bot.send_message(message.chat.id, 'Введите дату и время, когда вы хотите получить напоминание в формате ГГГГ-ММ-ДД чч:мм:сс.')
bot.register_next_step_handler(message, reminder_set, user_data)
# Функция, которую вызывает обработчик команды /reminder для установки напоминания
def reminder_set(message, user_data):
try:
# Преобразуем введенную пользователем дату и время в формат datetime
reminder_time = datetime.datetime.strptime(message.text, '%Y-%m-%d %H:%M:%S')
now = datetime.datetime.now ()
delta = reminder_time - now
# Если введенная пользователем дата и время уже прошли, выводим сообщение об ошибке
if delta.total _seconds() <= 0:
bot.send_message(message.chat.id, 'Вы ввели прошедшую дату, попробуйте еще раз.')
# Если пользователь ввел корректную дату и время, устанавливаем напоминание и запускаем таймер
else:
reminder_name = user_data[message.chat.id]['reminder_name']
bot.send_message(message.chat.id, 'Напоминание "{}" установлено на {}.'.format(reminder_name, reminder_time))
reminder_timer = threading.Timer( delta.total _seconds(), send_reminder, [message.chat.id, reminder_name])
reminder_timer.start()
# Если пользователь ввел некорректную дату и время, выводим сообщение об ошибке
except ValueError:
bot.send_message(message.chat.id, 'Вы ввели неверный формат даты и времени, попробуйте еще раз.')
# Функция, которая отправляет напоминание пользователю
def send_reminder(chat_id, reminder_name):
bot.send_message(chat_id, 'Время получить ваше напоминание "{}"!'.format(reminder_name))
# Обработчик любого сообщения от пользователя
@bot.message_handler(func=lambda message: True)
def handle_all_message(message):
bot.send_message(message.chat.id, 'Я не понимаю, что вы говорите. Чтобы создать напоминание, введите /reminder.')
# Запускаем бота
if __name__ == '__main__':
bot.polling(none_stop=True)
Traceback (most recent call last):
File "C:/Users/Никитос/AppData/Local/Programs/Python/Python313/tgbot.py", line 59, in <module>
bot.polling(none_stop=True)
import telebot
import datetime
import threading
# Создаем объект бота и передаем ему токен нашего бота
bot = telebot.TeleBot('ваш токен')
# Глобальная переменная для хранения данных пользователей
user_data = {}
# Обработчик команды /start
@bot.message_handler(commands=['start'])
def start_message(message):
# Отправляем сообщение пользователю
bot.send_message(message.chat.id, 'Привет! Я бот-напоминалка. Чтобы создать напоминание, введите /reminder.')
# Обработчик команды /reminder
@bot.message_handler(commands=['reminder'])
def reminder_message(message):
# Запрашиваем у пользователя название напоминания и дату и время напоминания
bot.send_message(message.chat.id, 'Введите название напоминания:')
bot.register_next_step_handler(message, set_reminder_name)
# Функция, которую вызывает обработчик команды /reminder для установки названия напоминания
def set_reminder_name(message):
user_data[message.chat.id] = {'reminder_name': message.text}
bot.send_message(message.chat.id, 'Введите дату и время, когда вы хотите получить напоминание в формате ГГГГ-ММ-ДД чч:мм:сс.')
bot.register_next_step_handler(message, reminder_set)
# Функция, которую вызывает обработчик команды /reminder для установки напоминания
def reminder_set(message):
try:
# Преобразуем введенную пользователем дату и время в формат datetime
reminder_time = datetime.datetime.strptime(message.text, '%Y-%m-%d %H:%M:%S')
now = datetime.datetime.now ()
delta = reminder_time - now
# Если введенная пользователем дата и время уже прошли, выводим сообщение об ошибке
if delta.total _seconds() <= 0:
bot.send_message(message.chat.id, 'Вы ввели прошедшую дату, попробуйте еще раз.')
else:
reminder_name = user_data[message.chat.id]['reminder_name']
bot.send_message(message.chat.id, 'Напоминание "{}" установлено на {}.'.format(reminder_name, reminder_time))
reminder_timer = threading.Timer( delta.total _seconds(), send_reminder, [message.chat.id, reminder_name])
reminder_timer.start()
except ValueError:
bot.send_message(message.chat.id, 'Вы ввели неверный формат даты и времени, попробуйте еще раз.')
# Функция, которая отправляет напоминание пользователю
def send_reminder(chat_id, reminder_name):
bot.send_message(chat_id, 'Время получить ваше напоминание "{}"!'.format(reminder_name))
# Обработчик любого сообщения от пользователя
@bot.message_handler(func=lambda message: True)
def handle_all_message(message):
bot.send_message(message.chat.id, 'Я не понимаю, что вы говорите. Чтобы создать напоминание, введите /reminder.')
# Запускаем бота
if __name__ == '__main__':
bot.polling(none_stop=True)
Ошибки в вашем коде связаны с синтаксисом и отступами. Вот исправленная версия:
python
import telebot
import datetime
import threading
bot = telebot.TeleBot('мой токен')
@bot.message_handler(commands=['start'])
def start_message(message):
bot.send_message(message.chat.id, 'Привет! Я бот-напоминалка. Чтобы создать напоминание, введите /reminder.')
@bot.message_handler(commands=['reminder'])
def reminder_message(message):
bot.send_message(message.chat.id, 'Введите название напоминания:')
bot.register_next_step_handler(message, set_reminder_name)
def set_reminder_name(message):
user_data = {}
user_data[message.chat.id] = {'reminder_name': message.text}
bot.send_message(message.chat.id, 'Введите дату и время в формате ГГГГ-ММ-ДД чч:мм:сс.')
bot.register_next_step_handler(message, reminder_set, user_data)
def reminder_set(message, user_data):
try:
reminder_time = datetime.datetime.strptime(message.text, '%Y-%m-%d %H:%M:%S')
now = datetime.datetime.now ()
delta = reminder_time - now
if delta.total _seconds() <= 0: # Исправлено total_seconds()
bot.send_message(message.chat.id, 'Дата в прошлом, попробуйте снова.')
else:
reminder_name = user_data[message.chat.id]['reminder_name']
bot.send_message(message.chat.id, f'Напоминание "{reminder_name}" установлено на {reminder_time}.')
# Запуск таймера
reminder_timer = threading.Timer(
delta.total _seconds(), # Исправлено total_seconds()
send_reminder,
[message.chat.id, reminder_name]
)
reminder_timer.start()
except ValueError:
bot.send_message(message.chat.id, 'Неверный формат даты, попробуйте снова.')
# Функция должна быть на верхнем уровне (без лишних отступов)
def send_reminder(chat_id, reminder_name):
bot.send_message(chat_id, f'Время получить напоминание "{reminder_name}"!')
@bot.message_handler(func=lambda message: True)
def handle_all_message(message):
bot.send_message(message.chat.id, 'Не понимаю. Для создания напоминания введите /reminder')
if __name__ == '__main__':
bot.polling(none_stop=True)
Основные исправления:
1. Убраны пробелы в `total_seconds()` (было `total _seconds()`)
2. Исправлены отступы у функции `send_reminder` (должна быть на том же уровне, что и другие функции)
3. Добавлен правильный формат строки через f-strings
4. Исправлены пробелы вокруг операторов
Теперь бот должен работать без синтаксических ошибок. Однако учтите, что для работы с threading.Timer в долгоживущих приложениях могут потребоваться дополнительные доработки, а для хранения данных пользователя между шагами лучше использовать глобальный словарь или базу данных.
думаю тебе с этим лучше к нейросети, как раз deepseek вышел, он это легко исправит