Как сделать что бы бот в тг раз в n секунд отправлял сообщение? Через TeleBot

Это нужно сделать типа бесконечный цикл и там написать time.sleep(n) и после этого код в цикле писать?

Типа вот код после 30 сек отправляет смс, но мне нужно что б он после одноразового ввода команды, он работал постоянно, а не заново вводить команду

@bot.message_handler(commands="st")
def st(message: types.Message):

    while True:

        time.sleep(30)

        title = str(old_new())

        if title == "new":
            title = str(get_title())
            price = str(get_price())
            photo = get_img()
            link = get_link()
            caption = f"Назва: \n       {title} \nЦіна: \n      {price}\nПосилання: \n      {link}"
            bot.send_photo(message.chat.id, photo, caption)
        else:
            bot.send_message(message.chat.id, "old")

if __name__ == '__main__':
    bot.polling(none_stop=True, interval=0)

Но мне нужно чтобы после ввода команды бот работал постоянно, типа что б уже не нужно было заново вводить команду.

Я думаю это нужно что-то в

if __name__ == '__main__':
    bot.polling(none_stop=True, interval=0)

нужно сменить. Да?


Ответы (1 шт):

Автор решения: Pigeoncatcher

Вот в таком виде должен работать так, как и нужно. Попробуйте его, если не получится напишите что не так

@bot.message_handler(commands="st")
def st(message: types.Message):

    while True:

        title = str(old_new())

        if title == "new":
            title = str(get_title())
            price = str(get_price())
            photo = get_img()
            link = get_link()
            caption = f"Назва: \n       {title} \nЦіна: \n      {price}\nПосилання: \n      {link}"
            bot.send_photo(message.chat.id, photo, caption)
        else:
            bot.send_message(message.chat.id, "old")

        time.sleep(30)

if __name__ == '__main__':
    while True:
        try:
            bot.polling(none_stop=True)
        except Exception as ex:
            print(ex)
→ Ссылка