@uncso7

Как написать тг бот-секундомер на питоне?

такой код не работает(

import telebot
import time
bot = telebot.TeleBot('токен')

@bot.message_handler(commands=['start'])

def main(message):
    bot.send_message(message.chat.id, '<em>Hola!)</em>', parse_mode='html')
    markup = types.InlineKeyboardMarkup()
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton("Старт")
    item2 = types.KeyboardButton("Стоп")
    markup.add(item1)
    markup.add(item2)


if msg.text == 'Старт':
    bot.send_message(msg.chat.id, 'Время пошло!')
    import time


    while msg.text == 'Старт':
        sec = 0
        while True:
            print(sec)
            time.sleep(1)
            sec += 1

    bot.register_next_step_handler(bot.send_message(msg.chat.id, 'Конец'), start_train)

    bot.polling(none_stop=True)
  • Вопрос задан
  • 338 просмотров
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
В коде дикая каша - или у тебя отступы уехали чёрт знает куда. Такое не заработает.
Начни с официальных примеров, найди среди них наиболее похожий - скажем, вот этот таймер. Разберись, как он устроен, и потихоньку модифицируй.
Разумеется, предполагается, что ты хотя бы насколько-то знаешь питон. Если это не так - откладываешь бота и учишь язык.
Ответ написан
Комментировать
@SIROJA04
Откуда вообще этот код взят? Бред полный
Во первых, маркапы должны отправлятся как reply_markup=markup в bot.send_message.
Во вторых, вижу хендлер только для команды старт, для текстовых сообщений должен быть отдельный хендлер.
В третьих, секундомер нужно кинуть в Thread иначе while в меин потоке застопорит всего бота
Для этого создаем список потоков, где будем хранить тёпл из айди юзера для навигации по списку и екземляр Thread(target=ФункцияСекундомера args=[если для роботы функции нужны аргументы, вписываем их сюда]).
И потом при обращении юзера делаем нужные проверки, и запускаем поток, если приходит стоп, то также делаем проверки и останавливаем
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы