Как сделать чтобы бот не становился в статус ожидания при начале функции bot.delete_message

import time
import telebot

d_time = 60
    
def delete_message(chat_id, message_id):
        time.sleep(d_time)
        bot.delete_message(chat_id, message_id)
@bot.message_handler(commands=['start'])
def online_message(message):
        greeting_message = bot.send_message(message.chat.id, f'start message')
        greeting_message_id = greeting_message1.message_id
        delete_message(message.chat.id, greeting_message_id)

При отправке сообщения /start бот отправляет ответное сообщение, после отправки следующих перестает отвечать, когда выходит время delete_message и удаляется сообщение бот снова отвечает, как сделать чтобы он игнорировал этот delete_message но отправлял сообщения и через время удалялись


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

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

У вас используется команда time.sleep(d_time), она блокирует исполнение кода в текущем потоке вообще. То есть, когда код выполняется и доходит до этой команды, он буквально засыпает на время, что вы указали.

Как поставить таймер, не прекращая выполнение кода?

Вариантов масса, самый простой — использовать стандартный питоновский Threading. Самый удобный для ТГ-бота — пойти в сторону асинхронности (и Aiogram).

В любом случае, для начала лучше ознакомится с терминами "потоки python" и "асинхронность python". Так как простого решения в пару строк у вашей задачи нет

→ Ссылка
Автор решения: kretoffer

Как уже описал Dezmonder

У вас используется команда time.sleep(d_time), она блокирует исполнение кода в текущем потоке вообще. То есть, когда код выполняется и доходит до этой команды, он буквально засыпает на время, что вы указали.

Это можно решить с помощью перехода в многопоточность, но к сожалению библиотека telebot не имеет возможности работать с несколькими потоками, для работы в многопоточном режиме вам придется использовать aiogram

→ Ссылка