Как сделать чтобы бот не становился в статус ожидания при начале функции 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 шт):
У вас используется команда time.sleep(d_time)
, она блокирует исполнение кода в текущем потоке вообще. То есть, когда код выполняется и доходит до этой команды, он буквально засыпает на время, что вы указали.
Как поставить таймер, не прекращая выполнение кода?
Вариантов масса, самый простой — использовать стандартный питоновский Threading. Самый удобный для ТГ-бота — пойти в сторону асинхронности (и Aiogram).
В любом случае, для начала лучше ознакомится с терминами "потоки python" и "асинхронность python". Так как простого решения в пару строк у вашей задачи нет
Как уже описал Dezmonder
У вас используется команда time.sleep(d_time), она блокирует исполнение кода в текущем потоке вообще. То есть, когда код выполняется и доходит до этой команды, он буквально засыпает на время, что вы указали.
Это можно решить с помощью перехода в многопоточность, но к сожалению библиотека telebot не имеет возможности работать с несколькими потоками, для работы в многопоточном режиме вам придется использовать aiogram