@StArt1810

Как сделать обновляемый секундомер в телеграм-боте?

Я задался вопросом создания бота-секундомера в Телеграме с помощью 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)
  • Вопрос задан
  • 692 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы