Я задался вопросом создания бота-секундомера в Телеграме с помощью Telebot. Подход простой: бот выводит сообщение, о приветствии, затем запускает секундомер в сообщении, и каждые пять секунд редактирует сообщение, показывая разницу между текущим временем и временем старта. Однако, когда я останавливаю секундомер, он не останавливается. Код выполняется дальше и возникает бесконечный цикл. Как решить эту проблему?
Сам код:
import telebot
import random
import time
from telebot import types
from time import gmtime, strftime
user_dict = {}
class User():
def __init__(self, name):
self.name = name
self.train_active = False
self.time_start = None
self.time_finish = None
self.current_time = None
bot = telebot.TeleBot('TOKEN')
@bot.message_handler(commands=['start'])
def welcome(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("Старт")
item2 = types.KeyboardButton("Стоп")
markup.add(item1)
markup.add(item2)
msg = bot.send_message(message.chat.id, "Добро пожаловать, {0.first_name}!\nЯ - <b>{1.first_name}</b>, бот секундомер.".format(message.from_user, bot.get_me()),parse_mode='html', reply_markup=markup)
bot.register_next_step_handler(msg, start_train)
def start_time(message):
name = message.chat.id
user = User(name)
user_dict[message.chat.id] = user
user.time_start = time.time()
if message.text == 'Старт':
#user.train_active = flag
bot.send_message(message.chat.id, 'Время пошло!')
msg = bot.send_message(message.chat.id, f'Время: {0}')
while message.text == 'Старт':
bot.edit_message_text(chat_id = message.chat.id, message_id = msg.message_id,text = f'Время: {time.time() - user.time_start}')
time.sleep(5)
bot.register_next_step_handler(bot.send_message(message.chat.id, 'Конец'), start_train)
bot.polling(none_stop=True)